0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【AWS】CloudFormtionでブログサービスを構築してみた(04.Route53編)

Last updated at Posted at 2023-02-16

01.はじめに

【AWS】CloudFormtionでブログサービスを構築してみた(03.S3,CloudFront編)の続きである。
過去に公開した記事は下記の通りである。
【AWS】CloudFormtionでブログサービスを構築してみた(概要編)
【AWS】CloudFormtionでブログサービスを構築してみた(01.Network編)
【AWS】CloudFormtionでブログサービスを構築してみた(02.EC2,RDS,ALB編)
【AWS】CloudFormtionでブログサービスを構築してみた(03.S3,CloudFront編)

この記事で扱うものはコンポーネントは下記である。
1.Route53

02 構成図

構成図2-Route53.png

本稿でWAFの設定以外が完了する。
Route53で
ALB→プライマリレコードの設定
CloudFront →セカンダリレコードの設定を実施する

テーブルにすると下記になる。

レコード名 タイプ  ルーティングポリシー  差別化要因  値/トラフィックのルーティング先 
www.domain name  A フェイルオーバー  プライマリ  ALB
www.domain name  A フェイルオーバー  セカンダリ  CloudFront

03.テスト方法

設定後、下記観点でテストを実施する。
1.Route53で設定したドメインで通常アクセスが出来るか
2.EC2を2台ともシャットダウンした状態でセカンダリに通信が流れるか。
3.EC2は生きているがRDSをシャットダウンした状態でも問題なくセカンダリに通信が流れるか(ヘルスチェックのパスが/index.phpで問題ないか)

04.テンプレートファイル

Outputs情報

Outputs:
  #CloudFrontのDNS名の定義
  CloudFrontDNS:
      Value: !GetAtt CloudFrontDistribution.DomainName
      Export:
        Name: CloudFront-DNS-Outputs
#ALBのDNS名の定義(Route53で使う)
  ALBDomainName:
      Value: !GetAtt CFALB.DNSName
      Export:
        Name: ALB-DNS-Outputs
#ALBのゾーンIDの定義(Route53で使う)
  ALBZoneId:
      Value: !GetAtt CFALB.CanonicalHostedZoneID
      Export:
        Name: ALB-CanonicalHostedZoneID-Outputs

ネットワーク編で記載したymlファイルに下記を追記する。

network.yml
# ------------------------------------------------------------#
#  パラメータ
# ------------------------------------------------------------#
Parameters:
ドメイン名を指定
  HostedZoneName:
    Type: String
    Description: Type of this domain name.
  
################
##以下追記する###
#################
#Route53のショートネームを指定。初回はwwwで登録する
  Shortname:
    Type: String
    Description: Short name.
    Default: "www."

~~~~~~~~~~~~~中略~~~~~~~~~~~~~~~~~~~

# ------------------------------------------------------------#
# Route53
# ------------------------------------------------------------#
# ------------------------------------------------------------#
#  HostZone
# ------------------------------------------------------------#
  Route53HostedZone:
    Type: AWS::Route53::HostedZone
    Properties:
      Name: !Sub "${HostedZoneName}"
      HostedZoneTags:
        -
          Key: Name
          Value: DNS-Zone
          

#################
###以下追記する###
#################
# ------------------------------------------------------------#
#  HealthCheck
# ------------------------------------------------------------#
  DNSHealthCheck:
    Type: 'AWS::Route53::HealthCheck'
    Properties:
      HealthCheckConfig:
        Port: 443
        Type: HTTPS
        #RDSがダウンしたら下記には疎通が通らないのでEC2とRDSの監視を両方網羅できる
        ResourcePath: /index.php
        FullyQualifiedDomainName: !ImportValue ALB-DNS-Outputs
        RequestInterval: 30
        FailureThreshold: 3
      HealthCheckTags: 
        -
          Key: Name
          Value: DNS-HealthCheck

# ------------------------------------------------------------#
#  Record
# ------------------------------------------------------------#
  DNSRecord:
    Type: AWS::Route53::RecordSetGroup
    Properties:
      HostedZoneName: !Sub "${HostedZoneName}."
      RecordSets:
      #Primary(ALB)
      - Name: !Sub "${Shortname}${HostedZoneName}."
        Failover: PRIMARY
        HealthCheckId: !Ref DNSHealthCheck
        SetIdentifier: "LB-P"
        Type: A
        AliasTarget:
          HostedZoneId: !ImportValue ALB-CanonicalHostedZoneID-Outputs
          EvaluateTargetHealth: true
          DNSName: !ImportValue ALB-DNS-Outputs

      #Secondary(CloudFront)
      - Name: !Sub "${Shortname}${HostedZoneName}."
        Failover: SECONDARY
        SetIdentifier: "LB-S"
        Type: A
        AliasTarget:
          HostedZoneId: Z2FDTNDATAQYW2 # 固定値
          DNSName: !ImportValue CloudFront-DNS-Outputs

05.テストアクセス

1.Route53で設定したドメインで通常アクセスが出来るか
image.png
→想定通り

2.2.EC2を2台ともシャットダウンした状態でセカンダリに通信が流れるか。
 EC2をシャットダウンする
image.png

 1-2分くらい待ってからアクセスするとSorryページに通信が切り替わる。
image.png
→想定通り

3.EC2は生きているがRDSをシャットダウンした状態でも問題なく
 セカンダリに通信が流れるか(ヘルスチェックのパスが/index.phpで問題ないか)

RDSを一時停止する
image.png
EC2は一台起動した
image.png

シャットダウン後すぐはヘルスチェックが切り替わらないのでデータベース接続エラーが出る
image.png

しばらくするとSorryページに通信が切り替わる(ブラウザキャッシュとかの関係もあるのだろうか?)
image.png

ヘルスチェックも問題なし
image.png

参考文献

★次回はこちら
【AWS】CloudFormtionでブログサービスを構築してみた(05.Waf編)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?