1. はじめに
最終更新日: 2022 年 9 月 22 日
DNS ルーティング ポリシーとは
Cloud DNS ルーティング ポリシーを使用すると、重み付け、位置情報、ヘルスチェックなどの特定の条件に応じて DNS ベースのトラフィック ステアリングを構成できます。
Cloud DNS でサポートされるルーティング ポリシーは次のとおりです。
- 重み付きラウンドロビン ルーティング ポリシー
- 位置情報に基づくルーティング ポリシー
- ジオフェンス ルーティング ポリシー
- フェイルオーバー ルーティング ポリシー
このラボでは、フェイルオーバー ルーティング ポリシーを構成してテストします。
フェイルオーバー ルーティング ポリシー
Cloud DNS では、グローバル アクセスが有効になっている内部 TCP/UDP ロードバランサのヘルスチェックがサポートされています。フェイルオーバー ルーティング ポリシーでは、リソース レコードにプライマリ IP とバックアップ IP を構成できます。通常のオペレーションでは、Cloud DNS はプライマリ セットでプロビジョニングされた IP アドレスを使用してクエリに応答します。プライマリ セット内のすべての IP アドレスに障害が発生した(健全性が異常を示した)場合、Cloud DNS はバックアップ セット内の IP アドレスの提供を開始します。
ヘルスチェック
DNS ルーティング ポリシーは、ネイティブの内部ロードバランサの統合ヘルスチェック(UHC)に依存します。バックエンドの 20% 以上が正常な場合、内部ロードバランサは正常とみなされます。内部 TCP/UDP ロードバランサと内部 HTTP(S) ロードバランサのヘルスチェックでは、異なる情報が提供されます。内部 HTTP(S) ロードバランサの場合、UHC はすべての Envoy プロキシのヘルス ステータスを提供しますが、内部 TCP/UDP ロードバランサの場合、Cloud DNS は個々のバックエンド インスタンスから直接ヘルスシグナルを取得します。ヘルスチェックの詳細については、こちらをご覧ください。
作成するアプリの概要
この Codelab では、2 つのリージョンで実行されるウェブサイトを作成し、フェイルオーバー DNS ルーティング ポリシーを関連付けます。設定は次のようになります。
アクティブなリソース -
- REGION_1 の L4 内部ロードバランサ
- REGION_1 で Apache ウェブサーバーを実行している VM
バックアップ リソース -
- REGION_2 の L4 内部ロードバランサ
- REGION_2 で Apache ウェブサーバーを実行している VM
設定は次のようになります。

学習内容
- フェイルオーバー ルーティング ポリシーを作成する方法
- DNS フェイルオーバーをトリガーする
- バックアップ セットにトラフィックを少しずつ転送する方法
必要なもの
- DNS の基礎知識
- Google Compute Engine に関する基本的な知識
- L4 内部ロードバランサの基本的な知識
2. 設定と要件
- Google Cloud Console にログインして、プロジェクトを新規作成するか、既存のプロジェクトを再利用します。Gmail アカウントも Google Workspace アカウントもまだお持ちでない場合は、アカウントを作成してください。



- プロジェクト名は、このプロジェクトの参加者に表示される名称です。Google API では使用されない文字列です。この設定はいつでも変更できます。
- プロジェクト ID は、すべての Google Cloud プロジェクトにおいて一意でなければならず、不変です(設定後は変更できません)。Cloud コンソールでは一意の文字列が自動生成されます。通常は、この内容を意識する必要はありません。ほとんどの Codelab では、プロジェクト ID(通常は
PROJECT_IDと識別されます)を参照する必要があります。生成された ID が好みではない場合は、ランダムに別の ID を生成できます。または、ご自身で試して、利用可能かどうかを確認することもできます。このステップ以降は変更できず、プロジェクトを通して同じ ID になります。 - なお、3 つ目の値として、一部の API が使用するプロジェクト番号があります。これら 3 つの値について詳しくは、こちらのドキュメントをご覧ください。
- 次に、Cloud のリソースや API を使用するために、Cloud コンソールで課金を有効にする必要があります。この Codelab の操作をすべて行って、費用が生じたとしても、少額です。このチュートリアルの終了後に請求が発生しないようにリソースをシャットダウンするには、作成したリソースを削除するか、プロジェクト全体を削除します。Google Cloud の新規ユーザーは、300 米ドル分の無料トライアル プログラムをご利用いただけます。
Cloud Shell の起動
Google Cloud はノートパソコンからリモートで操作できますが、この Codelab では、Google Cloud Shell(Cloud 上で動作するコマンドライン環境)を使用します。
Google Cloud Console で、右上のツールバーにある Cloud Shell アイコンをクリックします。

