IT pass HikiWiki - [Memo2008][EPA]EPA サーバ交代時の作業ログ(080825) Diff

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

{{toc}}

= スケジュール

    August 2008
  Su Mo Tu We Th Fr Sa
                 1  2

  3  4  5  6  7  8  9  <- メーリングリストのフォワード設定 (中本),
                          (08/04-08 納多昼間不在)
                          (08/07-09 森川不在)

  10 11 12 13 14 15 16 <- (08/13-15 大学休業)
                          (08/10-11 森川不在)

  17 18 19 20 21 22 23 <- 移行の準備作業 (納多, 中本, 村上, 森川, 佐々木)
                          (08/17-20 森川, 佐々木, 納多不在)
                          (08/19 停電)

  24 25 26 27 28 29 30 <- (08/25) EPA サーバを ika から tako
                                  へ移行 (納多, 中本, 村上, 森川, 佐々木)
  31

     September 2008
  Su Mo Tu We Th Fr Sa
      1  2  3  4  5  6 <- tako の動作チェック用週間
                          (09/01-02 神戸大院試)
                          (09/03-07 流体力学会)

   7  8  9 10 11 12 13 <- 新 ika の構築について相談
                          (09/08-13 学芸員実習(今村))

  14 15 16 17 18 19 20 <- (09/17-20 GFD セミナー)

  21 22 23 24 25 26 27 <- 新 ika の構築開始

* 新 ika の構築終了めどは 10 月末.


= EPAサーバ移行 (ika ⇒ tako)

== 移行計画の概要

  * 事前アナウンスを数度行う(2週間前から当日30分前まで).
  * ikaのサービスをssh以外落す.
  * ikaのデータをtakoにrsync.
  * gradisのDNSの権限委譲先をtakoに変更.
  * takoのサービスを上げる.
  * 復旧告知

== 作戦覚書

  * 移行中の CPS office 部屋のネットワーク接続 (DNS 設定) を検討する (高橋)
  * epa.scitec.kobe-u.ac.jpに対応したIPアドレスをikaからtakoに変更.
    * HTTPS用の証明書はepaで作ってあるので問題なし.
    * sshのホスト鍵は, 本当のなまえ(ika.epa.scitec.kobe-u.ac.jp)で
      ~/.ssh/known_hostsに保存されているので,
      ikaのホスト鍵をtakoにコピーした上で, 移行後に
      epa.scitec.kobe-u.ac.jpでログインしようとしても, うまくいかない.
      * 名前も張り替える作戦なら問題は起きないが,
        今回はローカルに保存したホスト鍵を各人で消してもらう作戦で行く.
    * 無線 LAN などの機器は DNS サーバとして ika と tako の両方を設定している.
      tako に移行した際には ika はセカンダリ DNS サーバとするためとりあえず
      問題は起こらないと考えられるが, その後 ika を再構築中に設定中のゾーン
      ファイルを読み込んで何らかの問題が生じるかもしれない.


== EPAサーバ移行スケジュール

EPAサーバのikaからtakoへの移行を時系列順にまとめる.

現段階では, 08/25 (月) を移行日と想定して作戦を立てる.

停止時間は3時間をメドにする.
(ただし, 告知する停止時間は 13:00 〜 18:00 と多少長めに)

=== 08/03-09 の週

  * 移行日と停止時間の予定のアナウンス (森川)
    * 移行日や停止時間がまずくないか, お伺い.
    * kobe-s3all@, itpass@, cps@, cps-wheel@ 宛

=== 1週間前まで (- 08/18)

  * 移行の周知と確定した予定日/時間の周知 (森川)

