2010/11/14

ReverseProxyでまじめにWEBサイト引越し(1)

WEBサイトを引越しする際、DNSのAレコード切り替え中に旧サイトを参照されると困る。
(MXとSPFは別の機会にする)
特に新旧サイトでCMSが違うとか根本的に変更されていて、指定時間に公開する予定の場合、
DNSに依存するとマズイ。
対応としては、

  1. 新サイトは、httpd.confでDirectoryディレクティブでギリギリまで旧サイトを運用する。
    定時になったら、httpd graceful で新サイトに切り替える。
  2. 新サイトは、ギリギリまでReverseProxyで旧サイトを引っ張ってくる。
    定時になったら、Proxy設定を外す。
案1は、新旧コンテンツが衝突するコンポーネントを持つ場合は無理がある。
DBとかインフラが問題になると面倒。
grep一発で切り替え可能であれば、まずまずな方法。
とはいえ、特殊な仕組みを追加する必要もなくてお手軽。
でも...旧サイトと各種OSコンポーネントのバージョンが同じでないと新サイトのインフラがカオス化する恐れ有り。
Java/PHP等でセッションに依存するロジックがあるとやれば出来るけど、色々と大変。

案2は、新サイトと旧サイトが物理的に分離されている為、コンポーネント衝突やインフラ差異による問題はほぼない。
でも...ReverseProxyの為に別途機能追加が必要、かつhttpd graceful的な切り替えが出来ない場合がある。

諸般の都合で案2を試す。
構成的には、

  • HTTP ->  varnish -> httpd
  • HTTPS -> Pound -> httpd
とする。
Poundはキャッシュが使えない、でもvarnishはSSLを扱えない。
Pound外してhttpdに直接送ってもいいけど、両Proxyを使ってディザスタリカバリーを見据え、
DNSRR(ラウンドロビン)でアクティブサーバーが生きている内にウォームスタンバイ用サーバーに来たら、アクティブサーバーを引っ張ってる構成の検証するために採用した。
DRBD的な構成が出来れば簡単だろうけど、VPSとかレンタルサーバーではまず出来ないので。
スプリット・ブレインはとりあえず無視しして、まずはPoC。

0 件のコメント: