ソリューションアーキテクト対策_Route53篇

## はじめに
試験勉強した際のメモを自分用に記事化。
内容は公式やBlack Beltの写経ですので目新しいことはありません:pray:

## 参考にさせて頂いた記事
ルーティングポリシーはこの記事がものすごくわかりやすかったです！
一部写経させて頂きました、この場を借りてお礼申し上げます。

https://o2mamiblog.com/aws-route53-routingpolicy-beginner/#toc7


## Route53
### エイリアスレコードとは
エイリアスレコードはAWS内(Zone)でのみ使えるAレコード。
CNAMEとほぼ同等の動きをするが、エイリアスの方がAWSのサービスと親和性が高かったりするのでメリットが多い。
以下が詳しいので読むべし。
https://dev.classmethod.jp/articles/amazon-route-53-alias-records/

エイリアスレコードを使うと、AWSサービス(CloudFrontやELB、S3バケットやElastic Beanstalk環境)との紐付けができるようになる。
よってDNSクエリにAWSサービスのエンドポイントのIPアドレスを返答することで、AWSリソースにドメインを設定できる


### Route53のルーティングポリシーあれこれ
#### 1.シンプルルーティング
1つのレコードに対し、1つのIPアドレスを返すようにルーティングするポリシー。一般的なDNSの設定。
複数のIPアドレスを1つのレコードに設定することもできる。
その場合はランダムなIPアドレスにルーティングされるようになる。

また、トラフィックを複数インスタンスにランダムに分散させる。いつも使っているやつ

#### 2.フェイルオーバールーティング
メインに障害が発生した場合に自動でサブにルーティングするポリシー。
ラウンドロビンはリソースを順番に利用すること。

フェールオーバーには以下の種類がある。

・フェールオーバー(アクティブ/パッシブ)
Route53はプライマリリソースをアクティブなリソースとしてルーティングする。
障害が発生したらセカンダリにルーティングする。

・フェールオーバー(アクティブ/アクティブ)
Route53は複数のリソースをプライマリとしてルーティングする。
障害が発生した場合、正常なリソースにフェールバックする。

この仕組みを利用して、Route53でDR環境の構築もできる。コールドとウォームを切り替えたり。
具体例：https://dev.classmethod.jp/articles/route-53-dns-failover-ec2/

#### 3.位置情報ルーティングポリシー
ユーザーの位置情報に基づいてルーティングするポリシー。
ユーザーの位置情報をIPで特定し、日本語サイトや英語サイトにルーティングする設定を行いたい時に用いる。
このときのルーティングの設定は大陸別・国別・米国の州別に行うことが可能。

#### 4.地理的近接性ルーティングポリシー
位置情報ルーティングポリシーはユーザーの位置(地域)のみに基づいてルーティングする。

地理的近接性ルーティングポリシーは、ユーザーとリソースの位置関係に基づいてルーティングする。
ユーザーの一番近い位置にルーティングを行いたい場合など。

東京にいて東京のWebサーバーにルーティングさせたり、大阪にいる場合は大阪のWebサーバーにルーティングさせたりとか。

設定にはRoute53のトラフィックフローという機能を用いる。
トラフィックフローはルーティングポリシーがWebブラウザ上のビジュアルエディタでフローチャート風に可視化される機能。
レコードの量が多くなった時や、複雑なルーティングを設定する際に使用する。

### 5.レイテンシールーティングポリシー
ユーザーから最もレイテンシーが少ないリージョンにアクセスするようルーティングするポリシー。
レイテンシーが基準になっているため、毎回同じリソースにアクセスされることはなく、変動する可能性がある。

また、AWSのリソースに対するレイテンシーのみが計測の対象となるため、オンプレミス等のAWS以外のリソースに対して設定した場合は、十分に機能しない可能性がある。

世界中にシステムを展開しているアプリケーションなどで用いられる。

#### 6-1.複数値回答ルーティングポリシー
複数レコードの中からヘルスチェックでOKとなったレコードのみ、ランダムにアクセスするようにルーティングするポリシー。

シンプルルーティングでも1レコードに対して複数IPの設定が可能だが、シンプルルーティングはヘルスチェックを行うことができない。
(ヘルスチェックはレコード単位で行うため)

そのため、ヘルスチェック機能を利用したい場合は、複数値回答ルーティングポリシーを利用する。

複数リージョンにまたがるシステムで冗長構成を取りたいときなどに用いられる。

#### 6-2.複数値回答ルーティングあれこれ
複数値回答ルーティングは、最大8つのIPアドレス(WebサーバーのIPアドレスなど)にDNSレスポンスを分散する。
また、複数値回答ルーティングは各リソースが正常かどうかも確認するため、インスタンスのトラフィックが正常であることを確認したうえで複数のIPを返す。

ただし高可用にはできるが、ELBに代わるものではない。
よって複数値回答ルーティングはトラフィックを分散できるものでは無い。

以下は設定例。公式のスクショ。
![スクリーンショット 2022-05-03 18.10.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278897/78e28112-9c13-7662-215f-de5260e7a748.png)

#### 7.加重ルーティングポリシー
加重ルーティングポリシーは、あらかじめ指定した重量(比率)で複数のAWSリソースにトラフィックをルーティングするポリシー。
重み付けをすることで、新機能を搭載した一部のインスタンスに対して、段階的にリリースしていくようなことができる。

#### 8.IPベースルーティングポリシー
アクセス元のIPアドレス範囲に応じてトラフィックをルーティングするポリシー。
(2022/6/1に追加されたとのこと)

ただしIPの直接指定はできない。

## ホストゾーン
ホストゾーンは、ドメインおよびサブドメインのトラフィックのルーティングする方法についての情報を保持するコンテナのこと。

### パブリックホストゾーン
インターネット上でどのようにルーティングするかを指定するDNSレコードが含まれる、インターネット上に公開されたDNSドメインのレコードを管理するコンテナ。

### プライベートホストゾーン
Amazon VPC内でどのようにルーティングするかを指定するDNSレコードが含まれる、VPCに閉じたプライベートネットワーク内のDNSドメインのレコードを管理するコンテナ。
1つのプライベートホストゾーンで複数VPCに対応。
また、VPCが相互アクセス可能であれば複数リージョンのVPCでも、同じホストゾーンを利用可能。

## Route53とDNS
### サードパーティのドメインを使用している場合
ドメインを別のドメイン(サードパーティのドメインをRoute53のドメインと紐づける、とか)に関連付ける場合、CNAMEレコードを使用する。
DNSの名前解決では、CNAMEリソースレコードが見つかった場合、ドメイン名を正式名に置き換えて名前解決を継続する。

### よく忘れるレコード
#### AAAA
DNSで定義されるどのドメインについての情報の種類の1つで、特定のホスト名に対応するIPv6アドレスを定義するレコード。

#### SOA
ドメインのDNSサーバー/ドメイン管理者のメールアドレスやシリアル番号などを保持して、ゾーン転送時に情報が更新されているかの判断に利用する。

#### MX
メールの配信先(メールサーバ)のホスト名を定義するレコード

## おわりに
引き続き追記します！

以上です。