プロビジョニングと環境への接続にはそれほど時間はかかりません。完了すると、次のように表示されます。

この仮想マシンには、必要な開発ツールがすべて用意されています。永続的なホーム ディレクトリが 5 GB 用意されており、Google Cloud で稼働します。そのため、ネットワークのパフォーマンスと認証機能が大幅に向上しています。この Codelab での作業はすべて、ブラウザ内から実行できます。インストールは不要です。
3. Google Cloud SDK のバージョン
このドキュメントの作成時点では、401.0.0 が最新の Google Cloud SDK バージョンです。このラボのすべてのコマンドは、最新バージョンの Google Cloud SDK を使用してテストされています。続行する前に、Cloud Shell で最新バージョンの SDK が使用されていることを確認してください。
SDK のバージョンを確認する
gcloud version コマンドを使用して SDK のバージョンを確認します。Cloud Shell で次のコマンドを実行します。
コマンド
gcloud version | grep "Google Cloud SDK"
出力例
Google Cloud SDK 401.0.0
次のステップ
- SDK バージョンが
401.0.0以降の場合は、次のセクションに進みます。 - SDK のバージョンが
401.0.0より低い場合は、次のコマンドを実行して SDK を更新します。
省略可能なコマンド
sudo apt-get update && sudo apt-get install google-cloud-sdk
4. 始める前に
上記で説明したアーキテクチャのデプロイを開始する前に、Cloud Shell が正しく構成され、必要な API がすべて有効になっていることを確認しましょう。
プロジェクト ID を設定する
Cloud Shell で、プロジェクト ID が設定されていることを確認します。Cloud Shell のプロンプトが次の出力のようになっている場合、プロジェクト ID を変更する予定がなければ、次のステップ(環境変数を設定する)に進むことができます。
USER@cloudshell:~ (PROJECT_ID)$
プロジェクト ID を変更する場合は、次のコマンドを使用します。Cloud Shell のプロンプトが (PROJECT_ID) から (YOUR-PROJECT-ID) に変わります。
省略可能なコマンド
gcloud config set project [YOUR-PROJECT-ID]
出力例
Updated property [core/project]. USER@cloudshell:~ (YOUR-PROJECT-ID)$
環境変数を設定する
環境変数を設定する
export コマンドを使用して環境変数を設定します。Cloud Shell で次のコマンドを実行します。
コマンド
export REGION_1=us-west1
export REGION_1_ZONE=us-west1-a
export REGION_2=us-east4
export REGION_2_ZONE=us-east4-a
確認
環境変数が設定されたので、echo コマンドを使用して確認します。各コマンドの出力は、上記の export コマンドを使用して構成した値になります。Cloud Shell で次のコマンドを実行します。
コマンド
echo $REGION_1
echo $REGION_1_ZONE
echo $REGION_2
echo $REGION_2_ZONE
必要なサービスをすべて有効にする
gcloud services enable コマンドを使用して、Compute API と DNS API を有効にします。Cloud Shell で次のコマンドを実行します。
Compute API を有効にする
コマンド
gcloud services enable compute.googleapis.com
DNS API を有効にする
コマンド
gcloud services enable dns.googleapis.com
確認
サービスが有効になったので、gcloud services list コマンドを使用して、有効になっているすべての API を一覧表示して確認しましょう。
コマンド
gcloud services list | grep -E 'compute|dns'
出力例
NAME: compute.googleapis.com NAME: dns.googleapis.com
5. VPC ネットワーク、サブネット、ファイアウォール ルールを作成する
このセクションでは、VPC ネットワーク、2 つのサブネット(各リージョンに 1 つずつ)、必要なファイアウォール ルールを作成します。
VPC ネットワークを作成する
gcloud compute networks create コマンドを使用して VPC ネットワークを作成します。次のステップで独自のサブネットを作成するため、サブネット モードをカスタムに設定します。Cloud Shell で次のコマンドを実行します。
コマンド
gcloud compute networks create my-vpc --subnet-mode custom
サブネットを作成する
gcloud compute networks subnets create コマンドを使用して、REGION_1 と REGION_2 にそれぞれ 1 つずつ、2 つのサブネットを作成します。Cloud Shell で次のコマンドを実行します。
REGION_1 サブネット
コマンド
gcloud compute networks subnets create ${REGION_1}-subnet \
--network my-vpc \
--range 10.1.0.0/24 \
--region $REGION_1
REGION_2 サブネット
コマンド
gcloud compute networks subnets create ${REGION_2}-subnet \
--network my-vpc \
--range 10.2.0.0/24 \
--region $REGION_2
ファイアウォール ルールを作成する
VPC サブネットとロードバランサのヘルスチェック IP 範囲からのポート 80 のトラフィックを許可する必要があります。
また、クライアント VM で SSH トラフィックを許可するファイアウォール ルールも作成する必要があります。
gcloud compute firewall-rules create コマンドを使用して、ファイアウォール ルールを作成します。Cloud Shell で次のコマンドを実行します。
ポート 80 のトラフィックを許可する
コマンド
gcloud compute firewall-rules create allow-http-lb-hc \ --allow tcp:80 --network my-vpc \ --source-ranges 10.1.0.0/24,10.2.0.0/24,35.191.0.0/16,130.211.0.0/22 \ --target-tags=allow-http
クライアント VM で SSH トラフィックを許可する
コマンド
gcloud compute firewall-rules create allow-ssh \ --allow tcp:22 --network my-vpc \ --source-ranges 0.0.0.0/0 \ --target-tags=allow-ssh
6. Cloud NAT を作成する
プライベート VM がインターネットからパッケージをダウンロードしてインストールできるようにするには、両方のリージョンに Cloud NAT ゲートウェイが必要です。
- ウェブサーバー VM は、Apache ウェブサーバーをダウンロードしてインストールする必要があります。
- クライアント VM は、テストに使用する dnsutils パッケージをダウンロードしてインストールする必要があります。
各 Cloud NAT ゲートウェイは、1 つの VPC ネットワーク、リージョン、Cloud Router に関連付けられます。そのため、NAT ゲートウェイを作成する前に、各リージョンに Cloud Router を作成する必要があります。
クラウド ルーターを作成する
gcloud compute routers create コマンドを使用して、us-west1 リージョンと us-east4 リージョンに Cloud Router を作成します。Cloud Shell で次のコマンドを実行します。
Region_1 Cloud Router
コマンド
gcloud compute routers create "${REGION_1}-cloudrouter" \
--region $REGION_1 --network=my-vpc --asn=65501
Region_2 Cloud Router
コマンド
gcloud compute routers create "${REGION_2}-cloudrouter" \
--region $REGION_2 --network=my-vpc --asn=65501
NAT ゲートウェイを作成する
gcloud compute routers nat create コマンドを使用して、us-west1 リージョンと us-east4 リージョンに NAT ゲートウェイを作成します。Cloud Shell で次のコマンドを実行します。
Region_1 NAT ゲートウェイ
コマンド
gcloud compute routers nats create "${REGION_1}-nat-gw" \
--router="${REGION_1}-cloudrouter" \
--router-region=$REGION_1 \
--nat-all-subnet-ip-ranges --auto-allocate-nat-external-ips
Region_2 NAT ゲートウェイ
コマンド
gcloud compute routers nats create "${REGION_2}-nat-gw" \
--router="${REGION_2}-cloudrouter" \
--router-region=$REGION_2 \
--nat-all-subnet-ip-ranges --auto-allocate-nat-external-ips
7. Compute Engine VM を作成する
このセクションでは、ウェブサーバー、ウェブサーバー用の非マネージド インスタンス グループ、クライアント VM を作成します。
ウェブサーバー VM を作成する
gcloud compute instances create コマンドを使用してウェブサーバーを作成します。REGION_1 と REGION_2 にそれぞれ 1 つずつ、2 つのウェブサーバーを作成する必要があります。起動スクリプトを使用して、ウェブサーバーに Apache をインストールして構成します。
REGION_1 ウェブサーバー
Cloud Shell で次のコマンドを実行します。
コマンド
gcloud compute instances create "${REGION_1}-instance" \
--image-family=debian-11 --image-project=debian-cloud \
--zone=$REGION_1_ZONE \
--network-interface=network=my-vpc,subnet=${REGION_1}-subnet,no-address \
--tags=allow-http \
--metadata=startup-script='#! /bin/bash
apt-get update
apt-get install apache2 -y
a2ensite default-ssl
a2enmod ssl
vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/name)"
echo "Page served from: $vm_hostname" | \
tee /var/www/html/index.html
systemctl restart apache2'
REGION_2 Web Server
Cloud Shell で次のコマンドを実行します。
コマンド
gcloud compute instances create "${REGION_2}-instance" \
--image-family=debian-11 --image-project=debian-cloud \
--zone=$REGION_2_ZONE \
--network-interface=network=my-vpc,subnet=${REGION_2}-subnet,no-address \
--tags=allow-http \
--metadata=startup-script='#! /bin/bash
apt-get update
apt-get install apache2 -y
a2ensite default-ssl
a2enmod ssl
vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/name)"
echo "Page served from: $vm_hostname" | \
tee /var/www/html/index.html
systemctl restart apache2'
非マネージド インスタンス グループを作成する
このセクションでは、2 つの非マネージド インスタンス グループを作成します。次のセクションでは、これらのインスタンス グループを使用して ILB バックエンド サービスを構成します。インスタンス グループを作成したら、これらのインスタンス グループにウェブサーバー VM を追加します。
非マネージド インスタンス グループを作成する
gcloud compute instance-groups unmanaged create コマンドを使用して、us-west1 ウェブサーバー用と us-east4 ウェブサーバー用の 2 つの非マネージド インスタンス グループを作成します。
Region_1 インスタンス グループ
コマンド
gcloud compute instance-groups unmanaged create \
"${REGION_1}-instance-group" --zone=$REGION_1_ZONE
Region_2 インスタンス グループ
コマンド
gcloud compute instance-groups unmanaged create \
"${REGION_2}-instance-group" --zone=$REGION_2_ZONE
VM をインスタンス グループに追加する
gcloud compute instance-groups unmanaged add-instances コマンドを使用して、作成したインスタンス グループにインスタンスを追加します。REGION_1 ウェブサーバーを REGION_1 インスタンス グループに追加し、REGION_2 ウェブサーバーを REGION_2 インスタンス グループに追加する
Region_1 インスタンス グループ
コマンド
gcloud compute instance-groups unmanaged add-instances \
"${REGION_1}-instance-group" --instances $REGION_1-instance \
--zone=$REGION_1_ZONE
Region_2 インスタンス グループ
コマンド
gcloud compute instance-groups unmanaged add-instances \
"${REGION_2}-instance-group" --instances $REGION_2-instance \
--zone=$REGION_2_ZONE
クライアント VM を作成する
この VM を使用してテストを実行し、DNS 構成を検証します。起動スクリプトを使用して dnsutils パッケージをインストールします。Cloud Shell で次のコマンドを実行します。
コマンド
gcloud compute instances create client-instance --image-family=debian-11 \
--image-project=debian-cloud \
--zone=$REGION_1_ZONE \
--network-interface=network=my-vpc,subnet=${REGION_1}-subnet,no-address \
--tags=allow-ssh \
--metadata=startup-script='#! /bin/bash
apt-get update
apt-get install dnsutils -y'
8. L4 内部ロードバランサを作成する
L4 ILB を作成するには、ヘルスチェック、バックエンド サービス、転送ルールを作成する必要があります。
ヘルスチェックを作成
gcloud compute health-checks create コマンドを使用して、ヘルスチェックを作成します。基本的な HTTP ヘルスチェックを作成し、ターゲット ポートをポート 80 に設定します。Cloud Shell で次のコマンドを実行します。
コマンド
gcloud compute health-checks create http http-hc --port 80
バックエンド サービスを構成する
gcloud compute backend-services create コマンドを使用してバックエンド サービスを作成します。バックエンド サービスを作成したら、gcloud compute backend-services add-backend コマンドを使用して、非マネージド インスタンス グループをバックエンド サービスに追加します。Cloud Shell で次のコマンドを実行します。
バックエンド サービスを作成する
コマンド
gcloud compute backend-services create $REGION_1-backend-service \ --load-balancing-scheme=INTERNAL --protocol=TCP \ --health-checks=http-hc --region=$REGION_1
gcloud compute backend-services create $REGION_2-backend-service \ --load-balancing-scheme=INTERNAL --protocol=TCP \ --health-checks=http-hc --region=$REGION_2
バックエンドを追加
コマンド
gcloud compute backend-services add-backend $REGION_1-backend-service \ --instance-group=$REGION_1-instance-group \ --region=$REGION_1 \ --instance-group-zone=$REGION_1_ZONE
gcloud compute backend-services add-backend $REGION_2-backend-service \ --instance-group=$REGION_2-instance-group \ --region=$REGION_2 \ --instance-group-zone=$REGION_2_ZONE
転送ルールを作成する
gcloud compute forwarding-rules create コマンドを使用して、両方のリージョンに転送ルールを作成します。Cloud Shell で次のコマンドを実行します。
REGION_1 転送ルール
コマンド
gcloud compute forwarding-rules create $REGION_1-ilb \
--region=$REGION_1 \
--load-balancing-scheme=internal \
--network=my-vpc \
--subnet=$REGION_1-subnet \
--ip-protocol=TCP \
--ports=80 \
--backend-service=$REGION_1-backend-service \
--backend-service-region=$REGION_1 \
--allow-global-access
REGION_2 転送ルール
gcloud compute forwarding-rules create $REGION_2-ilb \
--region=$REGION_2 \
--load-balancing-scheme=internal \
--network=my-vpc \
--subnet=$REGION_2-subnet \
--ip-protocol=TCP \
--ports=80 \
--backend-service=$REGION_2-backend-service \
--backend-service-region=$REGION_2 \
--allow-global-access
9. DNS を構成する
このセクションでは、限定公開ゾーンとフェイルオーバー ルーティング ポリシーを含む DNS レコードセットを作成します。
限定公開 DNS ゾーンを作成する
gcloud dns managed-zones create コマンドを使用して、example.com の限定公開ゾーンを作成します。このゾーンを使用して、フェイルオーバー ルーティング ポリシーを含むリソース レコードセットを作成します。Cloud Shell で次のコマンドを実行します。
コマンド
gcloud dns managed-zones create example-com \ --dns-name example.com. --description="My private zone" \ --visibility=private --networks my-vpc
フェイルオーバー ルーティング ポリシーを使用して DNS レコードを作成する
gcloud dns record-sets create コマンドを使用して、フェイルオーバー ルーティング ポリシーを含む DNS レコードを作成します。プライマリ ターゲットは REGION_1 のロードバランサです。Cloud DNS は地域ベースのバックアップ ターゲットのみをサポートします。バックアップ セットは、REGION_1 と REGION_2 の両方のターゲットとして REGION_2 ロードバランサを使用する位置情報ポリシーです。Cloud Shell で次のコマンドを実行します。
コマンド
gcloud dns record-sets create failover.example.com --ttl 5 --type A \
--routing-policy-type=FAILOVER \
--routing-policy-primary-data=$REGION_1-ilb \
--routing-policy-backup-data="${REGION_1}=${REGION_2}-ilb;${REGION_2}=${REGION_2}-ilb" \
--routing-policy-backup-data-type=GEO \
--zone=example-com \
--enable-health-checking
出力例
NAME: failover.example.com. TYPE: A TTL: 5 DATA: Primary: "10.1.0.4, 80, tcp, https://www.googleapis.com/compute/v1/projects/my-clouddns-codelab/global/networks/my-vpc, my-clouddns-codelab, us-west1, regionalL4ilb" Backup: us-west1: "10.2.0.3, 80, tcp, https://www.googleapis.com/compute/v1/projects/my-clouddns-codelab/global/networks/my-vpc, my-clouddns-codelab, us-east4, regionalL4ilb";us-east4: "10.2.0.3, 80, tcp, https://www.googleapis.com/compute/v1/projects/my-clouddns-codelab/global/networks/my-vpc, my-clouddns-codelab, us-east4, regionalL4ilb"
10. DNS 解決をテストする
フェイルオーバー設定をテストする前に、両方の内部ロードバランサの IP アドレスをメモしておきましょう。Cloud Shell で次のコマンドを実行します。
コマンド
gcloud compute forwarding-rules list --filter="name:($REGION_1-ilb $REGION_2-ilb)"
出力例
この例では、us-west1-ilb の IP アドレスは 10.1.0.4、us-east4-ilb の IP アドレスは 10.2.0.3 です。
NAME: us-west1-ilb REGION: us-west1 IP_ADDRESS: 10.1.0.4 IP_PROTOCOL: TCP TARGET: us-west1/backendServices/us-west1-backend-service NAME: us-east4-ilb REGION: us-east4 IP_ADDRESS: 10.2.0.3 IP_PROTOCOL: TCP TARGET: us-east4/backendServices/us-east4-backend-service
次に、クライアント インスタンスにログインして、DNS 解決をテストします。ウェブ コンソールで、[Compute Engine | VM インスタンス] に移動します。

