[EPA2008b]サーバと予備サーバでのバックアップの設定
[EPAサーバ構築ドキュメント へ戻る]
概要
EPA サーバにはバックアップとサーバ本体のトラブル時に代替するための 予備サーバを立ててある. /home 以下のいくつかの領域に関して, EPA サーバ本体から予備サーバへ定期的にバックアップを取る.
バックアップする領域
バックアップを取る領域は, 原則的にグループで管理する資源や, システムにとって必要な資源である.
2008/08/01 現在, 以下の領域をバックアップの対象とする.
- ahslab aoelab cps epalab itpass pschool gate mosir
バックアップの際の認証方式
バックアップには rsync を用いる. root アカウントでバックアップを行うが, セキュリティを高めるため, その認証には SSH + 公開鍵暗号を用いる.
準備
以降では, 運用中の EPA サーバのホスト名を epa, 予備サーバを epabk と称する. 実際には, 使用するホストの名称に 置き換えて作業を行うこと.
まず, epa, epabk ともに SSH デーモンが立ち上がっている必要があるため, [EPA2008b]sshのインストールと設定 を先に行っておくこと. また, rsync を用いてバックアップを行うため, 以下のように rsync パッケージをインストールせよ.
# apt-get install rsync
epa 側での公開鍵作成
バックアップのための公開鍵を作成する.
epa$ sudo -s -H epa# cd /root epa# ssh-keygen -t dsa (鍵はデフォルトの /root/.ssh/id_dsa とする) (パスフレーズは空にする)
epabk 側の鍵の設置
epa で作成した公開鍵 epa:/root/.ssh/id_dsa.pub を epabk:/root/.ssh/authorized_keys にコピーする. 既に authorized_keys が作成されている場合には, id_dsa.pub の内容を authorized_keys の最後尾に追記すること.
ただし, このままでは epa で root を取られると epabk もそのまま 乗っ取られることが考えられるため, 公開鍵認証の際にはバックアップ以外 の動作をできないよう, また EPA ドメイン以外からのアクセスを受け付けないよう 制限をかける. そのために, 上記で設置した authorized_keys 内の epa の公開鍵の行の冒頭に以下を加える. なお, 見易さのため改行してあるが, 一行で書くこと, またカンマの前後に空白は開けないこと. そして, 最後の "no-agent-forwarding" と公開鍵の冒頭に書いてある "ssh-dss" または "ssh-rsa" の間には空白を一文字入れること.
command="rsync --server -vlogDtpr --delete . /home/",no-pty, from="*.epa.scitec.kobe-u.ac.jp",no-port-forwarding, no-X11-forwarding,no-agent-forwarding
epabk 側の通信許可
最近の OpenSSH では, デフォルトでは root のログインを許可しないため, 設定を変更する. /etc/ssh/sshd_config の
PermitRootLogin no
という部分を
PermitRootLogin forced-commands-only
に変更したのち,
epabk# /etc/init.d/ssh restart
として設定を反映すること. これにより, epabk 側の鍵の設置 で指定したコマンドでのみログインを許可することとなる.
epa 側でのデータ転送用スクリプトの設置
自作スクリプト用 cron ディレクトリ作成
自作の cron 用スクリプト置き場として, /etc/cron.local を作成する.
# mkdir /etc/cron.local # mkdir /etc/cron.local/daily
バックアップ用スクリプトの用意
rsync_epabk.sh を, /etc/cron.local/daily/230_rsync_epabk に設置する. (スクリプト先頭の番号は, その他のスクリプトを置いた際, どれを 優先して実行するかを決めるためのものである. 若い番号のものほど 先に実行される).
# wget http://epa.scitec.kobe-u.ac.jp/~itpass/epa/system_backup_2008/rsync_epabk.sh # mv rsync_epabk.sh /etc/cron.local/daily/230_rsync_epabk
/etc/cron.local/daily/230_rsync_epabk に実行権限を設定する.
# chmod 755 /etc/cron.local/daily/230_rsync_epabk
バックアップ用スクリプトの編集
epa および epabk のホスト名やバックアップする領域に応じて, 230_rsync_epabk を編集する. 主に編集するのは以下の項目である.
- ["SHARED_HOST"]
-
バックアップを行う 2 つのホスト (本文書での epa および epabk) のドメイン名 (ホスト名 + ドメイン名) をスペースで区切って 記述する. 送信元と送信先で順序を変える必要は無い.
このスクリプトではスクリプトを起動するホストが必ず 転送元で, もう一方が転送先になるようになっている.
- ["BKSUBDIRS"]
-
転送する領域を記述する. これは バックアップする領域 に応じて書き換えること.
なお, "hoge/" 等と最後にスラッシュをいれると転送がうまく 行かなくなるので注意すること.
crontab の編集
/etc/crontab を編集する. 以下の一行を追加する.
25 6 * * * root cd / && run-parts --report /etc/cron.local/daily
出力結果に関してメールを送信したい場合には以下のようにすると良い.
25 6 * * * root cd / && run-parts --report /etc/cron.local/daily |mail -s "`hostname -f` daily run outputs" xxx@xxx.xxxx
バックアップログファイルの作成
ログファイルのためのディレクトリとファイルを作成しておく. なお, このログファイルの場所は バックアップ用スクリプトの用意 で用意した 230_rsync_epabk 内の LOGFILE を書き換えることで変更できる.
# mkdir /var/log/rsync-log # touch /var/log/rsync-log/epabk.log
バックアップログファイルの logrotate の設定
rsync のログを 1 週間毎に分割する. /etc/logrotate.d/ 以下に rsync_epabk という設定ファイルを作成.
# vi /etc/logrotate.d/rsync_epabk
以下の内容を書き込む.
/var/log/rsync-log/epabk.log { weekly create 0644 root root rotate 12 }
Keyword(s):
References:[[EPA2008]2008年度後期サーバ構築ログ] [[EPA2008b]サーバ交換作業] [[EPA2008b]ローカルでのバックアップの設定] [[EPA2008b]gate-toroku-systemのインストールと設定] [[Memo2010][ITPASS] tako 構築作業ログ 6 (gate)]