(続)静的Webサイトホスティング二重化してみる(その3)

 前回まででAzureのBlobによる静的サイトホスティング構成が完了しました。いよいよ今回でDNSの設定を書き替えてフェイルオーバ環境を構築します。

登録されているAWSのAliasレコードのAレコードを削除してからヘルスチェックを登録してAレコードにフェイルオーバーの設定を施してから登録を行うという内容です。


最終的にこういう構成になります。








◆シリーズ

その1:AWSでCloudFront+S3構成を作る

その2:AzureでApplicationGateway+Blob構成を作る

その3:DNSでフェイルオーバー設定(今回)

その4:S3とBlobにGitHubActions使ってコンテンツ同期

その5:TerraformでIaC化

◆環境

aws-cli/2.4.27 Python/3.8.8 Linux/5.4.0-104-generic exe/x86_64.ubuntu.20 prompt/off
Python 3.10.3
Ubuntu20.04.4LTS

◆作業内容

コマンドラインでの作業となります
# 1.Route53ヘルスチェック
#・クラウドフロント情報取得
$ CLOUDFRONT_URL=$(aws cloudfront list-distributions \
  --query "DistributionList.Items[].{DomainName: DomainName, OriginDomainName: Aliases.Items[0]}[? OriginDomainName == '${YOUR_DOMAIN}'] | [0].DomainName"\
--output=text \ ) && echo $CLOUDFRONT_URL #・ヘルスチェック作成 $ cat << EOF > create-health-check.json { "Type": "HTTPS_STR_MATCH", "ResourcePath": "/", "FullyQualifiedDomainName": "$CLOUDFRONT_URL", "SearchString": "", "RequestInterval": 30, "FailureThreshold": 3 } EOF $ aws route53 create-health-check --caller-reference $(date "+%Y%m%d%H%M%S") --health-check-config file://create-health-check.json # 2.エイリアス登録Aレコード削除 $ cat << EOF > delete_arecode.json { "Comment": "Creating Alias resource record sets in Route 53", "Changes": [{ "Action": "DELETE", "ResourceRecordSet": { "Name": "${YOUR_DOMAIN}.", "Type": "A", "AliasTarget": { "HostedZoneId": "Z2FDTNDATAQYW2", "DNSName": "$CLOUDFRONT_URL.", "EvaluateTargetHealth": false } } }] } EOF $ HOSTED_ZONE_ID=$( \ aws route53 list-hosted-zones \ --query "HostedZones[?Name=='${HOSTED_DOMAIN}.'].Id" \ --output text) $ aws route53 change-resource-record-sets --hosted-zone-id $HOSTED_ZONE_ID --change-batch file://delete_arecode.json # 3.フェイルオーバー付きでAレコード登録 $ cat << EOF > create_azure_arecode.json { "Comment": "This is route53.json file", "Changes": [{ "Action": "CREATE", "ResourceRecordSet": { "Name": "${YOUR_DOMAIN}", "Type": "A", "SetIdentifier": "primary-record", "Failover": "PRIMARY", "AliasTarget":{ "HostedZoneId": "Z2FDTNDATAQYW2", "DNSName": "$CLOUDFRONT_URL", "EvaluateTargetHealth": false }, "HealthCheckId": "${YOUR_HEALTHCHECK_ID}" } }, { "Action": "CREATE", "ResourceRecordSet": { "Name": "${YOUR_DOMAIN}", "Type": "A", "SetIdentifier": "secondary-record", "Failover": "SECONDARY", "TTL": 60, "ResourceRecords": [{ "Value": "${YOUR_AZURE_LB_IP}" }] } } ] } EOF $ aws route53 change-resource-record-sets --hosted-zone-id $HOSTED_ZONE_ID --change-batch file://create_azure_arecode.json

◆参考サイト


これでフェイルオーバ構成できました。ヨワヨワなので他のサイトのコピペばかりで時間ばかりかかりましたが何とかできました。

コスト面ではやや厳しいかもです。トータル5時間ほどで200円位なので月間30,000円位となるのでこれはバックアップとしておいておくには少し厳しい価格設定かもしれないです。あと、ApplicationGatewayはIPv4しか対応していないのでGCPのL7LBの方がお手軽でよいかもしれないです。DNSのhttpsレコードみたく他のクラウドのエンドポイントが指定できるようになれば、もう少し安価で選択肢も広がるんですけどね。

でコンテンツ更新2ヶ所やるのめんどくさい問題とTerraformでできないんか問題出てきますよね。。。Teraformはツライにしても更新は1ヶ所で完結させたいので気が向いたら次回あるかもしれないです。(いつになるかはわかりません。)


コメント

このブログの人気の投稿

証券外務員1種勉強(計算式暗記用メモ)

GASでGoogleDriveのサブフォルダとファイル一覧を出力する

マクロ経済学(IS-LM分析)