製品紹介
Bacula(バキュラ)はオープンソースの統合管理バックアップソフトです。
ネットワーク経由でデータのバックアップ・リストアを行えます。
4つの構成要素があり、全要素を単一コンピュータに持たせることもできます。
・bacula-director:ジョブの制御、データベースアクセスの制御
・bacula-client:データアクセスの処理、ファイルデータの読み込みと書き込み、暗号処理と圧縮処理、カタログデータの書き込み
・bacula-storage:バックアップ媒体の処理とバックアップデータの受信
・bacula-console:コンソール機能
バックアップデータは、ディスクへの保存のほか、外部メディア(テープなど)への書き込みもサポートされています。
BaculumというGUIのWebコンソールもオープンソースで提供されています。
公式ホームページ
日本向けコミュニティサイト
検証内容
サーバ3台にdirector、console、client、storageそれぞれの機能をインストール、
バックアップ・リストアができることを確認します。
検証環境
VMWare Workstation 12 Plyaer
仮想サーバ3台
CentOS Linux release 7.2.1511 (Core) minimal install PKG
構成
事前作業
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現在の最新バージョン
ソースからインストールする方法と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)環境構築ページへ