手軽にリージョンをまたいだ分散サイトシステムを構築できるMicrosoft AzureのTraffic Manager。Web Appsを対象として、独自(カスタム)ドメインとそのSSL証明書を割り当てる手順を説明する。特に作業の順序に要注意だ。
対象サービス:Microsoft Azure、Traffic Manager、Web Apps
Microsoft Azureには、複数のリージョンをまたいでサイトの負荷分散や性能向上、耐障害性向上を実現できる「Traffic Manager」という機能がある。
障害発生時のダウンタイムを減らすべく、このサービスを弊社のマップサービス「ロケスマWeb」などのバックエンドサーバに適用してみた(既存サイトに対して別リージョンの新サイトとTraffic Managerプロファイルを追加した)。その際、分かりにくかったりつまづいたりした点を説明していきたい。Traffic Manager自体については、次のドキュメントなどを参照していただきたい。
さて、Traffic Managerによる公開Webサイトの分散システムの構築手順は、大まかには次のようになる(動作確認は含めていない)。
本稿ではこのうち、5.のカスタムドメインとSSL証明書の割り当てに焦点を当て、具体的な手順と注意点を説明する。4.までの手順は既に完了しているものとする。また個々のWebサイトは同じAzureの「Web Apps」を前提としている。
通常、Web Appsのサイトにカスタムドメイン(例:www.example.jp)を割り当てるには、そのデフォルトのDNS名(<サイト名>.azurewebsites.net)あるいはIPアドレスとの対応を表すDNSレコードを設定する必要がある。
だがTraffic Managerの配下になるWeb Appsサイトについては、Traffic ManagerプロファイルのDNS名(<プロファイル名>.trafficmanager.net)と対象のカスタムドメインをひも付ければ済む。つまり、DNSレコードについてはサイトごとに1つずつ作成する手間は不要だ。
まずはTraffic ManagerプロファイルのDNS名を確認する。
ところで、既に公開中でユーザーにサービス提供中のWeb Appsサイトの場合、既にカスタムドメインのDNSレコードは「<サイト名>.azurewebsites.net」またはそのIPアドレスに名前解決されるように設定済みのはずだ。
いきなりこれをTraffic Managerに付け替えると、この時点で準備が整っていない各サイトがTraffic Managerを介してユーザーの目に触れる恐れがあり、好ましくない(適切に設定すれば既存サイトだけにアクセスを振り向けられるとしても)。
そこで、代わりに検証専用のサブドメイン「awverify」のCNAMEレコードをカスタムドメインのゾーンに作成する。
awverify.<カスタムドメイン名>. CNAME awverify.<プロファイル名>.trafficmanager.net.
これでもカスタムドメインとTraffic Managerプロファイルとのひも付けは可能だ。
上記の設定後、DNSの伝搬遅延を待たなくても、すぐに次のカスタムドメイン割り当てを実行できる。
次はWeb Appsにカスタムドメインを割り当てる。これは割り当て済みの既存サイトを除いて、サイトごとに1つずつ実施する必要がある。
SSL/TLSのためのサーバ証明書は、Traffic Managerプロファイルではなく配下の各サイトに1つずつ割り当てる必要がある。
Web Appsの場合、カスタムドメインを割り当てないと、そのドメイン用のSSL証明書も割り当てることができない(Azureポータルでそのドメインが選択肢として表示されない)。必ずここまでの手順を実施してから、次のSSL証明書の設定に進むこと。
Web AppsにSSL証明書を割り当てるには、あらかじめSSL証明書の発行およびWeb Appsへの登録が必要だ。その手順は、次のTIPSを参照していただきたい。
HTTPS接続を確認するには、例えばクライアントのhostsファイルでWeb Appsの該当サイトのIPアドレスとカスタムドメインをひも付けるレコードを加えてみよう*1。IPアドレスは前述のWeb Appsの[カスタムドメイン]設定画面に表示される。
後は普通にWebブラウザで「https://<カスタムドメイン名>/」を開くと、SSL証明書のエラーもなくWebページが表示されるはずだ。
*1 クライアントがフォワードプロキシ経由でインターネットに接続する環境だと、この方法では接続できない。プロキシを回避するか、プロキシ側で一時的に名前解決を変更する必要がある。
全ての準備と動作確認が完了したら、カスタムドメインの名前解決をTraffic Managerに付け替えて、ユーザーに公開してみる。
それにはカスタムドメインに対してCNAMEでTraffic ManagerプロファイルのDNS名を割り当てるよう、DNSレコードを修正する。
<カスタムドメイン名>. CNAME 300 <Traffic ManagerプロファイルのDNS名>.
手順は前述のawverifyサブドメインの場合と共通だ。設定したら、nslookupコマンドあるいはdigコマンドで名前解決を確認してみる。カスタムドメイン「www.locationsmart.org」の例を以下に記す。DNSの伝搬遅延後、このような名前解決に切り替わるはずだ。
C:\>dig www.locationsmart.org +noadditional +noauthority +nocomments +nostats
; <<>> DiG 9.10.5 <<>> www.locationsmart.org +noadditional +noauthority +nocomments +nostats
;; global options: +cmd
;www.locationsmart.org. IN A
www.locationsmart.org. 215 IN CNAME locasmaw2.trafficmanager.net.
locasmaw2.trafficmanager.net. 215 IN CNAME locasmawjw2.azurewebsites.net.
locasmawjw2.azurewebsites.net. 1715 IN CNAME waws-prod-os1-001.vip.azurewebsites.windows.net.
waws-prod-os1-001.vip.azurewebsites.windows.net. 224 IN CNAME waws-prod-os1-001.cloudapp.net.
waws-prod-os1-001.cloudapp.net. 47 IN A 138.91.16.18
「<プロファイル名>.trafficmanager.net.」が正引きされるようになったら、Webブラウザで「https://<カスタムドメイン名>/」を開いてみよう。
一見すると、従来の既存サイトと何も変わらないWebページが表示されるものの、実際にはTraffic Managerプロファイルによって選出されたサイトが応答しているはずだ。
Google Chromeなら、F12開発者ツールの[Network]タブで対象ページの「Remote Address」を参照すると、IPアドレスから実際の接続先サイトを特定できるだろう。
ネイキッドドメインとは、例えば「example.com」「example.co.jp」のように「www」などのサブドメインが付いていない、取得したドメインそのままの名前を意味する。
Traffic Managerではその仕組み上、カスタムドメインのDNS正引きを必ずCNAMEレコードで設定する必要がある(AレコードやAAAAレコードは不可)。だがDNSの仕様上、ネイキッドドメインに対してCNAMEレコードは設定できない。
よってネイキッドドメインはTraffic Managerでは利用できない。「www」付きドメインへリダイレクトする、といった対処が必要だ。
Web AppsのサイトをTraffic Managerの配下に組み入れる場合、その価格レベルはStandardかPremiumにする必要がある。Basicでは設定できないので事前に価格レベルをStandard以上にしておこう。
カスタムドメインを割り当てなくても、「http://<プロファイル名>.trafficmanager.net/」にアクセスすればTraffic Manager経由でのアクセスが可能だ。
だが、このドメイン名に対してSSL証明書は割り当てられておらず、HTTPSで接続すると証明書のエラーが発生する。
またtrafficmanager.netドメインはマイクロソフトが所有しているため、そのサブドメインに対応した公的なSSL証明書は発行してもらえない。
■関連リンク
Copyright© Digital Advantage Corp. All Rights Reserved.