トップ «前の日記(2006年08月26日) 最新 編集

のろのろのろ雑記


2006年08月27日 UPnPでサーバーメンテナンス中もレスポンスを返す方法(条件付)

_ [PC][Web]UPnPでサーバーメンテナンス中もレスポンスを返す方法(条件付)

まえがき

 いわゆる「自宅サーバ」を構築・運営されている人はそう多くないと思います。p2pquake.ddo.jpも1台で細々と運営しています。

 が、サーバのメンテナンスが必要となった場合、メンテナンス中はアクセスを受け付けられません。「複数台でロードバランサ構成組んでるぜ!」と言う人には問題ありませんが、そうでない人にはちょっと困った問題です。DDNSのオフライン転送機能はDNSキャッシュ等の影響で待たされるし、独自サービスは転送出来ない。特に「P2P地震情報」がベータ2だった頃は、1台のサーバでピアのコネクションを全て管理していたので、(再起動の数分間でも機能が機能なので)切実な問題でした。

 …などと悩んでいたところ、「ルータのアドレス変換で別のマシンに飛ばす」という方法を思いつきました。が、設定を変更するとTCP/IPセッションが全て切れてしまう(らしい)謎のルータで、これは使えません。

 そこでテレビショッピングのごとく登場するのがUPnP。ルータの再起動やTCP/IPセッション断もなく動的にアドレス変換が出来ちゃうスグレモノ。これを使ってサーバへのアクセスを別のマシンに振ってしまえば、サーバを再起動しても別のマシンからレスポンスが返せる… というわけです。

方法 - 用意するもの

  • メンテナンスするサーバ
  • UPnPのアドレス変換を優先するルータ(例:WHR-G54S)
  • メンテナンス中に稼動出来そうなマシン(サブサーバと呼びます)
  • UPnPCJ(梅と葡萄と林檎園)

方法 - 手順

  1. サブサーバに必要なソフトウェアやデータを突っ込み、稼動。
  2. UPnPCJを使い、サブサーバにアクセスを振る(ポート開放)。
  3. サーバをメンテナンス。
  4. UPnPCJで、アクセスを振ったのを削除(ポート閉鎖)。またはサーバにアクセスを振る。
  5. サブサーバの稼動終わり。

それだけ。

 単純に「メンテナンス中」と返すもよし、全データをミラーしてメンテナンス中と思わせないもよし。あるいは、面倒なのでメンテナンス中はどうでもいいや、と開き直るもよし。