Bacula環境構築

製品紹介

Bacula(バキュラ)はオープンソースの統合管理バックアップソフトです。
ネットワーク経由でデータのバックアップ・リストアを行えます。

4つの構成要素があり、全要素を単一コンピュータに持たせることもできます。
・bacula-director:ジョブの制御、データベースアクセスの制御
・bacula-client:データアクセスの処理、ファイルデータの読み込みと書き込み、暗号処理と圧縮処理、カタログデータの書き込み
・bacula-storage:バックアップ媒体の処理とバックアップデータの受信
・bacula-console:コンソール機能

バックアップデータは、ディスクへの保存のほか、外部メディア(テープなど)への書き込みもサポートされています。
BaculumというGUIのWebコンソールもオープンソースで提供されています。

 

公式ホームページ

http://blog.bacula.org/

日本向けコミュニティサイト

https://www.bacula.jp/

 

検証内容

サーバ3台にdirector、console、client、storageそれぞれの機能をインストール、
バックアップ・リストアができることを確認します。

 

検証環境

VMWare Workstation 12 Plyaer
仮想サーバ3台
CentOS Linux release 7.2.1511 (Core) minimal install PKG

 

構成

components-bacula

事前作業

SELinux一時無効化

# getenforce

Enforcing

# setenforce 0

# getenforce

Permissive

恒久的に無効化する場合は以下を修正して保存します。

~
SELINUX=disabled
~

 

firewalldの停止

# systemctl stop firewalld
# systemctl status firewalld

● firewalld.service
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)

 

導入手順

2016/11/27現在の最新バージョン

new-release

ソースからインストールする方法とyumでインストールする方法があります。
今回は簡単に導入できるyumでインストールを行います。

bacula.jpに掲載されているインストール手順を参照して実施しました。

 

目次

1.Baculaサーバの構築

2.Baculaクライアントの構築

3.Baculaストレージの構築

4.Baculum(Web GUIコンソール)の導入

 


1.Baculaサーバの構築

wgetのインストール

# yum -y install wget

既にインストールされていれば対応不要です。

 

リポジトリの追加

# cd /etc/yum.repos.d/

# wget https://copr.fedorainfracloud.org/coprs/slaanesh/Bacula/repo/epel-7/slaanesh-Bacula-epel-7.repo

最新版をインストールするため、リポジトリを手動で追加します。

 

BaculaとMariaDBのインストール

# yum -y install bacula-director bacula-console mariadb-server

今回はMariaDBを使用しますが、MySQL、SQLite、PostgreSQLも使用できます。

 

baculaとMariaDBのインストール確認

# rpm -qa | grep bacula

bacula-libs-7.4.4-1.el7.centos.x86_64
bacula-common-7.4.4-1.el7.centos.x86_64
bacula-libs-sql-7.4.4-1.el7.centos.x86_64
bacula-console-7.4.4-1.el7.centos.x86_64
bacula-director-7.4.4-1.el7.centos.x86_64

# rpm -qa | grep mariadb

mariadb-5.5.50-1.el7_2.x86_64
mariadb-server-5.5.50-1.el7_2.x86_64
mariadb-libs-5.5.50-1.el7_2.x86_64

 

MariaDBの起動

# systemctl start mariadb
# systemctl status mariadb

● mariadb.service - MariaDB database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
Active: active (running)
~

# systemctl enable mariadb

MariaDBの手動起動と確認、自動起動設定を行います。

 

MariaDBの初期化

# mysql_secure_installation

~
Enter current password for root (enter for none): Enter押下
~
Set root password? [Y/n] y
New password: DB rootパスワード入力
Re-enter new password: DB rootパスワード再入力
~
Remove anonymous users? [Y/n] y
~
Disallow root login remotely? [Y/n] y
~
Remove test database and access to it? [Y/n] y
~
Reload privilege tables now? [Y/n] y
~
Thanks for using MariaDB!

このメッセージが出たら正常終了です。
rootパスワード設定以降の選択肢は環境に合わせて選択してください。

 

DB接続

# mysql -u root -p

Enter password: DB rootパスワード入力

 

DB作成

MariaDB > create database bacula;

Query OK, 1 row affected (0.00 sec)

MariaDB > grant all privileges on bacula.* to bacula@localhost identified by 'p@ssw0rd'; 任意のDBパスワード入力

Query OK, 0 rows affected (0.01 sec)

MariaDB > FLUSH PRIVILEGES;
MariaDB > quit

Bye

baculaというDBを新規作成してアクセス権限とパスワードを設定しました。

 

テーブル作成

# /usr/libexec/bacula/make_bacula_tables mysql -u bacula -p

Making mysql tables
Enter password: p@ssw0rd DBパスワード入力
Creation of Bacula MySQL tables succeeded.

 

DB切り替え
# alternatives --config libbaccats.so

3 プログラムがあり 'libbaccats.so' を提供します。
選択       コマンド
-----------------------------------------------
1           /usr/lib64/libbaccats-mysql.so
2           /usr/lib64/libbaccats-sqlite3.so
*+ 3           /usr/lib64/libbaccats-postgresql.so
Enter を押して現在の選択 [+] を保持するか、選択番号を入力します: 1

 

切り替え確認

# alternatives --config libbaccats.so

3 プログラムがあり 'libbaccats.so' を提供します。
選択       コマンド
-----------------------------------------------
+ 1           /usr/lib64/libbaccats-mysql.so
2           /usr/lib64/libbaccats-sqlite3.so
*  3           /usr/lib64/libbaccats-postgresql.so
Enter を押して現在の選択 [+] を保持するか、選択番号を入力します: (Enter入力)

 

configファイル修正
baculaサーバでの変更対象は下記2つです。
/etc/bacula/bacula-dir.conf
/etc/bacula/bconsole.conf

念のため、オリジナルファイルを退避させてから編集します。
# cp -p /etc/bacula/bacula-dir.conf /etc/bacula/bacula-dir.conf.org

省略表記なしのbacula-dir.confファイルはこちらです。

Director { # Bacula-Director定義
Name = bacula-dir
DIRport = 9101 # 通信ポート指定
QueryFile = "/etc/bacula/query.sql"
WorkingDirectory = "/var/spool/bacula"
PidDirectory = "/var/run"
Maximum Concurrent Jobs = 20
Password = "BaculaPW#1" # 任意のパスワード入力
Messages = Daemon

JobDefs { # デフォルトジョブの定義
Name = "DefaultJob"  個別ジョブはこのジョブ設定に不足・重複箇所を上書きする形で作成する
Type = Backup
Level = Incremental
# Client = bacula-client # ジョブ毎に個別設定するため、コメントアウト
# FileSet = "Full Set"
# Schedule = "WeeklyCycle"
Storage = File1
Messages = Standard
Pool = File
SpoolAttributes = yes
Priority = 10
Write Bootstrap = "/var/spool/bacula/%c.bsr"
}
~
Job { # バックアップジョブ定義
Name = "FullBackup" # 任意のジョブ名を入力
Level = Full
Client= bacula-client # このクライアント定義は後述
FileSet = "Full Set" # このファイルセット内容の定義は後述
Schedule = "WeeklyCycle" # このスケジュール内容の定義は後述
Storage = File1 # このストレージ内容の定義は後述
}
~
Job { #ff0000;"># リストアジョブ定義
Name = "RestoreFiles" # 任意のリストアジョブ名を入力
Type = Restore
Client=bacula-client # 対応するバックアップジョブのクライアント名と同名を指定
FileSet="Full Set" # 対応するバックアップジョブのファイルセットと同名を指定
Storage = File1 # 対応するバックアップジョブのストレージと同名を指定
Where = /tmp/bacula-restores # リストアファイルの保管先パスを指定
}
~
FileSet { # ファイルセット定義
Name = "Full Set"
Include {
Options {
signature = MD5
}
File = /tmp/bktest # バックアップ対象パスを指定
}
Exclude { # バックアップ対象外パスを指定
File = /tmp/bktest/exclude_dir
File = /tmp/bktest/example.log
}
}
~
Client { # クライアント定義
Name = bacula-client # ジョブ定義で設定したクライアントと同名を入力
Address = 192.168.153.129 # クライアントのIP
FDPort = 9102 # 通信ポート
Catalog = MyCatalog # 使用するカタログデータの指定
Password = "BaculaPW#2" # 任意のパスワード入力
File Retention = 60 days # バックアップデータ保持期間を指定
Job Retention = 6 months # カタログデータのジョブ情報保持期間を指定
AutoPrune = yes # ファイル・ジョブ保持期間超過時の自動削除設定
}
~
Storage { # ストレージの定義
Name = File1 # ジョブ定義で設定したストレージと同名を入力
Address = 192.168.153.130 # バックアップ保管先ストレージのIPを記載
SDPort = 9103 # 通信ポート指定
Password = "BaculaPW#3" # 任意のパスワード入力
Device = FileChgr1
Media Type = File1
Maximum Concurrent Jobs = 10 # 最大同時稼動ジョブ数を指定
}
~
Catalog { # カタログ定義
Name = MyCatalog
dbname = "bacula"; dbuser = "bacula"; dbpassword = "p@ssw0rd" # DBパスワード入力
}
~
Console { # コンソール定義
Name = bacula-mon
Password = "BaculaPW#4 # 任意のパスワード入力
CommandACL = status, .status
}

変更が完了したらwqで保存してください。
続いてbconsole.confの変更です。

同様にオリジナルファイルを退避させて、設定を変更します。

# cp -p /etc/bacula/bconsole.conf /etc/bacula/bconsole.conf.org

~ 
Director { Name = bacula-dir DIRport = 9101 # 通信ポート指定
address = localhost 
Password = "BaculaPW#1" # 任意のパスワード入力
}

変更が完了したらwqで保存してください。

 

サービス起動

記載内容に誤りがある場合、サービス起動に失敗します。
事前に確認する場合は以下のコマンドを実行してください。

# /usr/sbin/bacula-dir -t

 

サービス起動コマンド

# systemctl start bacula-dir
# systemctl status bacula-dir

● bacula-dir.service - Bacula-Director, the Backup-server
Loaded: loaded (/usr/lib/systemd/system/bacula-dir.service; enabled; vendor preset: disabled)
Active: active (running)
~

もし正常に起動できなかった場合、以下のような出力になります。
# service bacula-dir status

bacula-dir dead but subsys locked

bacula-dir.confの記述内容のいずれかが不正な可能性が高いため、デバッグコマンドを発行します。
# bacula-dir -c /etc/bacula/bacula-dir.conf -d100
(出力例)

bacula-dir: dird.c:208-0 Debug level = 100
# bacula-dir: address_conf.c:274-0 Initaddr 0.0.0.0:9101
bacula-dir: ERROR TERMINATION at parse_conf.c:489
Config error: Could not find config Resource TestFileSet referenced on line 74 : FileSet = "TestFileSet"

: line 74, col 21 of file /etc/bacula/bacula-dir.conf
FileSet = "TestFileSet"
~

上記例では、/etc/bacula/bacula-dir.confの74行目で指定されているTestFileSetが定義されていないため、
不正となっています。
bacula-dir.conf内に以下の記述が存在するか、記述内容が正しいかを確認してください。

~
FileSet {
Name = "TestFileSet"
(定義内容)
]
~

正常起動できたら、自動起動設定を行います。
# systemctl enable bacula-dir

以上でBaculaサーバの構築は完了です。


2.Baculaクライアントの構築

 

wgetのインストール

# yum -y install wget

既にインストールされていれば対応不要です。

 

リポジトリの追加

# cd /etc/yum.repos.d/

# wget https://copr.fedorainfracloud.org/coprs/slaanesh/Bacula/repo/epel-7/slaanesh-Bacula-epel-7.repo

最新版をインストールするため、リポジトリを手動で追加します。

 

Baculaのインストール

# yum -y install bacula-client

 

Baculaのインストール確認

# rpm -qa |grep bacula

bacula-libs-7.4.4-1.el7.centos.x86_64
bacula-client-7.4.4-1.el7.centos.x86_64
bacula-common-7.4.4-1.el7.centos.x86_64

 

Configファイルの修正

Baculaクライアントでの変更対象は下記1つのみです。

/etc/bacula/bacula-fd.conf

 

# cp -p /etc/bacula/bacula-fd.conf /etc/bacula/bacula-fd.conf.org

~
Director {
Name = bacula-dir
Password = "BaculaPW#2" # 任意のパスワード入力
}
~
Director {
Name = bacula-mon
Password = "BaculaPW#5" # 任意のパスワード入力
Monitor = yes
}
~

変更が完了したらwqで保存してください。

サービス起動
# systemctl start bacula-fd
# systemctl status bacula-fd

● bacula-fd.service - Bacula-FileDaemon, a Backup-client
Loaded: loaded (/usr/lib/systemd/system/bacula-fd.service; enabled; vendor preset: disabled)
Active: active (running)
~

# systemctl enable bacula-fd

サービス手動起動と確認、自動起動設定を行います。

以上でBaculaクライアントの構築は完了です。

※Baculaサーバにも同様にbacula-fdをインストールし、設定してください。
Catalogデータの書き込みに必要です。


3.Baculaストレージの構築

wgetのインストール

# yum -y install wget

既にインストールされていれば対応不要です。

 

リポジトリの追加

# cd /etc/yum.repos.d/

# wget https://copr.fedorainfracloud.org/coprs/slaanesh/Bacula/repo/epel-7/slaanesh-Bacula-epel-7.repo

最新版をインストールするため、リポジトリを手動で追加します。

 

Baculaのインストール

# yum -y install bacula-storage

 

Baculaのインストール確認

# rpm -qa |grep bacula

bacula-libs-7.4.4-1.el7.centos.x86_64
bacula-common-7.4.4-1.el7.centos.x86_64
bacula-libs-sql-7.4.4-1.el7.centos.x86_64
bacula-storage-7.4.4-1.el7.centos.x86_64

 

Configファイルの修正

Baculaクライアントでの変更対象は下記1つのみです。

/etc/bacula/bacula-sd.conf

# cp -p /etc/bacula/bacula-sd.conf /etc/bacula/bacula-sd.conf.org

~
Director {
Name = bacula-dir
Password = "BaculaPW#3" # 任意のパスワード入力
}
#
# Restricted Director, used by tray-monitor to get the
#   status of the storage daemon
#
Director {
Name = bacula-mon
Password = "BaculaPW#6" # 任意のパスワード入力
Monitor = yes
}
~

変更が完了したらwqで保存してください。

サービス起動
# systemctl start bacula-sd
# systemctl status bacula-sd

● bacula-sd.service - Bacula-FileDaemon, a Backup-client
Loaded: loaded (/usr/lib/systemd/system/bacula-fd.service; enabled; vendor preset: disabled)
Active: active (running)
~

# systemctl enable bacula-sd

サービス手動起動と確認、自動起動設定を行います。

以上でBaculaストレージの構築は完了です。
Baculum(GUI)環境構築ページへ

Bacula検証ページへ