IT pass HikiWiki - [ITPASS2011a]サーバ交換作業 Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

[((<ITPASSサーバ構築・運用ドキュメント>)) へ戻る]

{{toc_here}}


= 当日作業

== 概要

大まかな作業内容は以下の通りである.

* 前半 (root パスワード保持者が中心になって行う)
  * プロセスやサービスの停止
  * 一時的に root ログインを許可して, 必要なファイルを転送
* 後半 (全員で行う)
  * ホスト名・IP アドレスの交換後, ネットワーク再起動
  * 各種サービスの設定変更後, OS 再起動
  * サービスなどの動作確認

特に記述がない限り, ひとつの phase 内の全作業が
完了してから次の phase に進むようにすること.
また同一 phase 内に複数項目
(Hiki ソースでの "===" の項目)
がある場合は複数人で同時に行ってもよい.

== phase 0 (準備)

* サーバ交換中は Hiki 上のマニュアルを参照できなくなるため,
  作業者は予めサーバ交換マニュアルを手元に保存しておく.
  * サーバ交換マニュアルから引用されているページについても忘れないように.
  * Hiki ページの印刷は推奨されない. 長いコマンドなどが切れてしまうため.

== phase 1 (入替え開始)

ここでは並行できる作業が少ないため.
一部の作業メンバーでスタートする.
((*作業メンバーには, tako, ika の root パスワードを
持っている人を含めるようにする*))
(ika の root パスワード保持者は念のため).

=== ika, tako のログインユーザの削除, プロセスの削除, サービスの停止

((<[ITPASS2011a]サーバ再起動手順>)) を参考に,
ika, tako のログインユーザの削除, プロセスの削除, サービスの停止を行う.
機器のアンマウントや再起動まではしない.

=== ika の永続的なサービス停止

((<[ITPASS2011a]サービスの開始・停止>)) を参考に,
以下のサービスを((*永続的に*))停止する

* apache2
* openbsd-inetd

bind については,
予備サーバになってもサービス提供を続けるので残しておく.

qmail, tcpserver については, 入れ替え後も
システムログメールを送れるようにするため残しておく.

== phase 2 (tako の root ログイン許可)

=== tako の root ログイン許可

tako において一時的に root ログインを許可する.
方法は((<[ITPASS2011a]root ログインの許可・禁止>))を参考にする.

== phase 3 (ika から tako へ各種データをコピー)

((*この phase の作業には tako の root パスワードが必要*)).

scp コマンドで移す際には, パーミッションやグループ等の設定を変えてしまわないように注意 (オプション p の使用).

=== ika から tako へ /home 領域を rsync

前回 rsync を行ってから変更があった分のために再度 rsync を行う.
前回 シェルスクリプトを作ってある場合はそれを実行するのみでよい.

作業内容の詳細は((<"[ITPASS2011a]サーバ交換事前作業#ika から tako へ /home 領域を rsync">))と同じなので, 不明点がある場合はそちらを参照のこと.

この作業は多少時間がかかる可能性がある.
コマンドの実行が成功していること確認したら,
別途端末を開いて他の作業を並行して行うと時間が節約できる.

=== ika から tako へ各種設定ファイルをコピー

* ika から tako へ cron の設定ファイルをコピー

    tako# scp -p -r root@ika-itpass:/var/spool/cron/crontabs /var/spool/cron/
  
* ika から tako へ popauth の設定ファイル /usr/local/qpopper/pop.auth をコピー

    tako# cd /usr/local/qpopper
    tako# cp pop.auth pop.auth.YYYYMMDD    # YYYYMMDD は今日の日付
    tako# scp -p root@ika-itpass:/usr/local/qpopper/pop.auth .

