【AWS】Route53って結局何なの・・・?

どーも!

たかぽんです!

今回はAWSのお話しをす時、たびたび出てくるんですが、"Route53"という謎のやつ...

これについて腑に落ちるまで調べてみようと思います...!

Route53って結局何なの・・・?

さて、今回Route53について調べていくんですが基本は公式のページにそってみていこうと思います。

最初にいきなり定義がされていますね。

Amazon Route 53 は、可用性と拡張性に優れたドメインネームシステム(DNS)ウェブサービスです。Route 53 を使用すると、ドメイン登録、DNS ルーティング、ヘルスチェックの 3 つの主要な機能を任意の組み合わせで実行できます。

Amazon Route 53

可用性はサービスがずっと利用可能であり、拡張性は様々な機能の追加などができるといったニュアンスでしょうか。

そんなドメインネームシステムですよ〜と。

DNSといえば皆さんご存知IPアドレスとweb上のアドレスを紐づけてくれるやつですね。

そして、その後に以下の3つの主要な機能があると書かれています。

  • ドメイン登録
  • DNSルーティング
  • ヘルスチェック

次節からは上記を一つづつみていこうと思います。

ドメイン登録

先程、DNSである旨を書きましたが、DNSの基本機能として、IPアドレスに対応するドメインを登録することができます。

これはRoute53だけでなく、別のサービスでも行うことができます。

詳述は避けますが、私が使っているXserverや、お名前ドットコム...といったレジストラ(正式に登録の代行をしている)と読んだりします。

今このサイトは"tektektech.com"というドメインを登録して、そのURLがきた場合、この記事のデータなどを配置しているサーバーへアクセスできるようになっています。

その際、本サイトもお名前ドットコムにてドメインを取得(登録)し、そこからドメインの登録を行いました。

そのため、もともとドメインをまだ持っていないWEBサービスなどはこのドメイン登録から行っていく必要があります。

ちなみに、僕のように別のレジストラでドメインをすでに取得している場合...

ドメインを移管することによってそのドメインを引き継いで使うことが可能です。

そのため、お名前ドットコムで登録したドメインだけど、Route53へ移管して、ドメイン管理もAWSで...といったことも可能なわけですね。

移管に関しては以下などで説明がされています。

DNSルーティング

次に、DNSルーティングです。

これはDNSの基本的な機能ですね。

ユーザーがウェブブラウザを開き、ドメイン名 (example.com) またはサブドメイン名 (acme.example.com) をアドレスバーに入力したときに、Route 53 はブラウザをウェブサイトまたはウェブアプリケーションに接続するための支援を行います。

Amazon Route 53

上記のように説明されていますが、そのままで、例えばブラウザを開き、"tektektech.com"をアドレスバーに入力した時、僕のブログ記事が表示されるよう、その情報があるサーバーへお問い合わせしてくれるわけです。

その際にDNSサーバーが"tektektech.com"というURLアクセスをされたら、アクセスが必要なブログ情報を持つサーバーのIPアドレスに変換してくれて、そこへアクセスするようになります。

ざっくりと説明すると、ちゃんとそういったことが行えるようにすることをDNSルーティングを行う...等と行ったりします。

リソースの正常性のチェック

そして、最後がリソースの正常性のチェックです。

これがどういうことか・・・?というと、ここでいう"リソース"とは、先程の僕のブログで例えると、僕のブログのデータが"リソース"です。

そのため、僕のブログの情報が入ったサーバーへアクセスするのはいいけど、もし僕のブログの情報が存在していなかったり、問題があってアクセスできない可能性があります。

そんな時に、あらかじめそういったリソースがちゃんと思った通りに動作しているかを監視することができるわけです。

より詳細については以下で解説されています。

ヘルスチェック...というのは要は健康診断ですね。

ここでは人ではなく、リソースの状態が健康か?(=システムの挙動に以上はないか?)をチェックすることをヘルスチェックと呼んでいるわけですね。

上記の3種のヘルスチェックの詳細をみていただければわかりますが、ユーザーがページを表示する際に行うリクエスト(本ブログの表示ならGETリクエストを"tektektech.com"に対して行う...等)を設定して、Route53側でそのリクエストを行い、正しい答えが返ってくるかどうかを設定することが可能です。

そして、DNSフェイルオーバーの設定...と言うものがありますが、このフェイルオーバーとは、"何かしらシステムが正しく動かない場合、代替の同じ動作をするシステムに一時的に切り替えて、あたかもシステム全体の動作としては問題がないようにふるまうようにすること"です。

僕のブログを例にすると...

今皆さんはこの記事へアクセスした場合、問題なくアクセスできると思います。

ただ、Xserverの僕のブログのデータを保持するサーバーで何かしらの障害があったとしましょう。

そうすると、きっとアクセスできなくなってしまい、何かしらのエラーが帰ってきます。

概念図は以下です。

そうなると、記事をみたいユーザーはサーバーが復旧するまで僕の記事を読めません。

次に、僕の記事のデータを先程の障害が発生したサーバーと別のサーバーにもまんまコピーして保持しておきます。

そして、先程のように一つのサーバーでは障害がおき、エラーが帰ってきた場合に別の予備のデータを保持するサーバーのIPアドレスへアクセスするようにしておけば、一方が障害になっていてもユーザーには影響がないわけです。

概念図は以下です。

最初はサーバーAをみに行きますが、問題があればサーバーBをみにいく...といったことができるわけです。

より詳細を知りたい方は以下をご参考ください。

以下の説明によると、基本的には障害時の対策が中心ではありますが、例えばユーザーのアクセス速度を早くしたい...といった場合にも、そのユーザーの位置に合わせてもっとも早くアクセスできる、近いサーバーへアクセスするような設定もできるようですね。

極端な例ですが、日本に住んでる僕があるWEBページへアクセスする場合、そのリソースがブラジルのサーバーと日本のサーバーにそれぞれあったとします。

その場合、明らかに日本のサーバーへアクセスした方がいいですよね。

もちろん、全てのサーバーが同時に落ちてしまった場合...などは結局見れなくなってしまうので、どうしても止めてはいけないようなサービスならなおさら助長な構成(予備のサーバーをたくさん用意)にしたりするわけですね。

まとめ

さて、今回はRoute53というものが一体何なのかを調べていきました。

今回はあくまで概要部分のみ触れたのですが、より詳しく...

と言う場合は是非以下の記事を熟読してみてください。

筆者もまだしっかり読めてないので後で読もうと思います...!

AWS系のサービスは大抵"よくわからん"ですよね...w

僕も聞いてはいるものの結局ECSって?lambdaって?Cloud Frontって?といった具合なので、時間があればしっかり学んでいこうとおもいます...

それでわ!

おすすめの記事