1. はじめに
SBクラウド エンジニアの南(cjnan)です。 最近、旅行関連のWebサービスを稼働中のお客さんから、下記のようなご相談をいただいたので、みなさまにも共有したいと思います。
お客様:「現在稼働中のWebサービスが最近好調でアクセス数が増えてきている。調べたてみたら、どうやら中国からのアクセスが多い様子。そこで、中国にもサーバを新設しようと検討しているが、できれば日本と同じURLで稼働させたい。こんなことできますか?」
グローバルのWebサービスを展開する時、よくあるパターンとして、各地域にサーバを設置し、ホスト名を別々にするパターンがありますが、UX(User experience)的にもよくないです。
そこで、この課題を解決する方法として、今回はクラウドでWebサーバのGEO DNSソリューションを紹介します。
2. GEO DNSとは
GEO DNSとは、地理データベースと接続元IPアドレスを照合しクライアントに地域ごとの異なるIPアドレスを返すDNSです。 GEO DNSを利用することで、グローバル展開を行うサービスなどでは、どの地域のユーザーにも最大限 のパフォーマンスでサービスを提供できます。ユーザーから近いサーバに接続させる方法でアクセスを分散することもできるし、長距離によるレスポンス遅延問題も改善できます。また、エンドポイント(URLやホスト名)が一つに集約できるため、システムの設計も容易になります。
3. 「Route53」概要
GEO DNS機能を提供してくれるのが、AWSのRoute53です。 Route53には、レイテンシールーティング(Latency Routing)というクライアントに一番近いリージョンのIPアドレスを返す機能がよく使われますが、本ドキュメントのテーマであるGEO DNS機能はインターネットのネットワーク構成に拠らない、精度の高いレコードの区分けが特徴です。また、レイテンシールーティングはリージョン単位での振り分けに対して、GEO DNSでは国や州などより細かい振り分けが可能です。
Route53と一般的なDNSサーバとの違いは、以下の3つ。
- Healthchecker機能が付いている
- Fail over機能が付いている
- 設定作業がAPI経由ででき、プログラムによってダイナミックに設定変更ができる
では詳しい設定内容を紹介します。
Route53には、振り分けパターンを決定する「ルーティングポリシー」を設定できます。
- Simple:一般的なDNSと同じ方法です。
- Weighted:重みによってIPの分けてくれるルールです。例えば、IP1の重みはx、IP2の重みはyの場合、Route53からIP1に分ける数全体のx/sum(x, y)です。
- Failover:ロードバランサのやり方と同じように、常にHealthchecker で死活監視し、ダウンしたサーバにアクセスしないように自動調整するルールです。
- Latency:名前の通り、レイテンシーが一番小さいサーバに指定します。ここのレイテンシー基準はリージョンになります。
- Geolocation:アクセス請求側の国や地域などの地理情報によって近いサーバのIPを返すルールです。
ご参考までに、下図は「Latency」を設定した際の画面です。
4. 日中間GEO DNSソリューション
ここでまず、下記のようなシナリオを想定しましょう。
日本:Alibaba Cloudの日本リージョンからVMサービスECSを購入し、日本のクライアントに対してWebサービスを展開しています。
中国:中国からのアクセスが増えて来て、Alibaba Cloudの上海リージョンからVMサービスECSを購入し、中国国内のクライアントに日本と同じサービスを展開する予定です。
課題:日本で今まで使って来たURLで、中国でもサービスを提供したい。国レベルでアクセス分けたい。
ではRoute53の詳細設定を紹介します。
- AWSのコンソール画面を開き、「Route53」を選択し、「パブリックホストゾーン」を作成します。
ここで入力するURLはWebサービスのURLなので、今まで日本で使われていたURLと同じです。
- 作成した「ホストゾーン」に「レコードセット」を設定します。 ここでは、日本リージョンのサーバと上海リージョンのサーバの、2個のレコードを作成します。 この際、上記で触れた「ルーティングポリシー」を設定します。 地理「Geolocation」に設定し、中国サーバはロケーションを「China」に、日本サーバは「Default」にします。このように設定した場合、中国以外のクライアントは全部「Default」の日本側に接続されます。
これで、Route53のGEO DNSの設定が簡単に終わりました。
5. まとめ
本ドキュメントでは、AWS Route53のGeolocation機能を使った日中間GEO DNSソリューションを紹介しました。Route 53は可用性も非常に高く、Alibaba Cloudを含め、他社クラウドのVMサービスとも相性が良いので、GEO DNSソリューションとしてRoute 53を検討していただけるとよいかと思います。
余談:「Route53」の名前の由来
ところで、「Route53」というの名前ですが、初めて見たとき「何でRoute53の名前なんだろう」と疑問に思いました。そこで、Quaraで名前の由来を探して見たら、実はアメリカに古い歴史がある「国道66号線(Route66)」高速道路の名前を取ったようです。(←ほんと??)DNSサービスはTCP/UDPの53番ポートを利用しているから、ネットの53番道路でクライアントを目的地まで運ぶ意味で「Route53」に決めたんです。興味ある方はWIKIなどで「国道66号線」を検索してみてください。