[SSH] ボタンをクリックして、コンソールから client-instance にログインします。

クライアント VM にログインしたら、dig コマンドを使用して failover.example.com ドメイン名を解決します。
次のループは、このコマンドを 10 回実行するように構成されています。6 秒のスリープ タイマーが設定されています。
コマンド
for i in {1..10}; do echo $i; dig failover.example.com +short; sleep 6; done
6 秒のスリープ タイマーが追加されているのは、DNS レコードの TTL が 5 秒に設定されているからです。これにより、各 DNS リクエストの DNS レスポンスがキャッシュから返されることはなくなります。このコマンドの実行には 1 分ほどかかります。
出力には、リソース レコードのプライマリ セットにロードバランサの IP アドレスが表示されます。この設定では、us-west1 リージョンのロードバランサの IP アドレスになります。
11. フェイルオーバーをテストする
REGION_1 VM からネットワーク タグを削除して、フェイルオーバーをシミュレートします。これにより、ポート 80 へのアクセスがブロックされ、ヘルスチェックが失敗し始めます。
ネットワーク タグを削除する
gcloud compute instances remove-tags コマンドを使用して、VM からネットワーク タグを削除します。Cloud Shell で次のコマンドを実行します。
コマンド
gcloud compute instances remove-tags $REGION_1-instance \ --zone=$REGION_1_ZONE --tags=allow-http
ヘルスチェックは 10 秒後に失敗します。DNS 解決テストをもう一度実行します。
DNS 解決
クライアント インスタンスから次のコマンドを実行します。
コマンド
for i in {1..10}; do echo $i; dig failover.example.com +short; sleep 6; done
出力には、リソース レコードのバックアップ セットにロードバランサの IP アドレスが表示されます。この設定では、これは us-east4 リージョンのロードバランサの IP になります。
12. トラフィックのテスト トリックリング
デフォルトでは、フェイルオーバー ポリシーはすべての DNS リクエストに対してプライマリ エンドポイント IP を返し、プライマリがヘルスチェックに失敗した場合にのみバックアップ IP を返します。Cloud DNS では、ユーザーがトリクル比率を構成できます。これにより、プライマリ ターゲットが正常な場合でも、Cloud DNS はトラフィックの一部をバックアップ ターゲットに送信できます。比率は 0~1 の範囲の値にする必要があります。デフォルト値は 0 です。
これをテストするには、REGION_1 ウェブサーバーにネットワーク タグを追加します。
ネットワーク タグを追加
タグをウェブサーバー VM に追加して、プライマリ リージョン VM への HTTP トラフィックを許可します。Cloud Shell で次のコマンドを実行します。
コマンド
gcloud compute instances add-tags $REGION_1-instance \ --zone $REGION_1_ZONE --tags allow-http
ヘルスチェックは 10 秒で合格します。
DNS 解決がプライマリ ロードバランサを指していることを確認します。この設定では、us-west1 リージョンのロードバランサの IP アドレスになります。
クライアント インスタンスから次のコマンドを実行します。
コマンド
dig +short failover.example.com
DNS レコードを更新する
次に、failover.example.com の DNS レコードを変更して、プライマリが正常な場合でもトラフィックの 30% をバックアップ セットに転送します。Cloud Shell で次のコマンドを実行します。
コマンド
gcloud dns record-sets update failover.example.com --ttl 30 --type A \
--routing-policy-type=FAILOVER \
--routing-policy-primary-data=$REGION_1-ilb \
--routing-policy-backup-data="${REGION_1}=${REGION_2}-ilb;${REGION_2}=${REGION_2}-ilb" \
--routing-policy-backup-data-type=GEO \
--zone=example-com --enable-health-checking \
--backup-data-trickle-ratio=0.3
DNS 解決
クライアント VM から次のコマンドを実行します。DNS レコード failover.example.com は、約 70% の確率でプライマリ ロードバランサの IP アドレスに解決され、約 30% の確率でバックアップ ロードバランサの IP アドレスに解決されます。
for i in {1..10}; do echo $i; dig failover.example.com +short; sleep 6; done
13. クリーンアップ手順
このラボで使用したリソースをクリーンアップするには、Cloud Shell から次のコマンドを実行します。
gcloud dns record-sets delete failover.example.com --type=A \ --zone=example-com --quiet gcloud dns managed-zones delete example-com --quiet gcloud compute forwarding-rules delete $REGION_1-ilb \ --region=$REGION_1 --quiet gcloud compute forwarding-rules delete $REGION_2-ilb \ --region=$REGION_2 --quiet gcloud compute backend-services delete $REGION_1-backend-service \ --region=$REGION_1 --quiet gcloud compute backend-services delete $REGION_2-backend-service \ --region=$REGION_2 --quiet gcloud compute health-checks delete http-hc --quiet gcloud compute instances delete client-instance --zone=$REGION_1_ZONE --quiet gcloud compute instance-groups unmanaged delete $REGION_1-instance-group \ --zone=$REGION_1_ZONE --quiet gcloud compute instance-groups unmanaged delete $REGION_2-instance-group \ --zone=$REGION_2_ZONE --quiet gcloud compute instances delete $REGION_1-instance \ --zone=$REGION_1_ZONE --quiet gcloud compute instances delete $REGION_2-instance \ --zone=$REGION_2_ZONE --quiet gcloud compute routers nats delete $REGION_1-nat-gw \ --router=$REGION_1-cloudrouter --region=$REGION_1 --quiet gcloud compute routers nats delete $REGION_2-nat-gw \ --router=$REGION_2-cloudrouter --region=$REGION_2 --quiet gcloud compute routers delete $REGION_1-cloudrouter \ --region=$REGION_1 --quiet gcloud compute routers delete $REGION_2-cloudrouter \ --region=$REGION_2 --quiet gcloud compute firewall-rules delete allow-ssh allow-http-lb-hc --quiet gcloud compute networks subnets delete $REGION_1-subnet \ --region=$REGION_1 --quiet gcloud compute networks subnets delete $REGION_2-subnet \ --region=$REGION_2 --quiet gcloud compute networks delete my-vpc --quiet
14. 完了
お疲れさまでした。これで、Cloud DNS フェイルオーバー ルーティング ポリシーのデプロイとテストが完了しました。
学習した内容
- Cloud DNS フェイルオーバー ルーティング ポリシーを構成する方法
- DNS フェイルオーバーをテストする
- バックアップ セットにトラフィックを少しずつ転送する方法
次のステップ
- アクティブ セットとバックアップ セットに複数の IP を設定してみる
- 非マネージド インスタンス グループに複数のバックエンド VM を追加してみる
- バックアップ セットの位置情報ポリシー用に、異なるリージョンに複数のロードバランサを設定してみてください。
その他の情報
https://cloud.google.com/dns/docs/zones/manage-routing-policies