この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
皆様こんにちは。
Terraformを利用して、AWSで高可用性アーキテクトの構築をしていきます。
今回はRoute53を構築していきます。
1.高可用性アーキテクト構築目次
2.Route53の概要
Amazon Route 53 は、可用性と拡張性に優れたクラウドのドメインネームシステム (DNS) ウェブサービスです。Amazon Route 53 は、www.example.com のような名前を、コンピュータが互いに接続するための数字の IP アドレス (192.0.2.1 など) に変換するサービスで、デベロッパーや企業がエンドユーザーをインターネットアプリケーションにルーティングする、きわめて信頼性が高く、コスト効率の良い方法となるよう設計されています。Amazon Route 53 は IPv6 にも完全準拠しています。
Route53はドメイン管理機能と権威DNS機能を持つサービスです。
ドメイン管理機能
Route53で新規ドメインの取得や更新などの手続きができます。このサービスを利用することで、ドメインの取得からゾーン情報の設定まで、Route53で一貫した管理が可能になります。
権威DNS
DNSとは、ドメイン名とIPアドレスを変換(名前解決)するシステムです。
権威DNSとは、ドメイン名とIPアドレスの変換情報を保持しているDNSのことで、変換情報を保持していないDNS(キャッシュDNS)と区別するときに使います。
3.フロー図
フロー図は下記の通りです。
- 今回は既存のホストゾーンを使用します
- ルーティング先をALBに設定したエイリアスレコードを作成します
4.Route53の構築
Route53を構築していきます。
4-1.ホストゾーンの使用
ホストゾーンとは
ホストゾーンとは、レコード情報の管理単位を表します。通常はドメイン名で、「example.com」のレコード情報を管理する場合のホストゾーンは「example.com」となります。
ホストゾーンにはパブリックホストゾーン、プライベートホストゾーンの2種類があり、インターネットに公開されるものをパブリックホストゾーン、VPC内のドメイン名を管理し、外部に公開されないものをプライベートホストゾーンといいます。
設定値は下記の通りです。
使用するオプション | 設定値 | 説明 |
---|---|---|
name | higa.test.cloud5.jp | ホストゾーン名 |
今回は既存のものを使用します。
4-2.レコード作成
レコード情報とは
レコード情報は、ドメイン名とIPアドレスを変換するための情報です。
レコードは数種類あります。リソースレコードと呼ばれるレコードを下記の表にまとめます。
リソースレコード | 説明 |
---|---|
Aレコード | ドメイン名とIPV4アドレスを紐づけるレコード |
AAAAレコード | ドメイン名とIPV6アドレスを紐づけるレコード |
PTRレコード | IPアドレスとドメイン名を紐づけるレコードで、AレコードやAAAAレコードとは紐づけが逆方向になる |
NSレコード | 他の権威DNSサーバーの場所を記しておくレコード |
SOAレコード | 権威DNSサーバーが保持するゾーンの情報を記しておくレコード。ゾーンに対して1つ設定しておく |
CNAMEレコード | AレコードやAAAAレコードの別名を示すレコード |
エイリアスレコード
Route53独自のレコードとして、エイリアスレコードがあります。エイリアスレコードは、外から見ると単なるAレコードに見えます。
エイリアスレコードは、AWS内のリソースに限り指定可能です。
4-3.レコードの設定
下記の通りにコードを記述します。
#----------------------------------------
# Route53の構築
#----------------------------------------
#レコードを作成
resource "aws_route53_record" "higa-record" {
zone_id = "Z01000061EWXXK1FTAO6J"
name = "higa.test.cloud5.jp"
type = "A"
alias {
name = aws_lb.higa-ALB.dns_name
zone_id = aws_lb.higa-ALB.zone_id
evaluate_target_health = true
}
}
設定項目は下記の通りです。
使用するオプション | 設定値 | 説明 |
---|---|---|
zone_id | Z01000061EWXXK1FTAO6J | ホストゾーン ID |
name | higa.test.cloud5.jp | レコード名 |
type | A | レコードタイプ。ALBに接続するためAWS内部ではエイリアスレコードとして扱うが、外部からはAレコードとして扱うため |
alias | 詳細は下記の表に記載 | エイリアスの設定をします |
エイリアスの設定は下記の通りです。
使用するオプション | 設定値 | 説明 |
---|---|---|
name | aws_lb.higa-ALB.dns_name | ALB DNS名 |
zone_id | aws_lb.higa-ALB.zone_id | zone_id の定義は必須。ALBのホストゾーン |
evaluate_target_health | true | Route53がリソースレコードセットの健全性をチェックすることによって、このリソースレコードセットを使用するDNSクエリに応答します |
5.検証
PowerShellより、nslookup
コマンドを使用して、ドメイン名から対応するIPアドレスを調べます。DNSサーバーが正常に動作しているのかも確認できます。
①ドメイン名からIPアドレスを調べる。
nslookup higa.test.cloud5.jp
を実行します。
PS C:\Users\higak> nslookup higa.test.cloud5.jp
サーバー: UnKnown
Address: 2404:1a8:7f01:b::3
権限のない回答:
名前: higa.test.cloud5.jp
Addresses: 52.74.48.96
52.76.15.40
- 4~5行目は検索に使用したDNSサーバーの情報です。
- 7~10行目は検索結果の情報です。
上記より、IPアドレスの確認とDNSサーバーが正常に動作していることが確認できました。
②ALBのDNS名から同じIPアドレスが返ってくるか確認
nslookup higa-ALB-985017257.ap-southeast-1.elb.amazonaws.com
を実行します。
PS C:\Users\higak> nslookup higa-ALB-985017257.ap-southeast-1.elb.amazonaws.com
サーバー: UnKnown
Address: 2404:1a8:7f01:b::3
権限のない回答:
名前: higa-ALB-985017257.ap-southeast-1.elb.amazonaws.com
Addresses: 52.74.48.96
52.76.15.40
上記より、同じIPアドレスが返ってきたことが確認できました。
6.まとめ
Route53の作成後、ホストゾーンからインターネットに接続したところ、WordPressのインストールが上手くされていないことを発見しました。原因はEC2のユーザーデータの設定ミスでした。
本来であればEC2作成後に検証すれば見つけられた問題でしたので、各サービス構築後は動作検証することが大切だと感じました。
7.参考文献
- terraformの公式ドキュメント
Docs overview | hashicorp/aws | Terraform Registry