* ika から tako へ /etc/shadow のユーザ部分をコピー

  * ika, tako に別々の端末でログインする.
  * tako の /etc/shadow を
    /etc/shadow.YYYYMMDD (YYYYMMDD は今日の日付) にバックアップ.
  * ssh, diff コマンドを組み合わせて
    ika と tako の /etc/shadow を比較する.

      tako# ssh root@ika-itpass cat /etc/shadow | diff - /etc/shadow

  * 上記の出力を見て, tako 側の /etc/shadow に書かれていない UID のうち
    1000 〜 29999 までのものがあるか確認する. あれば
    ika 側からコピーする. (UID とユーザ名の対応については /etc/passwd を参照)

== phase 4 (root ログイン禁止)

=== tako の root ログイン禁止

* /home 領域の rsync が終わっていることを確認する
* tako に対する root ログインが必要な作業が終わったので, ((<[ITPASS2011a]root ログインの許可・禁止>))を参考に root ログインを禁止した状態に戻す.

=== ika の root ログイン禁止

* ((<[ITPASS2011a]root ログインの許可・禁止>))を参考に
  root ログインを禁止した状態になっているか確認する.
* /root/.ssh/authorized_keys のファイル名を authorized_keys.bk に変更し,
  root ログインを完全に拒否するようにする.

== phase 5 (tako, ika の交換: 設定ファイルの変更)

ここから先は手分けできる作業が多いため, 構築関係者全員で行う.

=== ホスト名と IP アドレスの変更

各種設定ファイルに存在する,
ika と tako のホスト名と IP アドレスを入れ替える.
編集の際はバックアップを取っておくこと.

* ホスト名の変更

  * 編集するファイル
    * /etc/hostname
    * /etc/hosts
    * /etc/mailname
    * /etc/gate/gate.conf
    * /etc/exim4/update-exim4.conf.conf
    * /etc/motd
    * /usr/local/bind/etc/namedb/localhost.zone
    * /usr/local/bind/etc/namedb/localhost.rev
    * /var/qmail/control/defaulthost
    * /var/qmail/control/me
  * 担当
    * /etc: WWW 班
    * /usr: DNS 班
    * /var: Mail 班
      * システムログ内は変更しなくてよい

  上記の場所以外にも古い名前が残っていないか
    # grep tako (または ika) /etc/*
    # grep tako (または ika) /etc/*/*
  などで検索しながら作業すること.
  ファイルの編集をするときはエディタの検索機能を活用すると早く作業できる.
  ただし一括置換はホスト名とは関係ない文字列も置換してしまう恐れがあるので使わないこと.


* IP アドレスの変更

  /etc/hosts と /etc/network/interfaces 内の IP アドレスを入れ替える.

   設定後
   ika --> 133.30.109.21
   tako --> 133.30.109.22


== phase 6 (tako, ika の交換: ネットワークの再起動)

=== ネットワークの再起動

((*混乱を避けるため, ika, tako 両方ともに以下の作業を行う
ユーザ以外は全員ログアウトし,
ネットワークの再起動が完了するまでログインは控えたほうがよい.*))

ネットワークを再起動する.  
  
  # /etc/init.d/networking restart
    
この作業後, tako (または ika) に接続できなくなった場合は,
該当サーバを再起動し,
phase 1 を参考に全サービスを一時停止しておく.

== phase 7 (サービスの設定変更)

((*ここからホスト名が入れ替わっているので注意すること*)).
新, 旧はそれぞれ現構築メンバー, 昨年度の構築メンバーを意味する.

また, この phase 以降は両方のサーバで
作業の足並みをそろえる必要はない.

=== tako の qmail の設定変更 (担当: 旧 Mail 班)

外から来たメールを受け取らないように,
さらにシステムログメールを飛ばすのに必要な設定だけにするため, /var/qmail/control 以下の locals, rcpthosts を以下のように変更する.
移行が終わったらサービスを再起動する.

変更前

  localhost
  ika-itpass.scitec.kobe-u.ac.jp
  itpass.scitec.kobe-u.ac.jp
  epa.scitec.kobe-u.ac.jp
  aoe.scitec.kobe-u.ac.jp
  cps.scitec.kobe-u.ac.jp

変更後

  localhost

tako の変更は qmail だけなので,
この作業が終わったら次の phase に進んで良い.

