[Memo2009][ITPASS] サーバ交換作業(清水, 黒田)
[ITPASSサーバ構築ドキュメント へ戻る]
概要
ITPASS サーバでは, 毎年 9-10 月に管理・運営技術と後継者育成を目的として, サーバの再構築を行っている.
ITPASS サーバは本サーバと予備サーバの 2 台体制で運用しており, 以下の手順で再構築を行うこととなる. なお, 入替え前のサーバと入替え後のサーバのホスト名は それぞれ tako-itpass, ika-itpass である.
- tako-itpass に OS とサーバソフトウェアのインストール (期間: 1 週間〜 1ヶ月)
- 下記の入れ替え日には ITPASS サーバを停止することとなるため, 停止アナウンスを数度行う (入替え日の 2 週間前から当日 30 分前まで).
- ika-itpass と tako-itpass の入替え (期間: 半日〜 1 日)
phase 0 (入替え前)
入れ替えを開始する (サービスを停止する) 30 分前には告知.
phase 1 (入替え開始)
old のサービスを停止する.
- qmail, tcpserver (smtp), inetd (pop3)
- サービス停止作業
qmail, tcserver, openbsd-inetd に関して, 以下のコマンドで, サービスを一時的に停止する. ただし, 再起動すると再びこれらのサービスも起動してしまうため, 作業途中で再起動の必要性が出てしまった場合は注意. 永続的にサービスを停止する作業は phase 3 で行う.
# /etc/init.d/qmail stop # /etc/init.d/tcpserver stop # /etc/init.d/openbsd-inetd stop
- サービス停止作業
phase 2
ika-itpass から new へ各種データをコピー
ika-itpass の /usr/local/qpopper/pop.auth を new へコピー
ika-itpass$ cd /usr/local/qpopper/ ika-itpass$ sudo cp pop.auth ~/ ika-itpass$ sudo chown mikity:mikity pop.auth ika-itpass$ sudo scp pop.auth tako-itpass: ika-itpass$ slogin tako-itpass tako-itpass$ cd /usr/local/qpopper tako-itpass$ sudo mv pop.auth pop.auth~ tako-itpass$ sudo mv ~/pop.auth . tako-itpass$ sudo chown pop:mail pop.auth tako-itpass$ ls -l tako-itpass$ rm pop.auth~ tako-itpass$ exit ika-itpass$ rm pop.auth
phase 3
ika の設定変更を行う.
qmail の設定変更
外から来たメールを受け取らないように, and ログメールを飛ばすのに必要な設定だけにするため, /var/qmail/control 以下の locals, rcpthosts を以下のように 変更する. 移行が終わったら起動する.
変更前
localhost ika-itpass.scitec.kobe-u.ac.jp itpass.scitec.kobe-u.ac.jp aoe.scitec.kobe-u.ac.jp cps.scitec.kobe-u.ac.jp
変更後
localhost
tako の設定変更する.
qmail の設定変更
/var/qmail/control 以下の locals, rcpthosts が以下のように 変更されているかチェックする. されていない場合は以下のように編集する.
localhost ika-itpass.scitec.kobe-u.ac.jp itpass.scitec.kobe-u.ac.jp aoe.scitec.kobe-u.ac.jp cps.scitec.kobe-u.ac.jp
qmail-showctl(8) で設定を確認.
qmail の再起動
/etc/init.d/qmail restart
公開鍵認証の際のセキュリティ設定を変更する (通信制限)
tako 側の ika に対する通信制限の設定を行う. 先ほど, ika から tako に rsync でファイルを転送するために, root のログインを許可したので, 設定を変更して元に戻す. /etc/ssh/sshd_config の
PermitRootLogin yes
という部分を
PermitRootLogin no
に変更したのち,
ika-itpass# /etc/init.d/ssh restart
として設定を反映することにより元に戻る.
この時点で, ika-itpass と tako-itpass が入れ換わった. これまで tako-itpass として扱っていたサーバ機は ika-itpass として 扱うことになった. DNS 班の作業を参照
prefix.pl の修正
10/22 (木) 時点で prefix.pl の編集が適当でなかったことが phase 3 の作業中に分かったため, ika prefix.pl を tako の /usr/local/lib の prefix.pl と差し替えた.
phase 3 (続き)
- [EPA2008]サーバと予備サーバでのバックアップの設定の作業を行う
概要
ITPASS サーバにはバックアップとサーバ本体のトラブル時に代替するための 予備サーバを立ててある. /home 以下のいくつかの領域に関して, ITPASS サーバ本体から予備サーバへ定期的にバックアップを取る.
バックアップする領域
バックアップを取る領域は, 原則的にグループで管理する資源や, システムにとって必要な資源である.
- 2009/10/23 現在, 以下の領域をバックアップの対象とする.
- aoelab cps epalab itpass pschool gate
バックアップの際の認証方式
バックアップには rsync を用いる. root アカウントでバックアップを行うが, セキュリティを高めるため, その認証には SSH + 公開鍵暗号を用いる.
準備
以降では, 新しく運用する EPA サーバのホスト名を itpass, 予備サーバを itpassbak と称する. 実際には, 使用するホストの名称に 置き換えて作業を行うこと.
まず, itpass, itpassbk ともに SSH デーモンが立ち上がっている必要があるため, [EPA2008]sshのインストールと設定 を先に行っておくこと. また, rsync を用いてバックアップを行うため, 以下のように rsync パッケージをインストールせよ.
# apt-get install rsync
- インストールは既に行われていたので, 設定と rsync のパッケージがちゃんと動作することを確認する.
tako-itpass 側の通信許可
最近の OpenSSH では, デフォルトでは root のログインを許可しないため, 設定を変更する. /etc/ssh/sshd_config の
PermitRootLogin no
という部分を
PermitRootLogin forced-commands-only
に変更したのち,
tako-itpass# /etc/init.d/ssh restart
として設定を反映すること. これにより, epabk 側の鍵の設置 で指定したコマンドでのみログインを許可することとなる.
- ika-itpass 側でのデータ転送用スクリプトの設置
自作スクリプト用 cron ディレクトリ作成
自作の cron 用スクリプト置き場として, /etc/cron.local を作成する.
# mkdir /etc/cron.local # mkdir /etc/cron.local/daily
- これも既に作成されていた.
バックアップ用スクリプトの用意
rsync_epabk.sh を参考に /etc/cron.local/daily/230_rsync_itpassbk を設置する. (スクリプト先頭の番号は, その他のスクリプトを置いた際, どれを 優先して実行するかを決めるためのものである. 若い番号のものほど 先に実行される).
- ちなみにこの辺りからは ika-itpass で行う作業なので, 間違って tako-itpass で作業を行っている人はスクリプトの設置の頭まで 戻るように
以下のように /etc/cron.local/daily/230_rsync_itpassbk に実行権限を 設定する.
# chmod 755 /etc/cron.local/daily/230_rsync_itpassbk
バックアップ用スクリプトの編集
ika-itpass および tako-itpass のホスト名やバックアップする領域に応じて, 230_rsync_itpassbk を編集する. 主に編集するのは以下の項目である.
- ["SHARED_HOST"]
-
バックアップを行う 2 つのホスト (本文書での ika-itpass および tako-itpass) のドメイン名 (ホスト名 + ドメイン名) をスペースで区切って 記述する. 送信元と送信先で順序を変える必要は無い.
このスクリプトではスクリプトを起動するホストが必ず 転送元で, もう一方が転送先になるようになっている.
- 入手した時点で書かれていると思うが, 確認しておく. "ika-itpass.scitec.kobe-u.ac.jp tako-itpass.scitec.kobe-u.ac.jp" とあればOK. 上記のように順番はどちらでもよい.
- ["BKSUBDIRS"]
-
転送する領域を記述する. これは バックアップする領域 に応じて書き換えること.
なお, "hoge/" 等と最後にスラッシュをいれると転送がうまく いかなくなるので注意すること.
- BKSUBDIRS="aoelab cps epalab itpass pschool gate" と なっていればよい
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
- これも Mail 構築のときに編集済み. 確認したときにアドレスが "itpadmin_at_itpass.scitec.kobe-u.ac.jp" となっていればよい.
バックアップログファイルの作成
ログファイルのためのディレクトリとファイルを作成しておく. なお, このログファイルの場所は バックアップ用スクリプトの用意
で用意した 230_rsync_itpassbk 内の LOGFILE を書き換えることで変更できる.
# mkdir /var/log/rsync-log # touch /var/log/rsync-log/itpassbk.log
- touch は指定したファイルが存在しないときは, 中身が空のファイルを作成する. touch をする前に itpassbk.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 }
- 参考資料
phase 4
- 移行の最終チェック
- ika
- pop: メールをとってこれるか
- smtp: メールを出せるか, 受け取れるか
- mailing list: メールが配送されるか
- tako
- pop: 無効になっているか
- smtp: submit は有効にするが, 受け取らない設定になっているか
- ika
- new の smtp や Mailing list の確認は Mail の構築の際と同じような手順で チェックする(qmail-inject で外にメールが届くか, 外からメールを送って届くか, Mailing list にメールを送って届くか).
pop の確認の準備 ika の利用者は自分の ika のアカウントで, .qmail の設定と Mailbox の作成 popauth コマンドを行ってパスワードを作っておく作業をする
メーラーの設定は pop サーバ, smtp サーバはどちらも itpass.scitec.kobe-u.ac.jp にする 認証形式は APOP で, 暗号化は pop も smtp も無しにする
受信のときにパスワードを要求されるので, popauth で作成したパスワードを入力する.
[ITPASSサーバ構築ドキュメントへ戻る]
Keyword(s):
References:[[ITPASS2009]2009年度サーバ構築ログ]