Bacula 構築編¶
2018/3/14¶
自宅のサーバのバックアップにはOSSのBaculaを使用している。
構築編、設定編、操作編、番外編のうち、今回は構築編。
なお、Baculaのバージョンは9に対応している。
(構築時は9.0.3だったが、今は9.0.6で稼働中(2018/3/13現在))
私の考えたバックアップの要件
要件¶
- バックアップ対象サイズ:約1TB
- FullBackup:毎月1回、最初の月曜日
- DifferentialBackup(差分バックアップ):週1回、月曜日(FullBackup時は除く)
- IncrementalBackup(増分バックアップ):毎日(Full,DiffBackup時は除く)
- バックアップ実行時間は4:05とする。
- Backup用Storageのサイズ:3TB
- Backup用Storageは別のサーバからNFSマウントしている
構成¶
- OS: CentOS7
- DB: MariaDB
- Bacula: 9
Baculaは以下の機能を複数台に分散することができるが、今回は1台で構成する。
- bacula-dir:バキュラ全体の管理。バックアップジョブ管理も行う
- bacula-sd:バキュラのバックアップデータ書き込み先のストレージの管理
- bacula-fd:バキュラのバックアップを実際に実行するクライアント
サーバ側の設定¶
rootユーザですすめる。
リポジトリー設定¶
wgetでリポジトリを持ってくる。
cd /etc/yum.repos.d/
wget https://copr.fedorainfracloud.org/coprs/slaanesh/Bacula/repo/epel-7/slaanesh-Bacula-epel-7.repo
インストール¶
yumでまとめてインストール
yum -y install bacula-director bacula-client bacula-storage bacula-console mariadb-server
MariaDBの設定¶
mariadbのサービス起動およびOS起動時に自動起動するように設定
systemctl start mariadb
systemctl enable mariadb
以下、DBを安全にセットアップするコマンド。最初にやっておくことおすすめ。
対話式なので質問文読んでもらったほうがいいが、基本yと入力しておけばOK
rootユーザのパスワードもここで設定する。安全なパスワードを設定すること。
仮にdbpassというのをrootに設定したとして、以下の手順を記す。
(これだと危ないパスワードなのできちんと変えるべし)
mysql_secure_installation
rootでデータベースに接続
mysql -u root -p
Enter password: dbpass # rootのパスワードを入力
bacula用のデータベース作成
MariaDB > create database bacula; # createコマンドを実行
Query OK, 1 row affected (0.00 sec)
作成したデータベースにパスワード設定
仮にrootと同じdbpassとしているが、rootと違うパスワードを設定すべし!
MariaDB > grant all privileges on bacula.* to bacula@localhost identified by 'dbpass';
Query OK, 0 rows affected (0.01 sec)
MariaDB > quit
データベースの初期設定を投入。スクリプトが用意されているのでそれを実行すること
今回はMariaDBなのでmysqlを選択する。
postgresqlも対応しているのでDBそちらにしたい場合はここの実行コマンドを変えること。
/usr/libexec/bacula/make_bacula_tables mysql -u bacula -p
Making mysql tables
Enter password: dbpass
alternatives --config libbaccats.so
1 /usr/lib64/libbaccats-mysql.so を選択
Firewallの設定¶
サーバ側で許可するポートは以下の通り。
9101/tcp: bacula-dir
9102/tcp: bacula-fd
9103/tcp: bacula-sd
firewalldであれば以下のコマンドを実行すれば良い。
firewall-cmd --permanent --add-port=9101/tcp
firewall-cmd --permanent --add-port=9102/tcp
firewall-cmd --permanent --add-port=9103/tcp
firewall-cmd --reload
確認
firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: ssh
ports: 9103/tcp 9101/tcp 9102/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
{1}
portsのところに上記の通り3つ設定されていれば良い。
続いてBaculaの設定を行う。 設定を行う必要があるのは以下
/etc/bacula/bacula-dir.conf
/etc/bacula/bacula-fd.conf
/etc/bacula/bacula-sd.conf
/etc/bacula/bconsole.conf
実行スケジュールやバックアップ先の指定、世代管理等もこちらで設定する。
こちらの設定は長くなるので、設定編で解説したい。
上記ファイルの構文チェックコマンドはこちら
bacula-dir -t -c /etc/bacula/bacula-dir.conf
bacula-fd -t -c /etc/bacula/bacula-fd.conf
bacula-sd -t -c /etc/bacula/bacula-sd.conf
bconsole -t -c /etc/bacula/bconsole.conf
※/sbinに各コマンドは置かれている。
サービスの起動および自動起動設定は以下の通り。
(設定編で設定してから起動したほうが良い)
systemctl start bacula-dir
systemctl start bacula-fd
systemctl start bacula-sd
systemctl enable bacula-dir
systemctl enable bacula-fd
systemctl enable bacula-sd
クライアント側の設定¶
クライアント側は非常に簡単で、bacula-clientだけインストールすれば良い。
rootユーザですすめること。
リポジトリー設定¶
wgetでリポジトリを持ってくる。
cd /etc/yum.repos.d/
wget https://copr.fedorainfracloud.org/coprs/slaanesh/Bacula/repo/epel-7/slaanesh-Bacula-epel-7.repo
インストール¶
yumでインストール
yum -y install bacula-client
Firewallの設定¶
クライアント側で許可するポートは以下の通り。
9102/tcp: bacula-fd
firewalldであれば以下のコマンドを実行すれば良い。
firewall-cmd --permanent --add-port=9102/tcp
firewall-cmd --reload
確認
firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: ssh
ports: 9102/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
portsのところに上記の通り1つ設定されていれば良い。
Bacula clientの設定¶
設定ファイルは以下においてある。
/etc/bacula/bacula-fd.conf
設定内容は以下の通り
# 下記"パスワード"についてはサーバと共通のものを設定すること。
Director {
Name = bacula-dir
Password = "パスワード"
}
Director {
Name = bacula-mon
Password = "パスワード"
Monitor = yes
}
# bacula-fdの設定。こちらで使用するポートを設定するが、基本デフォルトのままでOK
FileDaemon {
Name = bacula-fd
FDport = 9102
WorkingDirectory = /var/spool/bacula
Pid Directory = /var/run
Maximum Concurrent Jobs = 20
Plugin Directory = /usr/lib64/bacula
}
サービスの起動および自動起動設定は以下の通り。
systemctl start bacula-fd
systemctl enable bacula-fd
構築編はここまで。次は設定編。