=== ika の Mail 関連の設定変更 (担当: 新 Mail 班)

* qmail の設定変更

/var/qmail/control 以下の locals, rcpthosts が以下のように変更されているかチェックする. されていない場合は以下のように編集する.

  localhost
  ika-itpass.scitec.kobe-u.ac.jp
  itpass.scitec.kobe-u.ac.jp
  epa.scitec.kobe-u.ac.jp
  aoe.scitec.kobe-u.ac.jp
  cps.scitec.kobe-u.ac.jp

また, /var/qmail/control 以下の defaultshost, me が以下のように変更されているかチェックする. されていない場合は以下のように編集する.

    ika-itpass.scitec.kobe-u.ac.jp

qmail-showctl(8) で設定を確認.

* ((<[ITPASS2011a]サービスの開始・停止>)) を参考に,
  以下のサービスが永続的に立ち上がるように設定する
  * qmail
  * tcpserver

* メーリングリスト毎の bouncer 設定

  メーリングリストのエラーメール転送設定が行われているかチェックする. この作業が必要なメーリングリストは,

    itpass-ml_at_itpass.scitec.kobe-u.ac.jp

  である. ただし, "_at_" はアットマークである.
  /home/itpass/ml/ml-crtl/bouncer が以下のように変更されていることを確認する. されていない場合は以下のように編集する.

    &itpadmin_at_itpass.scitec.kobe-u.ac.jp
    |/usr/local/ezmlm/bin/ezmlm-weed
    |/usr/local/ezmlm/bin/ezmlm-return -D '/home/itpass/ml/ml-ctrl'

=== ika の DNS 関連の設定変更 (担当: 新 DNS 班)

* bind の設定変更

  * namedb のバックアップを作成(日付は適宜変更)

     root@ika-itpass:/usr/local/bind/etc# cp -r namedb namedb-20111104

  * ((<[ITPASS2011a]サービスの開始・停止>)) を参考に,
    以下のサービスが永続的に立ち上がるように設定する
    * bind

    ここで

     insserv: warning: script 'K01tcpserver' missing LSB tags and overrides
     insserv: warning: script 'tcpserver' missing LSB tags and overrides

    のような LSB の警告が出た場合, 以下を /etc/init.d/tcpserver の冒頭に追記する.

     ### BEGIN INIT INFO
     # Provides:          tcpserver
     # Required-Start:    $remote_fs
     # Required-Stop:     $remote_fs
     # Should-Start:      $network $syslog
     # Should-Stop:       $network $syslog
     # Default-Start:     2 3 4 5
     # Default-Stop:      0 1 6
     # Short-Description: Start and stop tcpserver
     # Description:       tcpserver is  access control program
     #        which translates ip addresses to and from internet names
     ### END INIT INFO

    その後, update-rc.d -f bind remove を実行してから, もういちど update-rc.d bind defaults を実行し, 警告が出ないことを確認する.
    
    毎年異なる箇所でエラーが起きる可能性があるため(2010年度は/etc/init.d/bind を編集する必要があった), 適宜修正内容は変更する.


  * resolv.conf の確認作業

    * /etc/resolv.conf を以下のようであることを確認する.
      これにより ika はフルサービスリゾルバになる.

       nameserver 127.0.0.1
       search scitec.kobe-u.ac.jp

=== ika の WWW などの設定変更 (担当: 新 WWW 班)

* ((<[ITPASS2011a]サービスの開始・停止>)) を参考に,
  以下のサービスが永続的に立ち上がるように設定する
  * apache2
  * openbsd-inetd

== phase 8 (OS 再起動)

OS を再起動してもサービスが期待通り立ち上がる (立ち上がらない)
ことを確認するため, tako, ika とも OS を再起動する.
両者を同時に再起動する必要はない.

再起動が終わったホストから, phase 9 に進んで良い.

== phase 9 (再起動後の動作確認)

=== サービスの起動確認

ps aux コマンドで以下の確認作業を行う.

