IT pass HikiWiki - [ITPASS2010]サーバ交換作業(DNS, gate) Diff

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

{{toc}}

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

= phase 0

== new の DNS キャッシュの TTL を変更


TTL を入替え作業時間よりも十分に短い時間に変更する.

* localhost.rev, localhost.zone

    $TTL 300


* 各ファイルの serial を 更新する.

= phase 1  (入替え開始)

DNS 班が行う作業は特にない


= phase 2

== new 側の old に対する通信許可の設定

new の /etc/ssh/sshd_config で,

  PermitRootLogin no

という部分を

  PermitRootLogin yes

に変更する.

さらに, 任意のコマンドを実行出来るように,

  PermitRootLogin forced-commands-only

という部分があればコメントアウトする. その後,

  new# /etc/init.d/ssh restart

として設定を反映すること. これにより, root のログインを許可することとなる.

== old から new へ各種データをコピー

* old の /var/spool/cron/crontabs 以下の各ファイルを new へコピー
  * scp コマンドで移す際には, パーミッションやグループ等の設定を変えてしまわないように注意 (オプション p の使用).

   root@old-itpass:/var/spool/cron# scp -p -r crontabs root@new-itpass:/var/spool/cron/
  
* old の /etc/shadow のユーザ部分を new へコピー (注意)
  * old, new に別々の仮想端末でログインする.

    new の /etc/shadow を/etc/shadow~にバックアップ.
    old の /etc/shadow をそのまま new へコピーすると, new での構築作業用アカウントが消えるので, old と new を比較して, UID が new にない UID が 1000 〜 29999 までのものを目視でコピーする. (UID とユーザ名の対応については /etc/passwd を参照)

* /home ディレクトリを rsync する
  * 作業については ((<home 領域を old から new へ転送|[ITPASS2010]サーバ交換作業#home 領域を old から new へ転送>)) を参照.

==  new 側の old に対する通信制限の設定

先ほど, old から new に rsync でファイルを転送するために, root のログインを許可したので, 設定を以下のように変更して元に戻す.  

/etc/ssh/sshd_config の

    PermitRootLogin yes

という部分を

    PermitRootLogin no

に変更したのち,

    new# /etc/init.d/ssh restart

として設定を反映することにより元に戻る.


=== old の authorized_keys を編集

* new-itpass の公開鍵の行の冒頭に以下を加える.

   command="rsync --server -vlogDtpr --delete . /home/",no-pty,from="old-itpass.scitec.kobe-u.ac.jp",
   no-port-forwarding,no-X11-forwarding,no-agent-forwarding

* ファイル名を authorized_keys.bk に変更し, root ログインを完全に拒否するようにする.

= phase 3

これ以降、new, old が入れ替わるので注意すること.

* old

  * bind を止めてサーバ起動時に bind が立ち上がらないように、起動スクリプトを変更する.

     root@old-itpass:/etc/init.d# /etc/init.d/bind stop
     root@old-itpass:/etc/init.d# update-rc.d -f bind remove
      Removing any system startup links for /etc/init.d/bind ...
       /etc/rc0.d/K20bind
       /etc/rc1.d/K20bind
       /etc/rc2.d/S20bind
       /etc/rc3.d/S20bind
       /etc/rc4.d/S20bind
       /etc/rc5.d/S20bind
       /etc/rc6.d/K20bind

* new

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

     root@new-itpass:/usr/local/bind/etc# cp -r namedb namedb-20101029

  * サーバ起動時に bind が立ち上がるよう, 起動スクリプトを変更

     root@new-itpass:/usr/local/bind/etc# update-rc.d bind defaults

    ここで

     update-rc.d: warning: /etc/init.d/bind missing LSB information
     update-rc.d: see <http://wiki.debian.org/LSBInitScripts>

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

     ### BEGIN INIT INFO
     # Provides:          bind9
     # 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 bind9
     # Description:       bind9 is a Domain Name Server (DNS)
     #        which translates ip addresses to and from internet names
     ### END INIT INFO

    その後, update-rc.d -f bind remove を実行してから, もういちど update-rc.d bind defaults を実行し, 警告が出ないことを確認する.

  * resolv.conf の書き換え

    /etc/resolv.conf を以下のように書き換える.これにより再起動後から new はフルサービスリゾルバとなる.

     nameserver 127.0.0.1
     #nameserver 133.30.14.2                      
     #nameserver 133.30.14.3                      
     #nameserver 133.30.8.2
     search scitec.kobe-u.ac.jp

== bind の起動確認

サーバ交換作業が終わったら, reboot して bind が起動することを確認する.
    
* new  (bindが起動していることを確認)
   new-itpass:$ ps ax | grep bind
   2601 ?        Ss     0:00 /usr/local/bind/sbin/named -c /usr/local/bind/etc/namedb/named.conf -u bind
   3224 pts/3    R+     0:00 grep bind
* old (bindを起動していないことを確認)
   old-itpass:$ ps ax | grep bind
   3897 pts/3    S+     0:00 grep bind

= phase 4

移行の最終チェック

* old と new でそれぞれ問い合わせに応じるか, 正しいデータを返すかをチェックする.

     $ dig itpass.scitec.kobe-u.ac.jp
    
     --> 133.30.109.22を返せば OK.

     $ dig old-itpass.scitec.kobe-u.ac.jp
    
     --> 133.30.109.21を返せば OK.

     $ dig new-itpass.scitec.kobe-u.ac.jp
    
     --> 133.30.109.22を返せば OK.

= 後日の作業

* 要らないファイルの削除

  運用開始から 1 週間をめどに, 参考のために old からコピーしたファイル類を削除する. また emacs で編集した際の一時ファイル(ファイル名~ など)もあれば削除する.

* new の DNS の TTL を元に戻す.  

  この項目は DNS 管理者の意向によっては行わなくてもよい.

  * /usr/local/bind/etc/namedb のバックアップとして /usr/local/bind/etc/namedb-XXXXXXXX (バックアップする日付) を作成. その際にそれより古い namedb のバックアップがあれば削除しておく.
  * /usr/local/bind/etc/namedb/{localhost.zone, localhost.rev} の$TTLを300から3600に変更. serial も更新.
  * bind を再起動.

     /etc/init.d/bind restart


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