[ITPASS2011a]サーバ交換作業 1 週間後に行う作業
本サーバから予備サーバへのバックアップ設定
概要
ITPASS サーバにはバックアップとサーバ本体のトラブル時に代替するための予備サーバを立ててある. /home 以下のいくつかの領域に関して, ITPASS サーバ本体から予備サーバへ定期的にバックアップを取る.
この作業は, 本サーバが正しく動作しているかの確認が取れてから行うため, サーバ交換後すぐには行わず, サーバ交換後しばらくしてから行う.
バックアップする領域
バックアップを取る領域は, 原則的にグループで管理する資源や, システムにとって必要な資源である.
2011/11/11 現在, 以下の領域をバックアップの対象とする.
- aoelab cps epalab itpass gate
また以下の領域については, バックアップ日時ごとにディレクトリを作成するローカルバックアップを実行している (例: ~epalab/hiki -> ~epalab/hiki.bk/20121005-172930). バックアップデータは 230_rsync_itpassbk により予備サーバへ転送される.
- epalab/hiki itpass/hiki itpass/hiki-secret
バックアップの際の認証方式
バックアップには rsync を用いる. 様々な権限のファイルに対応できるよう root アカウントでバックアップを行うが, セキュリティを高めるため, 予備サーバーへの転送の際は認証に SSH + 公開鍵暗号を用いる.
準備
以降では, 運用中の ITPASS サーバのホスト名を itpass, 予備サーバを itpassbk と称する. 実際には, 使用するホストの名称に置き換えて作業を行う.
まず, itpass, itpassbk ともに SSH デーモンが立ち上がっているか確認し, もし立ち上がっていない場合は [ITPASS2011a]ssh のインストールと設定?が ちゃんと行われているか確認した上で立ち上げること.
itpass 側での公開鍵作成
バックアップのための公開鍵を作成する.
itpass$ sudo -s -H itpass# cd /root itpass# ssh-keygen -t dsa (鍵はデフォルトの /root/.ssh/id_dsa とする) (パスフレーズは空にする)
itpassbk 側の鍵の設置
itpass で作成した公開鍵 itpass:/root/.ssh/id_dsa.pub を itpassbk:/root/.ssh/authorized_keys の最後尾に追記する (ファイルがない場合は作成する). ここで itpass から直接追記しようとすると, itpassbk 側の root パスワードが必要になるので, 一旦 itpassbk の自分のディレクトリに鍵を置いた後, itpassbk で root となり authorized_key に追記する.
しかし, このままでは itpass で root を取られると itpassbk もそのまま乗っ取られることが考えられるため, 公開鍵認証の際にはバックアップ以外の動作をできないよう, また itpass 以外からのアクセスを受け付けないよう制限をかける. そのために, 上記で設置した authorized_keys 内の itpassbk の公開鍵の行の冒頭に以下を加える. なお, 見やすさのため改行してあるが, 一行で書くこと. またカンマの前後に空白は開けないこと. そして, 最後の "no-agent-forwarding" と公開鍵の冒頭に書いてある "ssh-dss" または "ssh-rsa" の間には空白を一文字入れること.
command="rsync --server -vvlogDtpre.iLsf --delete . /home/",no-pty, from="ika-itpass.scitec.kobe-u.ac.jp",no-port-forwarding, no-X11-forwarding,no-agent-forwarding
itpassbk 側の通信許可
最近の OpenSSH では, デフォルトでは root のログインを許可しないため, 設定を変更する. /etc/ssh/sshd_config の
PermitRootLogin no
という部分を
PermitRootLogin forced-commands-only
に変更したのち,
itpassbk# /etc/init.d/ssh restart
として設定を反映させる. これにより, #itpassbk 側の鍵の設置 で指定したコマンドでのみログインを許可することとなる.
itpass 側でのデータ転送用スクリプトの設置
バックアップスクリプトを置くディレクトリの確認
オリジナルの cron 用スクリプトは /etc/cron.local/daily に置く. もしこのディレクトリがなければ [ITPASS2011a]システムログメールの設定 が行われていない可能性があるので システムログメールの作業担当者に連絡すること.
バックアップ用スクリプトの用意
概要
オリジナルのバックアップスクリプト rsync_epabk.sh を #バックアップスクリプトの書き換え に従い書き換える.
また, 書き換えたものは rsync_itpassbk.sh にある.
この書き換えたものを, /etc/cron.local/daily/230_rsync_itpassbk に設置する. (スクリプト先頭の番号は, その他のスクリプトを置いた際, どれを優先して実行するかを決めるためのものである. 若い番号のものほど先に実行される).
具体的には
# wget http://itpass.scitec.kobe-u.ac.jp/~itpass/server/2011/system_backup/rsync_itpassbk.sh (書き換える場合は wget http://itpass.scitec.kobe-u.ac.jp/~itpass/server/2009/system_backup/rsync_epabk.sh) # mv rsync_itpassbk.sh(もしくは, rsync_epabk.sh) /etc/cron.local/daily/230_rsync_itpassbk
/etc/cron.local/daily/230_rsync_itpassbk に実行権限を設定する.
# chmod 755 /etc/cron.local/daily/230_rsync_itpassbk
バックアップスクリプトの書き換え
rsync_itpassbk.sh をダウンロードした場合には, 以下の書き換えは済んでいるため必要ない.
itpass および itpassbk のホスト名やバックアップする領域に応じて, 230_rsync_itpassbk を編集する. 主に編集するのは以下の項目である.
- ["SHARED_HOST"]
-
バックアップを行う 2 つのホスト (本文書での itpass および itpassbk) のドメイン名 (ホスト名 + ドメイン名) をスペースで区切って 記述する. 送信元と送信先で順序を変える必要は無い.
このスクリプトではスクリプトを起動するホストが必ず 転送元で, もう一方が転送先になるようになっている.
- ["BKSUBDIRS"]
-
転送する領域を記述する. これは #バックアップする領域 に応じて書き換えること.
なお, "hoge/" 等と最後にスラッシュをいれると転送がうまく 行かなくなるので注意すること.
書き換え前後の 230_rsync_itpassbk の差分は以下である.
$ diff -u ~itpass/public_html/server/2010/system_backup/rsync_itpassbk.sh \ ~itpass/public_html/server/2009/system_backup/rsync_epabk.sh --- /home/itpass/public_html/server/2009/system_backup/rsync_epabk.sh 2009-01-15 17:26:18.000000000 +0900 +++ /home/itpass/public_html/server/2010/system_backup/rsync_itpassbk.sh 2010-09-16 14:27:37.000000000 +0900 @@ -1,6 +1,6 @@ #!/bin/sh # -#= Backup script for EPA servers (tako <=> ika) +#= Backup script for ITPASS servers (tako <=> ika) # MAINTAINERS="Yasuhiro MORIKAWA, Shin-ya Murakami" UPDATE='2009-01-15' @@ -11,17 +11,17 @@ ###################################################################### # Settings -SHARED_HOST="ika.epa.scitec.kobe-u.ac.jp tako.epa.scitec.kobe-u.ac.jp" +SHARED_HOST="ika-itpass.scitec.kobe-u.ac.jp tako-itpass.scitec.kobe-u.ac.jp" BKROOTDIR="/home" -BKSUBDIRS="ahslab aoelab cps epalab itpass pschool gate mosir" -LOGFILE='/var/log/rsync-log/epabk.log' +BKSUBDIRS="aoelab cps epalab itpass gate" +LOGFILE='/var/log/rsync-log/itpassbk.log' RSYNCCMD='rsync' OPTIONS="-av --delete" DRYRUNOPT='-n' TMPDIR='/tmp' -LOGTMP="${TMPDIR}/rsync_epabk.tmp.log-$$" +LOGTMP="${TMPDIR}/rsync_itpassbk.tmp.log-$$" # End Settings ###################################################################### @@ -155,7 +155,7 @@ ############################## #== Summary message # -echo "***** EPA servers data backup by $0 *****" +echo "***** ITPASS servers data backup by $0 *****" echo " ${srchostdef}:${BKROOTDIR}/\${dir} -> ${DSTHOST}${BKROOTDIR}/\${dir}" echo "" echo " Update Delete"
hiki データバックアップスクリプトの設置
概要
rsync_itpassbk.sh を /etc/cron.local/weekly/210_rsync_localbk_hiki に設置する
具体的には
# wget http://itpass.scitec.kobe-u.ac.jp/~itpass/server/2011/system_backup/rsync_localbk_hiki.sh # mv rsync_localbk_hiki.sh /etc/cron.local/weekly/210_rsync_localbk_hiki
/etc/cron.local/weekly/210_rsync_localbk_hiki に実行権限を設定する.
# chmod 755 /etc/cron.local/weekly/210_rsync_localbk_hiki
crontab の編集
/etc/crontab を編集する. 以下の 2 行があることを確認する.
25 6 * * * root cd / && run-parts --report /etc/cron.local/daily 47 6 * * 7 root cd / && run-parts --report /etc/cron.local/weekly
出力結果に関してメールを送信したい場合には以下のようにすると良い (以下は例).
25 6 * * * root cd / && run-parts --report /etc/cron.local/daily |mail -s "`hostname -f` daily run outputs" xxx@xxx.xxxx 47 6 * * 7 root cd / && run-parts --report /etc/cron.local/weekly |mail -s "`hostname -f` weekly run outputs" itpadmin@itpass.scite
c.kobe-u.ac.jp
バックアップログファイルの作成
ログファイルのためのディレクトリとファイルを作成しておく. なお, このログファイルの場所は #バックアップ用スクリプトの用意 や #hiki データバックアップスクリプトの設置 で設置したスクリプト内の変数 LOGFILE を書き換えることで変更できる.
# mkdir /var/log/rsync-log # touch /var/log/rsync-log/itpassbk.log # touch /var/log/rsync-log/localbk_hiki.log
バックアップログファイルの logrotate の設定
データ転送の際の rsync のログを 1 週間毎に分割する. /etc/logrotate.d/ 以下に rsync_itpassbk という設定ファイルを作成.
# vi /etc/logrotate.d/rsync_itpassbk
以下の内容を書き込む.
/var/log/rsync-log/itpassbk.log { weekly create 0644 root root rotate 12 }
hiki データのバックアップの際の rsync のログは 1 ヶ月毎に分割する. /etc/logrotate.d/ 以下に rsync_localbk_hiki という設定ファイルを作成.
# vi /etc/logrotate.d/rsync_localbk_hiki
以下の内容を書き込む.
/var/log/rsync-log/localbk_hiki.log { monthly create 0644 root root rotate 12 }
itpassbk のローカルバックアップの停止
220_rsync_localbk_root, 225_rsync_localbk_home の実行権限を外す.
# cd /etc/cron.local/daily # chmod a-x 220_rsync_localbk_root 225_rsync_localbk_home
参考資料
不要なファイルの削除
運用開始から 1 週間をめどに, 参考のために old からコピーしたファイル類を削除する. また emacs で編集した際の一時ファイル(ファイル名~ など)もあれば削除する.
Keyword(s):
References:[[ITPASS2011]2011年度サーバ構築ログ] [[ITPASS2011a]ローカルでのバックアップの設定] [[ITPASS2012]ローカルでのバックアップの設定] [[ITPASS2014]ローカルでのバックアップの設定]