メンテナンス中の設定

2021年4月6日

備忘録ですから、毎回迷う事を適当に書き残します。

昨日のサーバメンテナンスの時の、外部公開には、旧サーバを利用します。
コンテンツコピーとかだけなら、運用サーバでも出来るのですが、
何時もやってる丸ごとハードディスクコピーでは、ハードディスクを切り離すので、
サーバと止める必要があるからです。
おまけに、1Tのハードディスクを丸ごとコピーするには、3時間程度の時間が必要です。
そこで問題になるのが・・・・

1.ドメイン管理
2.メンテナンス中を表示するWebページ
3.メールの送受信

大体こんなもんでしょうか。
この中で、3番のメールの送受信に関しては、ドメインが管理出来ていれば、
メールサーバが停止しても、送信サーバのキューに残るだけで、再送を行ってくれます。
1番のドメインが消失してしまえば、破棄されますが・・・・

1.ドメイン管理(作業は、バックアップサーバで実施しています。)

namedの設定で、chrootを利用していない場合で尚且つ、rootで直接ネットログイン出来る場合。
アマアマな設定を想定・・・・普通ありえません。
普通に読み替えて下さい。

# rsync -avuz root@192.168.xxx.yyy:/etc/named.conf /etc/named.conf 
root@192.168.xxx.yyy password:【password】
# rsync -avuz root@192.168.xxx.yyy:/var/named/ /var/named/ 
root@192.168.xxx.yyy password:【password】

# systemctl restart named.service

192.168.xxx.yyy は現用サーバ、
このサーバを停止させてバックアップサーバに運用を切り替える作業です。

これで、ネームサーバを最新の状態に更新して再起動が完了しました。
普通は、chrootとか使ってると思うので、それなりの同期方法を行いましょう。
次に、表に出る部分、httpdのコンテンツを転送します。

2.メンテナンス中を表示するWebページ

/etc/httpd/conf/httpd.conf

DocumentRoot "/var/www/html"
<Directory "/var/www/html">
    # その他必要なオプション・・・
    AllowOverride All
    # AllowOverride は、.htaccessで上書きできる事を許可してます。
    Require all granted
</Directory>

/var/www/html/.htaccess に以下を記入

ErrorDocument 503 /maintenance.html

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{REQUEST_URI} !=/maintenance.html
  RewriteCond %{REMOTE_ADDR} !=192.168.xxx.zzz
  RewriteCond %{REMOTE_ADDR} !=192.168.xxx.www
  # 192.168.xxx.zzz 及び、192.168.xxx.www のみ普通のトップページが出るはず・・
  RewriteRule ^.*$ - [R=503,L]
</IfModule>

<IfModule mod_headers.c>
  Header set Retry-After "SAT, 3 Apr. 2021 22:00:00 JST"
  # いつ頃終わるかお知らせしましょう。
</IfModule>

/var/www/html/maintenance.html を作成する。

この辺は、お好みでどうぞ!
仕事関連のサイトなら、それなりに、趣味のページなら適当に。

ErrorDocument 503 で、レスポンスステータスコード503を返して、表示コンテンツは、
/maintenance.html となります。
HTTPのレスポンスステータスコードに関しては、ググれば一発!

最後に、サーバを切り替えるのは、Firewall(ルータの場合もあります)で行います。
メンテナンス対象のサーバから、バックアップサーバへ、最低限の転送ポートを変更します。

http(80)および、https(443)のTCP
それと、namedの利用ポート
domain(53)のUDP及び、TCP
通常は、UDPで処理してますが、たしかゾーン転送はTCPじゃなかったかな?
念のため、TCP,UDP共転送しましょう。

SSGシリーズなら、MIP設定を変更。
Frotigateシリーズなら、バーチャルIPをイジります。
ルータのRTXシリーズとかなら、
nat descriptor masquerade static 1 5 192.168.xxx.yyy udp domain
nat descriptor masquerade static 1 6 192.168.xxx.yyy tcp domain
nat descriptor masquerade static 1 7 192.168.xxx.yyy tcp www
nat descriptor masquerade static 1 8 192.168.xxx.yyy tcp https
このあたりを、
nat descriptor masquerade static 1 5 192.168.xxx.bbb udp domain
nat descriptor masquerade static 1 6 192.168.xxx.bbb tcp domain
nat descriptor masquerade static 1 7 192.168.xxx.bbb tcp www
nat descriptor masquerade static 1 8 192.168.xxx.bbb tcp https
とかに変更する感じでしょうか・・・・
RTXシリーズとかだと、上記設定を上書きして、saveせずに運用。
メンテナンスが終わったら、サーバ切替と同時にルータを再起動させれば元に戻りますね。
連続運用機器も、たまには再起動させてやるとスッキリ安定する場合があります。
Windowsサーバあたりは、特に定期的メンテナンスと再起動は必要でしょう。