Windows Azure Web サイト (WAWS) での DNS、A レコード、CNAME の使用
このポストは、11 月 21 日に投稿された A Records, CNAME and Using DNS with Windows Azure Web Sites (WAWS) の翻訳です。
編集メモ : 今回は、Windows Azure Web サイト チームのプログラム マネージャーを務める Erez Benari の投稿をご紹介します。
Web サイトをセットアップする際、サイトに自分が所有するドメイン名を割り当てて実行することは欠かせません。既にご存知かもしれませんが、Windows Azure Web サイトは共有層と標準層の両方でサイトをホストできます。しかし、DNS の構成は、特にドメイン登録者があまり協力的でない場合は、熟練度の低いネットワーク技術者にとって少々厄介です (現実的に考えると、わずか年間 10 ドルですべてを任せてしまおうというのは虫が良すぎる話です)。今回は、Web サイトの DNS を構成する際に知っておくべきいくつかの重要な用語とメカニズムについて解説し、すべてをスムーズに実施するための方法を説明します。この記事では、次の要素について取り扱います。
- DNS ゾーン
- DNS サーバー
- DNS エントリ
- CNAME レコード
- A レコード
DNS の基本
ドメイン ネーム システム (略称 DNS) は名前を IP アドレスに解決するメカニズムで、わざわざ IP アドレスを覚えていなくても Web サイトの名前を入力するだけでそのページを表示できるようにするものです。Web サイトをセットアップするときには、65.55.58.201 や 2607:f8b0:400a:0803:0000:0000:0000:1006 というような数字で構成された IP アドレスが割り当てられます。しかし、このような数字 (特に長さが長い場合) は、覚えるのも入力するのも大変で現実的ではありません。DNS は数千のサーバーが実施している世界的なサービスで、ユーザーがブラウザーにアドレスを入力すると、アクセス先の Web サイトの IP アドレスが提供されます。この処理は、ドメインの名前解決と呼ばれます。
通常、この処理はブラウザーがバックグラウンドで実行するので、ユーザーはそれを意識することはありません。しかし、必要に応じてこの処理を手動で実行し、確認することができます。これを行う場合、まず、スタート メニューでコマンド プロンプトを開きます。次に、PING コマンドの後に Web サイトの名前を指定して実行します。指定したサイトが存在する場合は、下記のように IP アドレスが表示されます。
(注: サイトによっては、上の例のように 4 つの応答が返されない場合があります。一部のサイトでは、セキュリティ機構によって応答がブロックされます。しかし、角かっこの中に表示されている IP アドレスは、Web サイトが存在する場合は必ず表示されます。)
Windows Azure Web サイトで自分の Web サイトをセットアップする場合 (この手順は Web サイトのホスティング プロバイダーによって異なりますが、ここでは Azure Web サイトの場合に限定して話を進めます) は、Azure が自動的に IP アドレスを割り当て、ユーザーはこのアドレスに対して Azurewebsites.net ドメイン内で名前を選択します。
ウィザードが終了すると、DNS は、ユーザーが選択した名前をこのサイトの IP アドレスとして解決するように「伝達」されます。この組み合わせは、DNS ゾーンと呼ばれる特別なデータベースに格納されます。この DNS ゾーンは、世界中のすべてのドメインが所有しています。Azure Web サイトで作成したサイトは、マイクロソフトが管理する Azurewebsites.net ゾーンに格納されます。
テストや開発の場合は Azure ゾーンで既定の名前を使用するだけで十分ですが、サイトを本番環境に移行する場合は、自身が所有するドメインを使用する場合が多いと思います。この手順を始めるには、まず世界中に存在する DNS プロバイダーのいずれかからドメイン名を購入します。DNS プロバイダーとしては、料金の手頃さと、Danica Patrick、Bar Refaeli、Jessie Heiman といった豪華スターの CM で有名な、北米の GoDaddy などがあります。
ドメイン プロバイダーからドメインを購入すると、プロバイダーのサーバーにそのドメインの DNS ゾーンが作成されます。DNS は、名前解決によってドメインを IP に変換する必要があるため、該当する IP に既に Web サイトを所有しているかどうかを確認します。所有していない場合は、通常、ドメインを「保留」しておくオプションを選択できます。これは、空のサーバーまたは一般的なランディング ページの IP アドレスをドメインに対して指定するものです (ランディング ページとは、ホストしている保留ドメインにサービスを提供する目的でドメイン プロバイダーが通常設置する特別なサーバーです)。既にサイトが存在する場合は、ドメイン プロバイダーがユーザーの DNS ゾーンに対して IP アドレスを指定します (この IP アドレスは、手順の中でユーザーが提供する必要があります)。プロバイダーがドメインの IP を指定することを、「DNS レコードを作成する」といいます。また、これによって作成されたレコードは、A レコードまたはホスト レコードと呼ばれます。
サイトの流動性
Azure Web サイトで Web サイトを作成すると、IP アドレスがそのサイトに割り当てられます。この IP アドレスは、既に先ほどご説明したように、指定したホスト名に対して PING コマンドを実行すると識別できます。また、必要に応じてユーザーがドメインを購入すると、この IP アドレスを指定する A レコードが作成され、それと同時に Azure に新しいドメインを通知する必要があります。クラウドでは Web サイトが複雑な方法で格納されているため、これが事態を複雑にする元となっています。
従来型の Web ホスティングに比べてクラウド環境が非常に優れている理由として、サイトが特定のサーバーに格納されているのではないという点があります。要求が送信されると、マイクロソフトが所有する多数の Web サーバーのうちの 1 つにサイトが作成されます。昔から Web のホスティングにかかわっている方には、これは常識外れなことに思われるかも知れません。しかし、事実、これがクラウドが優秀である理由の 1 つなのです。サイトが永続的なサーバーでホストされている場合、そのサーバーで障害が発生すると、サーバーが復旧するまでサイトにはアクセスできません。サーバーの復旧には通常、長い時間を要します。クラウドの場合は、サイトは稼働中のサーバーのいずれかに、必要に応じて動的かつ即座に作成されます。このため、サーバーに障害が発生した場合、Web サイトにアクセスするユーザーが気付かないほど迅速にサイトが他のサーバーに移動されます。このとき、サイトが動的にホストされているため、必然的に IP アドレスが任意のタイミングで変更される可能性があり、DNS に対して影響があります。
以上から、サイトに IP アドレスが割り当てられていて、それを簡単に見つけることができるとしても、ドメインがその IP アドレスを指定するような設定は避けていただくことを推奨します。詳しく説明すると、IP アドレスを指定するように DNS をハードコードすることは可能ですが、この IP は後から変更される可能性があります。そうすると、ドメインが指定している IP アドレスは既にサーバーに割り当てられていないため、だれかがこのサイトにアクセスしてもデータを取得できません。これを回避するために、CNAME というしくみが使用されます。
CNAME レコード
上記のような場合、サイトの IP アドレスはいつでも変更される可能性があるため、正規名 (Canonical Name: CNAME) と呼ばれるしくみを DNS で使用しています。ドメイン プロバイダーは、ドメイン購入者用の DNS ゾーンを作成します。既に述べたように、このとき通常は A レコードが作成されますが、その代わりに CNAME レコードを作成することもできます。CNAME レコードは、DNS サービスに対して、ドメインが指定している IP アドレスではなくもう 1 つの URL を伝達するものです。これは、食料品店で店員に低アレルギー性のおもちゃをどこで売っているかを尋ねたときに「向かいの店できくといいと思いますよ」という答えが返ってくるようなものです。
Azure 内にあるサイトの IP アドレスは変更される可能性があるため、CNAME を使用して、IP と同様に動的に対応可能な DNS の名前解決処理を中間に追加することが理想的です。これにより、ユーザーのカスタム ドメインをだれかが入力したときに、IP アドレスではなくユーザーの azurewebsites.net の URL に対して名前解決を実行するように DNS に伝達されます。その後、Azure のサーバーはユーザーの azurewebsites.net の URL に対して名前解決を実行し、IP アドレスを指定します。次の表は、2 種類の処理を比較したものです。
セットアップに関する大きな課題は、多くのドメイン プロバイダーが、クラウドへ移行しようとしている莫大な数のユーザーを抱えているということに起因しています。大手プロバイダーは、既にウィザードや優秀な編集ツールを作成して、ユーザーが必要な構成変更をできるようにしています。クラウドでの名前解決処理にはさらに多くの手順がありますが、バックグラウンドで即座に実行されるため、サイトの所有者や訪問者にはその影響はありません。実質的な違いは、ドメイン購入時にそのドメインに合わせて DNS を構成する必要があることだけです。
ご利用のプロバイダーがセルフサービス型のインターフェイスを提供している場合は、簡単に話が済みます。先ほど名前を挙げた GoDaddy の場合、非常に簡単なドメイン エディターが利用できます。CNAME をドメインに追加するには、下記の手順を実行します。
1.ご利用中のアカウントにログインします。
2.自分のドメインのページに移動します。
3.[DNS Zone File] タブを選択します。
4.[Edit] をクリックします。
5.ゾーン エディターで新しいタブが表示されます。[CNAME] ブロックで [Quick Add] をクリックします。
6.エイリアスに www を指定し、さらに Azurewebsites.net の URL を指定します。
7.画面右上の [Save Zone File] ボタンをクリックします。
8.以上で完了です。通常、操作完了後 1 時間程度で DNS が更新されます。更新後は、カスタム ドメインに対して PING コマンドを実行すると、名前解決処理が実行されて Azure サーバーの IP アドレスを確認することができます。
詳細について
日常的にドメインを購入したりサイトの移行作業を行う方は少ないので、この記事で説明した手順を実際に実行することはあまりないかと思います。今後必要になったときに備えて、この記事を保存しておくことをお勧めします。既に述べたとおり、ドメイン プロバイダーによって CNAME レコードのセットアップのしくみや手順は異なるため、詳細については個別に調査いただくようお願いいたします。