わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

サーバリプレース

研究室(というか自室)に置いている,メールサーバ兼Subversionサーバを,物理的に交換しました.
サーバといっても,OSなしのデスクトップPCを購入して,Ubuntuをインストールしたというだけのものです.それと,Subversionサーバとしては学生からのアクセスもあります(共有を意図して,運用しています)が,メールサーバ(SMTP, IMAP)は自分専用です.
かつて読んだ本には,カーネルの再構築をして,リブート(再起動)の前に緊張すると書かれていました.いまやカーネルの再構築をすることがなくなりましたが,サーバリプレースは昔も今も,緊張の一瞬です.
緊張を和らげ,失敗を少しでも減らすために,作業の前にToDoリストを作っていました.公開します.
前提として,リプレース前のサーバを「旧機」,後のサーバを「新機」と略記しています.リプレース作業により,それぞれのIPアドレスを交換します.Subversionサーバは,Apacheとdav_svn*1で構成しています.

  1. 旧機:postfix, dovecotを停止
  2. 新機:postfix, dovecotを停止
  3. 新機:rsyncで~/Maildirを同期
  4. 旧機:LANケーブルを外す
  5. 新機:IPアドレスを変更
  6. 新機:/etc/{mailname,hostname,hosts}のホスト名を変更
  7. 新機:/etc/postfix/main.cfを変更
  8. 新機:/etc/apache2/sites-availableを変更
  9. 新機:apache2を再起動
  10. 新機:リポジトリ更新確認
  11. 新機:再起動
  12. 新機:IPアドレス,ホスト名,メール受信の確認
  13. 旧機:IPアドレスを変更
  14. 旧機:/etc/{mailname,hostname,hosts}のホスト名を変更
  15. 旧機:/etc/postfix/main.cfを変更
  16. 旧機:LANケーブルを差し込む
  17. 旧機:再起動
  18. 旧機:IPアドレス,ホスト名の確認

いくつか,補足を.rsyncによるディレクトリ同期は,トラブルが起こりやすいところです.コマンドを間違うと,~/Maildir/Maildirができることもあります.今回は新機のシェル上で,次のようにコマンドを実行しました.rsyncコマンドのコピー元・コピー先の両方を「/」で終わらせるのが重要です.

$ mkdir ~/Maildir
$ rsync -avz ユーザ名@旧機:Maildir/ ~/Maildir/

旧機の設定変更は,IPアドレス・ホスト名のほか,メールサーバ関連のほうを行い,Subversionを含むWeb関連については,そのままとしました.何かあってHTTPのアクセスをする可能性もある一方で,メールは送受信が絡むためです.
「新機:リポジトリ更新確認」は何かというと,実はSubversionリポジトリを,このリプレース作業の前に,rsyncコマンドでコピーしていたのでした*2.そこで確認として,それより前から使っていた作業コピー上で,svn updateコマンドを実行しました.

*1:apt-get install libapache2-svnでインストールし,/etc/apache2/mods-available/dav_fs.confを編集しておきました.

*2:普段使っているユーザが読み書きできるよう,パーミッションを変更してから,rsyncコマンドで転送し,新機でchown -Rを使って,ファイルの所有者を設定しました.