=== 1日前 or 前の週の最後の平日 (08/22)

  * サーバ構築用のアカウントの削除 (ホームディレクトリも消すこと)
    * ika の mondo1-3 (納多)
    * tako の chikuwa1-5 (中本)
  * 移行再告知 (森川)
  * ika, gradis, tako の DNS キャッシュの TTL を変更. (納多, 村上)
    * TTL は 5 分 (300 秒) くらいにしておく.
    * 具体的な手順は ((<[Memo2008][EPA]tako作業メモ(納多)(080822)#DNS の TTL の設定変更>)) を参照.

  * /home 以下のディレクトリを ika から tako へ rsync する. (中本, 佐々木)
    * 当日のコピーの時間を短縮するため.
    * 具体的な手順は ((<[Memo2008][EPA]tako作業メモ(中本)(080822)>)) を参照.

=== 当日

  * 12:00 関係者集合
  * 移行開始 30 分前: 移行再告知 (森川)

=== 当日: 13:00 移行開始

phase 0,1,2,3,4の順に行う.
phase 0,1,2,3,4内のそれぞれの項目は順不同.

==== phase 0  13:00 - 13:10

* ika, tako
  * セキュリティアップデート (森川)

==== phase 1  13:10 - 13:40

サービス停止前の下準備

* ika と tako 自身の DNS 設定の設定 /etc/resolv.conf を以下のように
  書き換える. なお, 133.30.104.1 は scitec の DNS サーバ,
  133.30.8.2 は神戸大での DNS サーバである.

    search epa.scitec.kobe-u.ac.jp
    nameserver 133.30.104.1
    nameserver 133.30.8.2
    nameserver 133.30.109.22
    nameserver 133.30.109.21

ikaのサービスを停止する.

  * http (https), dns, tcpserver (smtp), inetd (pop3) (中本)
    * サービス停止作業
      * apache2, bind, qmail, tcpserver, openbsd-inetd に関して,
        以下のコマンドで, サービスを一時的に停止する.
        ただし, 再起動すると再びこれらのサービスも起動してしまうため,
        作業途中で再起動の必要性が出てしまった場合は注意.
        永続的にサービスを停止する作業は phase 3 にて行う.

          # /etc/init.d/<service> stop

  * ika から tako への /home/epalab などの領域の転送を止める. (納多)
    * /etc/cron.local/daily/230_rsync_epabk を削除

  * ssh などでのログインユーザが居る場合, プロセスを削除 (森川)

    * ps aux コマンドで確認後, そのようなプロセスがある場合に,
      kill <プロセスID> とする.

==== phase 2  13:40 - 14:00

ika から tako へ データをコピー

  * /home ディレクトリを tako へ rsync (中本)
    * 基本的には, 先週金曜日の中本ログ参照のこと.
    * ただし, 今回は既に DNS を停止しているため, 以下の点に注意
      * tako 側の root の authorized_keys に記述される
        「from="*.epa.scitec.kobe-u.ac.jp"」も削除してから
        転送を行う必要があるので注意せよ.
      * tako にアクセスする際にホスト名ではなく IP アドレスで指定する.
    * いっそのこと, /root/.ssh/authorized_keys のセキュリティ的
      設定を消す方が楽であろう.

    * 作業後には, ika ⇒ tako への転送は許可しないよう,
      /etc/ssh/sshd_config の PermitRootLogin を no とし,
      /root/.ssh/authorized_keys を /root/.ssh/authorized_keys.bk へ
      リネームする.

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

  * /etc/shadow のユーザ部分を tako へコピー (納多)
    * ika, takoに別々の仮想端末でログインする.
      takoの/etc/shadowを/etc/shadow~にバックアップ.
      ikaの/etc/shadowのユーザー部分(morikawaから始まる行以下全て)を
      takoの/etc/shadowにコピー.

  * /usr/local/qpopper/pop.auth を tako へコピー (納多)
     ika$ cd /usr/local/qpopper/
     ika$ sudo cp pop.auth ~/
     ika$ sudo chown noda:noda pop.auth
     ika$ scp pop.auth tako:
     ika$ slogin tako
     tako$ cd /usr/local/qpopper
     tako$ sudo mv pop.auth pop.auth~
     tako$ sudo mv ~/pop.auth .
     tako$ sudo chown mail:pop pop.auth
     tako$ ls -l
     tako$ rm pop.auth~
     tako$ exit
     ika$ rm pop.auth

==== phase 3  14:00 - 15:00

ika の設定変更

  * dns (納多)
    * takoのセカンダリに設定
       ika$ cd /usr/local/bind/etc/
       ika$ cp -r namedb/ namedb-20080825
       ika$ cd namedb
       ika$ vi named.conf

      zone "ahs.scitec.kobe-u.ac.jp"で始まる行以下を次のように変更.

        zone "ahs.scitec.kobe-u.ac.jp" {
                type slave;
                file "slave/ahs.zone";
                allow-query { any; };
                masters {
                       133.30.109.21;
                };
        };
        
        zone "epa.scitec.kobe-u.ac.jp" {
                type slave;
                file "slave/epa.zone";
                allow-query { any; };
                masters {
                       133.30.109.21;
                };
        };
        
        zone "0/25.109.30.133.in-addr.arpa" {
                type master;
                file "slave/ahs.rev";
                allow-query { any ; } ;
                allow-transfer {
                         133.30.104.1 ;
                } ;
        };

    * named-checkconf named.conf を実行してフォーマットをチェック.
    * 要らないファイルを消す.
       rm epa.zone ahs.zone epa.zone epa.zone.bk \
       PROTO.* named.root.old-20080521 *.BAK make-localhost
       rm -r work localhost-v6.rev
    * slave ディレクトリを作成, パーミッションを bind:bind にする.
       ika$ cd /usr/local/bind/etc/namedb/
       ika$ mkdir slave
       ika$ chown bind:bind slave
    * 移行が終ったら起動
       /etc/rc.d/bind restart

  * qmail (中本)
    * 外から来たメールを受け取らないように, and
      ログメールを飛ばすのに必要な設定だけにするため,
      /var/qmail/control 以下の locals, rcpthosts を以下のように
      変更する. 移行が終わったら起動する.

      * locals, rcpthosts (両方とも中身は同じ)

          localhost

  * 再起動しても以下のサービスが立ち上がらないようにする.
    * http (https), pop3
      * apache2, openbsd-inetd に関して,
        以下のコマンドによって OS が起動する際に立ち上がらないように
        しておく.
        <service> には上記のサービス名を与える.

          # cd /etc/init.d
          # update-rc.d -f <service> remove
          # chmod 644 <service>

      * 余談だが, これら停止したサービスを再開する場合には,
        以下のようにするとよい.

          # cd /etc/init.d
          # update-rc.d <service> defaults
          # chmod 755 <service>

    * 確認作業
      * 再起動を行い, ps aux コマンドで停止したはずのサービスが
        立ち上がっていないことを確認する.


takoの設定を変更

  * ika⇔tako のデータ共有を立ち上げるようにし, tako⇒ika へ
    データを送るようにする. (中本)

    * 作業自体は, Hiki 上のものを参考に行った.
      (特に再構築において追記すべき事項はなし).

  * dns (納多)
     tako$ cd /usr/local/bind/etc
     tako$ cp -r namedb namedb-20080825
    要らないファイルを消す
     tako$ rm epa.zone.bk PROTO.* named.root.old-20080521 *.BAK make-localhost
     tako$ rm -r work localhost-v6.rev
     tako$ vi named.conf
    allow-transfer に新しいセカンダリである133.30.109.22 (ika) を追加.

     zone "ahs.scitec.kobe-u.ac.jp" {
             type master;
             file "ahs.zone";
             allow-query { any ; } ;
             allow-transfer {
                     133.30.109.22 ;
                     133.30.104.1 ;
                     133.3.8.211 ;
             } ;
     };
    
     zone "epa.scitec.kobe-u.ac.jp" {
             type master;
             file "epa.zone";
             allow-query { any ; } ;
             allow-transfer {
                     133.30.109.22 ;
                     133.30.104.1 ;
             } ;
     };
    
     zone "0/25.109.30.133.in-addr.arpa" {
             type master;
             file "ahs.rev";
             allow-query { any ; } ;
             allow-transfer {
                     133.30.109.22 ;
                     133.30.104.1 ;
             } ;
     };

    * ゾーンファイルの修正.    
      * ahs.rev,ahs.zone,epa.zoneのシリアルを更新.
    * epa.scitec.kobe-u.ac.jp が tako を指すようになっていることを確認.
    終わったら再起動する.
     tako$ /etc/rc.d/bind start

  * qmail (中本)
    * /var/qmail/control 以下の locals, rcpthosts を以下のように
      変更する.

      * locals, rcpthosts (両方とも中身は同じ)

          localhost
          tako.epa.scitec.kobe-u.ac.jp
          epa.scitec.kobe-u.ac.jp
          tako.ahs.scitec.kobe-u.ac.jp
          ahs.scitec.kobe-u.ac.jp
          tako.aoe.scitec.kobe-u.ac.jp
          aoe.scitec.kobe-u.ac.jp
          tako.cps.scitec.kobe-u.ac.jp
          cps.scitec.kobe-u.ac.jp

  * 以下のサービスが定常的に立ち上がるように設定する.
    * http (https), dns, tcpserver (smtp), inetd (pop3)

    
gradis の設定を変更 (納多)

  * gradisの指す{epa,cps,aoe}.scitec.kobe-u.ac.jpのネームサーバを
    ika の IPアドレス(133.30.109.22) から
    takoの IPアドレス(133.30.109.21) に変更.

     gradis$ cd /var/named/
     gradis$ cp scitec.zone scitec.zone.20080825
     gradis$ vi scitec.zone

     ;; for 133.30.109.22 domain
     ; ahs
     ahs.scitec.kobe-u.ac.jp.        300 IN  NS      ika.epa.scitec.kobe-u.ac.jp.
     ika.epa.scitec.kobe-u.ac.jp.    300 IN  A       133.30.109.22
     ahs.scitec.kobe-u.ac.jp.        300 IN  NS      gradis.scitec.kobe-u.ac.jp.
     ; epa
     epa.scitec.kobe-u.ac.jp.        300 IN  NS      ns.epa.scitec.kobe-u.ac.jp.
     ns.epa.scitec.kobe-u.ac.jp.     300 IN  A       133.30.109.22
     epa.scitec.kobe-u.ac.jp.        300 IN  NS      gradis.scitec.kobe-u.ac.jp.
     ; aoe
     aoe.scitec.kobe-u.ac.jp.        300 IN  A       133.30.109.22
     ; cps
     cps.scitec.kobe-u.ac.jp.        300 IN  A       133.30.109.22

    を,

     ;; for 133.30.109.22 domain
     ; ahs
     ahs.scitec.kobe-u.ac.jp.        300 IN  NS      tako.epa.scitec.kobe-u.ac.jp.
     tako.epa.scitec.kobe-u.ac.jp.   300 IN  A       133.30.109.21
     ahs.scitec.kobe-u.ac.jp.        300 IN  NS      gradis.scitec.kobe-u.ac.jp.
     ; epa
     epa.scitec.kobe-u.ac.jp.        300 IN  NS      ns.epa.scitec.kobe-u.ac.jp.
     ns.epa.scitec.kobe-u.ac.jp.     300 IN  A       133.30.109.21
     epa.scitec.kobe-u.ac.jp.        300 IN  NS      gradis.scitec.kobe-u.ac.jp.
     ; aoe
     aoe.scitec.kobe-u.ac.jp.        300 IN  A       133.30.109.21
     ; cps
     cps.scitec.kobe-u.ac.jp.        300 IN  A       133.30.109.21

    として, その下のMXレコード

     aoe.scitec.kobe-u.ac.jp.        300 IN  MX      10      ika.epa.scitec.kobe-u.ac.jp.
     cps.scitec.kobe-u.ac.jp.        300 IN  MX      10      ika.epa.scitec.kobe-u.ac.jp.

    を

     aoe.scitec.kobe-u.ac.jp.        300 IN  MX      10      tako.epa.scitec.kobe-u.ac.jp.
     cps.scitec.kobe-u.ac.jp.        300 IN  MX      10      tako.epa.scitec.kobe-u.ac.jp.

    とする. シリアルを更新する.
    /etc/named.conf をまずバックアップ
     gradis$ cd /etc/
     gradis$ sudo cp named.conf named.conf.20080825
    /etc/named.conf の {ahs,epa}.scitec.kobe-u.ac.jpの
    ゾーン情報にあるmastersの IP 133.30.109.22 を 21に書き換える.
  
    終ったら再起動する.  
     gradis$ sudo /etc/init.d/named restart

電脳サーバの設定を変更 (森川)

  * /GFD_Dennou_Club/dc-arch/kobe/.ssh/known_hosts から,
    これまでの EPA サーバのホスト鍵を削除し, 再度アクセスして
    新 EPA サーバ (tako) のホスト鍵を保存する.


==== phase 4   15:20 - 16:00

移行チェック

  * tako
    * http: 表示できるか, hikiに書き込めるか, gate による
      登録や変更は可能か
      * tako の apache に mod_rewrite が install されていなかったので,
        モジュールを追加.
         # cd /usr/local/src/httpd-2.2.8/modules/mapper
         # apxs -c mod_rewrite.c
         # apxs -i -a -n rewrite mod_rewrite.la
      * 設定ファイルの編集.
        mod_rewrite rule を幾つかまとめて整理. 詳細は
        https://epa.scitec.kobe-u.ac.jp/~itpass/hiki/hiki.cgi?%5BEPA2008%5Dapache2%A4%CE%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB%A4%C8%C0%DF%C4%EA
    * pop: メールをとってこれるか
    * smtp: メールを出せるか, 受け取れるか
    * mailing list: メールが配送されるか
    * dns: 問い合わせに応じるか, 正しいデータを返すか
      * dig epa.scitec.kobe-u.ac.jp で133.30.109.21を返すか

  * ika
    * http: 無効
    * pop: 無効
    * smtp: submitは有効にするが, 受け取らない(要検討)
      * mail spool 内の再送待ちなどのメールを再送信するため, という
        意味もある.
    * dns: takoのセカンダリとして設定されていることを確認する
      * dig epa.scitec.kobe-u.ac.jp で133.30.109.21を返すか
      * /usr/local/bind/etc/namedb/slave 以下にゾーンファイルが
        できているか

=== 当日: 移行終了  16:00

* 終了報告を投げる. (森川)
  * 障害報告はitpass@ 宛まで, とする.
  * ssh でアクセスする際のホスト鍵が変更されていることをアナウンスする

=== 翌日

  * ika, tako, gradis の DNS の TTL を元に戻す. (村上)

    ika:
      変更なし.

    tako:
      1) /usr/local/bind/etc/namedb のバックアップとして
         /usr/local/bind/etc/namedb-20080826 を作成.
      2) /usr/local/bind/etc/namedb/{epa.zone,ahs.zone,ahs.rev}
         の$TTLを300から3600に変更. シリアル更新.
      3) 再起動.
      
    gradis:
      1) /var/named/scitec.zone のバックアップとして
         /var/named/scitec.zone.20080826 を作成
      2) /var/named/scitec.zoneに記載されているepa,ahs,aoe,cpsなどの
         レコードで指定しているTTL部分を削除(これでデフォルト値が
         使われる).
         シリアル更新.
      3) おまけ.
         /etc/named.confのバックアップとして/etc/named.conf.20080826
         を作成.
         /etc/named.confに書かれている 109.30.133.in-addr.arpa ゾーンの
         ファイル置場を /var/named/master/ahs/ahs.revから
         /var/named/master/epa/epa.rev に変更.
         実際の置場もそのように変更.
      4) 再起動

  * 追加事項

    * prefix.pl の設置

      cps 関連のメーリングリストに流れたメールの件名に番号を振るため,
      ((<prefix.pl|URL:http://epa.scitec.kobe-u.ac.jp/~itpass/epa/ml_prefix/prefix.pl>))
      を /usr/local/lib/prefix.pl に置く.

       ika:/usr/local/lib/prefix.pl

      を以下の 2 ヶ所に置いた.
      後者はドキュメントとして置いただけであり,
      以後のサーバ交代作業では不要である.

       tako:/usr/local/lib/prefix.pl
       tako:/home/itpass/ftp/epa/ml_prefix/prefix.pl

      パーミッションは 775 にする.

    * gate-db-to-ezmlm の設定

      /usr/local/gate/bin/gate-db-to-ezmlm を以下のように変更する.

       &#65279;--- /usr/local/gate/bin/gate-db-to-ezmlm       2008-07-31 12:19:21.000000000 +0900
       +++ gate-db-to-ezmlm    2008-08-25 16:55:29.000000000 +0900
       @@ -31,12 +31,13 @@
        #
        # 0. 実行ファイル, ドメインの指定
        #
       -$domainname='gfd-dennou.org';
       +#$domainname='gfd-dennou.org';
       +$domainname='epa.scitec.kobe-u.ac.jp';
        #$domainname='localhost';
      
       -$ezmlmlist='/usr/bin/ezmlm-list';
       -$ezmlmsub='/usr/bin/ezmlm-sub';
       -$ezmlmunsub='/usr/bin/ezmlm-unsub';
       +$ezmlmlist='/usr/local/ezmlm/bin/ezmlm-list';
       +$ezmlmsub='/usr/local/ezmlm/bin/ezmlm-sub';
       +$ezmlmunsub='/usr/local/ezmlm/bin/ezmlm-unsub';
      
        #
        # 0. エラー処理

=== 後日の片付け

移行作業に関連する作業を Hiki 上にまとめる.

=== 忘れていたため後から行ったこと

* sudoers ファイルから chikuwa? の情報を削除する.