Skip to content

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

構築編はここまで。次は設定編。