しばやん雑記

Azure Serverless とメイドさんが大好きなフリーランスのプログラマーのブログ

Windows Azure Web サイトで独自ドメインを設定している場合にリージョン移動をスムーズに行う方法

Windows Azure の日本ジオ(主要地域)が間近ですし、既に東アジアの Web サイトで稼働しているサービスを東日本への移行を考えている方も多いのではないでしょうか。

残念ながら Web サイトのデフォルトドメインで稼働させているサービスの場合はダウンタイムを避けられませんが、独自ドメインを設定している場合には割とスムーズに移行する方法があったので、今日はそれを紹介します。

注意点としては凄く裏技っぽい方法なので、急に使えなくなったりするかもしれません。

移行先 Web サイトの作成

まだ日本ジオは稼働していないので、今回は米国西部から東アジアへの移行を行うことでシミュレーションしてみます。移行先の Web サイトは特に難しいこともなくサクッと作成してもらえれば大丈夫です。

作成後はこのような感じになっているはずですね。今回、移行元の Web サイトには A レコードで colorsapp.net と CNAME レコードで www.colorsapp.net という二つのドメインを設定してあります。

nslookup の結果や DNS レコードの状態は以下のようになっています。

現在、当然ながら A レコードと CNAME レコードでは米国西部の IP アドレスと URL を指していますね。一応アクセスしておくと、デフォルトページをリージョンがわかりやすいように改変しておきました。

同じように東アジアの Web サイトもデフォルトページを改変しておきました。

移行先 Web サイトへドメインを追加

そしてここからが作業自体のミソなのですが、移行先の Web サイトにて既に移行元で設定済みのドメイン 2 つを追加してしまいます。

何ということでしょう、A レコードの IP アドレスや CNAME で指定済みの URL は異なっているのですが、チェックを普通にクリアしてしまいます。これを利用することで DNS レコードを修正するだけで、ダウンタイムを発生させることなくスムーズに移行が出来るというわけです。

設定完了後にポータルから見ると以下のような感じです。

異様な光景ですが、管理ポータル上では特にエラーもなく作業が完了します。しかし、イレギュラーな方法ではあるようで、REST API から同様の処理を行おうとするとエラーになってしまいました。

DNS レコードの修正

先ほどの設定で米国西部と東アジアで同じドメインを受け入れ可能となりましたので、DNS レコードを米国西部から東アジアを向くように修正を行います。

awverify.colorsapp.net の CNAME レコードは修正しなくても問題ないと思いますが、一応念のために同じように修正しておきます。

これで DNS の変更が反映されていけば、東アジア上の Web サイトへリクエストが投げられるはずですね。

反映を確認

適当に nslookup などを叩いて IP アドレスが変化したタイミングで、もう一度ドメイン名を指定してアクセスしてみます。ブラウザが DNS 問い合わせ結果をキャッシュしているので、一度プロセスごと終了させてから確認するのが良いです。

同じドメイン名ですが West US 表記から East Asia 表記に変わりましたね。これで米国西部から東アジアへの Web サイトの移動が完了しました。

サーバ自体は移行中も米国西部と東アジアで独立して同時に動作しているので、切り替わり時に DNS 反映待ちなどでのダウンタイムは発生していないはずです。

移行元 Web サイトの削除

最後に DNS の変更がほぼ反映終わったタイミングなどで、不要になった移行元 Web サイトを削除すれば全て完了ですね。

実際のところ、同じドメインを別々の Web サイトに登録する部分が非常に怪しいと思っているのですが、日本ジオの稼働開始までは潰さないで欲しいところです。

この記事を読んでリージョンの移動が成功した人は、今度会ったときにコーラを奢ってください(