* ika
  * http (https), bind, qmail, tcpserver (smtp), inetd (pop3) が
    起動していることを確認.

* tako
  * qmail, tcpserver (smtp) が起動していることを確認.
  * http (https), bind, inetd (pop3) が起動して((*いない*))ことを確認.

=== サービスの動作確認

==== ika

* ((*ssh*)): root ログインが禁止されているか
* ((*http*)): 表示できるか
  * 表示できないページがある場合は, /usr/local/apache2/conf/httpd.conf にそのページの領域の行があるか確認する. もしなければ, 書き加える.

* ((*hiki*)):に書き込めるか
* ((*gate*)):による登録や変更は可能か
* ((*bind*)):問い合わせに応じるか, 正しいデータを返すか
* ((*fail2ban*)): は正しく動作しているか

* ((*pop*)): メールをとってこれるか
  * ika での作業
    * ika の利用者は自分の tako のアカウントで, .qmail の設定と Mailbox の作成
    * popauth コマンドを行ってパスワードを作っておく作業をする
  * メールを受け取る ika 以外の計算機での作業
    * メーラーの設定は pop サーバ, smtp サーバはどちらも itpass.scitec.kobe-u.ac.jp にする
    * 認証形式は APOP で, 暗号化は pop も smtp も無しにする
    * 受信のときにパスワードを要求されるので, popauth で作成したパスワードを入力する.
* ((*smtp*)): メールを出せるか, 受け取れるか
  * qmail-inject で外にメールが届くか
    * ((<リモート送り出しテスト|"[ITPASS2011a]qmailのインストールと設定#[テスト 3] リモート送り出しテスト part1">)) を実行し, 届くことを確認する
  * 外からメールを送って届くか
* ((*mailing list*)): メールが配送されるか
  * Mailing list にメールを送って届くか

==== tako

* ((*ssh*)): root ログインが禁止されているか
* ((*http*)): 無効になっているか
* ((*DNS*)) (bind は立ち上がっていないが, 他の DNS サーバとの仲介として): 問い合わせに応じるか, 正しいデータを返すか
* ((*pop*)): 無効になっているか
* ((*smtp*)): submit は有効にするが, 受け取らない設定になっているか
  * ((<ローカル配送テスト part1|[ITPASS2011a]qmailのインストールと設定#[テスト 1] ローカル配送テスト part1>)) を実行し, 届かないことを確認する
  * cron のログが管理者に届くようになっているか
    * /etc/crontab 内の mail コマンドを実行し, 届くことを確認する.
    ただし _at_ は @ に読み替えること.
      # mail -s "`hostname -f` test" itpadmin_at_itpass.scitec.kobe-u.ac.jp

== phase 10 (バックアップの確認)

=== 電脳サーバへのバックアップの確認

ITPASS サーバの資源は, 毎日電脳サーバへバックアップされている. cron によって毎日実行されているそのシェルスクリプトが正常に作動しているか試行する.

電脳サーバにアカウントを持つ者がログインし,

$ sudo -u kobe -s

によって kobe になり, kobe のホームディレクトリに移動.
そこで,

$ ./itpass_rsync_epa2dennou.sh -n
$ ./epalab_rsync_epa2dennou_yyh.sh -n

を実行する. その後, 出力されたログを確認する.

$ cd ./itpass_rsync_epa2dennnou_log
$ less itpass_rsync_epa2dennnou.log
$ cd ../epalab_rsync_epa2dennnou_log
$ less ./epalab_rsync_epa2dennnou.log

2 つとも正常に出力されていれば OK.

== phase 11 (完了のアナウンス)

構築統括者はサーバ交換のアナウンスメールを送る.
必要に応じて ((<[ITPASS2011a]fingerprint の確認>)) を参考にする.


= 参考資料

* ((<"しげふみメモ : リモートホストのファイル等でdiffする方法"|URL:http://blog.livedoor.jp/hakin/archives/51590509.html>))


[((<ITPASSサーバ構築・運用ドキュメント>)) へ戻る]