DNS ルーティング ポリシーとヘルスチェックを構成する

このページでは、Cloud DNS を使用して DNS ルーティング ポリシーを構成し、ヘルスチェックを有効にする方法について説明します。このページを使用する前に、DNS ルーティング ポリシーとヘルスチェックについてご確認ください。

始める前に

  • DNS ルーティング ポリシーを構成するには、リソース レコード セットを作成し、リソース レコード セットに適用する次のいずれかの DNS ルーティング ポリシーを選択します。

  • DNS ルーティング ポリシーは、位置情報ルーティング ポリシーの地理的位置ごとに複数の IP アドレスをサポートします。地理的位置に複数の IP アドレスを指定すると、Cloud DNS はその位置に指定されたすべての IP アドレスを返します。位置情報ルーティング ポリシーとカスタム重み付けの WRR ポリシーを組み合わせることはできません。

  • 1 つのリソース レコードセットに一度に適用できるルーティング ポリシーのタイプは 1 つだけです。 フェイルオーバー ルーティング ポリシーを構成する場合を除き、ルーティング ポリシーを結合することはできません。この場合、位置情報に基づくルーティング ポリシーをバックアップとして設定できます。

  • リージョン ロードバランサでグローバル アクセスが有効になっていることを確認します。

  • 一般公開ゾーンの DNS ルーティング ポリシーを構成する前に、constraints/compute.disableInternetNetworkEndpointGroup 組織のポリシーの制約を無効にします。詳しくは、組織のポリシーの制約をご覧ください。

  • DNS ルーティング ポリシーを構成するために必要な権限があることを確認します。

このタスクを実行するには、次の権限または次の IAM のロールが付与されている必要があります。

権限

  • dns.networks.useHealthSignals - 内部パススルー ネットワーク ロードバランサのヘルスチェックを使用するポリシーを作成する
  • dns.changes.create - リソース レコードセットを作成する
  • dns.managedZones.list - マネージド ゾーンを一覧表示する

ロール

  • DNS 管理者(roles/dns.admin
  • DNS ピア(roles/dns.peer

限定公開ゾーンの DNS ルーティング ポリシーを作成する

限定公開ゾーンの DNS ルーティング ポリシーを作成する前に、次の手順を完了します。

  1. 限定公開ゾーンを作成する
  2. 次のいずれかの内部ロードバランサを設定します。
  3. 内部ロードバランサの転送ルールを作成する
  4. 内部ロードバランサのヘルスチェックを設定する

プライベート ゾーンの DNS ルーティング ポリシーを作成するには、次の操作を行います。

コンソールgcloudAPI

構成を開始する

  1. Google Cloud コンソールで Cloud DNS の [ゾーン] ページに移動します。

    Cloud DNS の [ゾーン] に移動

  2. レコードを追加するマネージド ゾーンの名前をクリックします。

  3. [ゾーンの詳細] ページで、[ルーティング ポリシー付きで追加] をクリックします。

ベースデータ

  1. 省略可: [ルーティング ポリシー付きのレコードセットを作成] ページの [DNS 名] に、DNS 名のサブドメインを入力します(例: mail)。末尾にドットが自動的に追加されます。

  2. [リソース レコードのタイプ] でオプションを選択します。

  3. [TTL] に、リソース レコードの有効期間を数値で入力します。これはキャッシュに保存できる時間です。 この値は正の整数である必要があります。

  4. 省略可: [TTL ユニット] で、時間の単位(例: minutes)を選択します。デフォルトは minutes に設定されています。

  5. [次へ] をクリックします。

ルーティング ポリシーの種類

  1. [ルーティング ポリシー] で、[重み付きラウンドロビン]、[位置情報]、[フェイルオーバー] のいずれかを選択します。
  2. [次へ] をクリックします。

ルーティング ポリシーのデータ

  1. [重み] に、リソース レコード(RR)データのサブセクションに対応する重みを入力します。

    この重みは 0.0~1,000.0 の範囲内の正の数字でなければなりません。ターゲットにルーティングされるトラフィックの割合は、すべての重みの合計に対する個々の重みの比率から計算されます。たとえば、ターゲット A の重みが 25、ターゲット B の重みが 75 で、合計重みが 100 の場合、Cloud DNS は、合計トラフィックの 25/100 = 0.25(25%)をターゲット A にルーティングし、75/100= 0.75(75%)をターゲット B にルーティングします。

  2. [IPv4 ヘルスチェック対象のターゲット] セクションで、次の操作を行います。

    1. [プロジェクト] で、転送ルールが存在するプロジェクトを選択します。
    2. [転送ルール] で、転送ルールを選択します。

      転送ルールに、内部 IP アドレス、ポート、および次のいずれかのターゲットを指定します。

  3. [完了] をクリックします。

  4. 省略可: ヘルスチェック対象のターゲットを追加するには、[ターゲットを追加] をクリックします。

  5. 省略可: ヘルスチェックを受けない IPv4 アドレスを許可するには、次の操作を行います。

    1. [ヘルスチェックを受けない IPv4 アドレスを許可する] を選択します。
    2. [IPv4 アドレス] に、IPv4 アドレスを入力します。
  6. 省略可: WRR ポリシー ルーティング データの別のセットを追加するには、[ルーティング データを追加] をクリックします。

  7. [次へ] をクリックします。

  1. [ジオフェンス] で [無効] または [有効] を選択します。

    ジオフェンスを有効にすると、特定の位置情報のすべてのエンドポイントが異常であったとしても、トラフィックをその地域内に制限できます。

  2. [ソース リージョン] で、有効な Google Cloudソース リージョンを選択します。

  3. [IPv4 ヘルスチェック対象のターゲット] セクションで、次の操作を行います。

    1. [プロジェクト] で、転送ルールが存在するプロジェクトを選択します。
    2. [転送ルール] で、転送ルールを選択します。

      転送ルールに、内部 IP アドレス、ポート、および次のいずれかのターゲットを指定します。

  4. [完了] をクリックします。

  5. 省略可: ヘルスチェック対象のターゲットを追加するには、[ターゲットを追加] をクリックします。

  6. 省略可: ヘルスチェックを受けない IPv4 アドレスを許可するには、次の操作を行います。

    1. [ヘルスチェックを受けない IPv4 アドレスを許可する] を選択します。
    2. [IPv4 アドレス] に、IPv4 アドレスを入力します。
  7. 省略可: 別の位置情報ポリシーのルーティング データのセットを追加するには、[ルーティング データを追加] をクリックします。

  8. [次へ] をクリックします。

  1. [プライマリ ヘルスチェック対象のターゲット] セクションで、次の操作を行います。

    1. [プロジェクト] で、転送ルールが存在するプロジェクトを選択します。
    2. [転送ルール] で、転送ルールを選択します。

      転送ルールに、内部 IP アドレス、ポート、および次のいずれかのターゲットを指定します。

  2. [Backup geolocation policy] セクションで、次の操作を行います。

    1. [ジオフェンス] で [無効] または [有効] を選択します。ジオフェンスを有効にすると、特定の位置情報のすべてのエンドポイントが異常であったとしても、トラフィックをその地域内に制限できます。
    2. [ソース リージョン] で、有効な Google Cloudソース リージョンを選択します。
    3. [IPv4 ヘルスチェック対象のターゲット] セクションで、次の操作を行います。

      1. [プロジェクト] で、転送ルールが存在するプロジェクトを選択します。
      2. [転送ルール] で、転送ルールを選択します。

        転送ルールに、次のいずれかのオプションを指定します。

        • 内部 IP アドレス、ポート、リージョン バックエンド サービス
        • HTTP(S) プロキシ
        • TCP プロキシ

    すべてのプライマリ IP アドレスに異常がある場合、トラフィックはこのバックアップ位置情報ポリシーに従って自動的に処理されます。

  3. [完了] をクリックします。

  4. 省略可: ヘルスチェック対象のターゲットを追加するには、[ターゲットを追加] をクリックします。

  5. 省略可: ヘルスチェックを受けない IPv4 アドレスを許可するには、次の操作を行います。

    1. [ヘルスチェックを受けない IPv4 アドレスを許可する] を選択します。
    2. [IPv4 アドレス] に、IPv4 アドレスを入力します。
  6. 省略可: バックアップ位置情報ポリシーのルーティング データの別のセットを追加するには、[ルーティング データを追加] をクリックします。

  7. [トリクル トラフィック(%)] フィールドに、プライマリ ターゲットのヘルスチェック ステータスに関係なく、フェイルオーバー ターゲットに送信されるトラフィックの割合を入力します。

  8. [次へ] をクリックします。

確認と作成

  1. [Review] をクリックします。
  2. ルーティング ポリシー構成を使用して、Cloud DNS レコードセットを確認します。
  3. [作成] をクリックします。

リソース レコード セットの場合は、ルーティング ポリシー(routingPolicy)または DNS データ(rrdatas)のいずれかを設定します。両方を設定することはできません。ルーティング ポリシーと DNS データの間で変更するには、リソース レコード セットを更新します。たとえば、DNS データ(rrdatas)を含むリソース レコード セットをルーティング ポリシー(routingPolicy)を含むように変更するには、rrdatas を削除し、routingPolicy を同じリソース レコード セットに追加します。

プライベート ゾーンの DNS ルーティング ポリシーを作成するには、次の操作を行います。

gcloud dns record-sets create コマンドを実行します。

gcloud dns record-sets create RRSET_NAME \
  --ttl=TTL \
  --type=RRSET_TYPE \
  --zone=MANAGED_ZONE \
  --routing-policy-type=WRR \
  --routing-policy-data=ROUTING_POLICY_DATA \
  --enable-health-checking

以下を置き換えます。

  • RRSET_NAME: 接尾辞としてこのゾーンの DNS 名を使用した受信クエリと一致する DNS 名(例: service.example.com)。
  • TTL: リゾルバが ResourceRecordSet をキャッシュに保存する秒単位の TTL(例: 30)。
  • RRSET_TYPE: この ResourceRecordSet のリソース レコードタイプ(A など)。 サポートされているレコードタイプの一覧については、DNS ルーティング ポリシーでサポートされるレコードタイプをご覧ください。
  • MANAGED_ZONE: この ResourceRecordSet が関連付けられているマネージド ゾーン(service-zone など)。この ResourceRecordSet の名前には、接尾辞としてマネージド ゾーンの DNS 名が必要です。
  • ROUTING_POLICY_DATA: ${weight_percent}:${rrdatas} 形式のセミコロン区切りリストを入力します(例: .8=203.0.113.1;.2=198.51.100.1)。重みは正の小数で指定します。ターゲットにルーティングされるトラフィックの割合は、すべての重みの合計に対する個々の重みの比率から計算されます。転送ルール名は有効な値であり、ヘルスチェックが行われます。
  • --enable-health-checking: ヘルスチェックを有効にするフラグ。このフラグを使用する場合は、--routing-policy-data フィールドに IP アドレスではなく転送ルール名を指定する必要があります。
gcloud dns record-sets create RRSET_NAME \
  --ttl=TTL \
  --type=RRSET_TYPE \
  --zone=MANAGED_ZONE \
  --routing-policy-type=GEO \
  --routing-policy-data=ROUTING_POLICY_DATA \
  --enable-health-checking

以下を置き換えます。

  • RRSET_NAME: 接尾辞としてこのゾーンの DNS 名を使用した受信クエリと一致する DNS 名(例: service.example.com)。
  • TTL: リゾルバが ResourceRecordSet をキャッシュに保存する秒単位の TTL(例: 30)。
  • RRSET_TYPE: この ResourceRecordSet のリソース レコードタイプ(A など)。 サポートされているレコードタイプの一覧については、DNS ルーティング ポリシーでサポートされるレコードタイプをご覧ください。
  • MANAGED_ZONE: この ResourceRecordSet が関連付けられているマネージド ゾーン(service-zone など)。この ResourceRecordSet の名前には、接尾辞としてマネージド ゾーンの DNS 名が必要です。
  • ROUTING_POLICY_DATA: ${region}=${IP_address} 形式のセミコロン区切りリストを入力します(例: asia-east1=198.51.100.1;us-central1=203.0.113.1)。1 つのリージョンに複数の IP アドレスを指定するには、IP アドレスをカンマで区切ります。転送ルール名は有効な値であり、ヘルスチェックが行われます。
  • --enable-health-checking: ヘルスチェックを有効にするフラグ。このフラグを使用する場合は、--routing-policy-data フィールドに IP アドレスではなく転送ルール名を指定する必要があります。
gcloud dns record-sets create RRSET_NAME \
  --ttl=TTL \
  --type=RRSET_TYPE \
  --zone=MANAGED_ZONE \
  --routing-policy-type=GEO \
  --routing-policy-data=ROUTING_POLICY_DATA \
  --enable-geo-fencing \
  --enable-health-checking

以下を置き換えます。

  • RRSET_NAME: 接尾辞としてこのゾーンの DNS 名を使用した受信クエリと一致する DNS 名(例: service.example.com)。
  • TTL: リゾルバが ResourceRecordSet をキャッシュに保存する秒単位の TTL(例: 30)。
  • RRSET_TYPE: この ResourceRecordSet のリソース レコードタイプ(A など)。 サポートされているレコードタイプの一覧については、DNS ルーティング ポリシーでサポートされるレコードタイプをご覧ください。
  • MANAGED_ZONE: この ResourceRecordSet が関連付けられているマネージド ゾーン(service-zone など)。この ResourceRecordSet の名前には、接尾辞としてマネージド ゾーンの DNS 名が必要です。
  • ROUTING_POLICY_DATA: ${region}=${IP_address} 形式のセミコロン区切りリストを入力します(例: asia-east1=198.51.100.1;us-central1=203.0.113.1)。1 つのリージョンに複数の IP アドレスを指定するには、IP アドレスをカンマで区切ります。転送ルール名は有効な値であり、ヘルスチェックが行われます。
  • --enable-geo-fencing: GEO ルーティング ポリシーの場合、リージョン内のすべてのエンドポイントが異常な場合に、トラフィックをリージョンを超えてフェイルオーバーするかどうかを決定します。設定すると、そのリージョンのすべてのエンドポイントが異常な場合であっても、Cloud DNS は常に最も近いリージョンにクエリを送信します。ジオフェンスを無効にするには、--no-enable-geo-fencing を使用します。設定されていない場合、リージョン内のすべてのエンドポイントが正常でない場合は、Cloud DNS は次に最も近いリージョンにクエリを送信します。デフォルトは false です。
  • --enable-health-checking: ヘルスチェックを有効にするフラグ。このフラグを使用する場合は、--routing-policy-data フィールドに IP アドレスではなく転送ルール名を指定する必要があります。
gcloud dns record-sets create RRSET_NAME \
  --ttl=TTL \
  --type=RRSET_TYPE \
  --zone=MANAGED_ZONE \
  --routing-policy-type=FAILOVER  \
  --routing-policy-primary-data=ROUTING_POLICY_PRIMARY_DATA \
  --routing-policy-backup-data-type=ROUTING_POLICY_BACKUP_DATA_TYPE \
  --routing-policy-backup-data=ROUTING_POLICY_BACKUP_DATA \
  --backup-data-trickle-ratio=BACKUP_DATA_TRICKLE_RATIO \
  --enable-geo-fencing \
  --enable-health-checking

以下を置き換えます。

  • RRSET_NAME: 接尾辞としてこのゾーンの DNS 名を使用した受信クエリと一致する DNS 名(例: service.example.com)。
  • TTL: リゾルバが ResourceRecordSet をキャッシュに保存する秒単位の TTL(例: 30)。
  • RRSET_TYPE: この ResourceRecordSet のリソース レコードタイプ(A など)。 サポートされているレコードタイプの一覧については、DNS ルーティング ポリシーでサポートされるレコードタイプをご覧ください。
  • MANAGED_ZONE: この ResourceRecordSet が関連付けられているマネージド ゾーン(service-zone など)。この ResourceRecordSet の名前には、接尾辞としてマネージド ゾーンの DNS 名が必要です。
  • ROUTING_POLICY_PRIMARY_DATA: FAILOVER ルーティング ポリシーに使用するプライマリ ターゲット。このターゲットは、1 つ以上の転送ルール(forwarding-rule-1 など)への参照にする必要があります。これらの転送ルールの少なくとも 1 つが正常である限り、すべての正常な転送ルールの IP アドレスを使用してこの名前のクエリに応答します。
  • ROUTING_POLICY_BACKUP_DATA_TYPE: FAILOVER ルーティング ポリシーの場合、バックアップ データで使用されるルーティング ポリシーのタイプ。これは GEO である必要があります。
  • ROUTING_POLICY_BACKUP_DATA: FAILOVER ルーティング ポリシーに使用するバックアップ ターゲット。これらのターゲットは、--routing-policy-primary-data で指定されたすべての転送ルールが異常な場合に使用されます。Cloud DNS は、地域ベースのバックアップ ターゲットのみをサポートします。このフィールドの形式は、--routing-policy-type = 'GEO' の場合の --routing-policy-data のものと一致します(asia-east1=forwarding-rule-2 など)。
  • BACKUP_DATA_TRICKLE_RATIO: プライマリが正常な場合であっても、バックアップ ターゲットに送信するトラフィックの割合。この割合は 0 ~ 1 にする必要があります(0.1 など)。デフォルトは 0 に設定されています。
  • --enable-geo-fencing: GEO ルーティング ポリシーの場合、リージョン内のすべてのエンドポイントが異常な場合に、トラフィックをリージョンを超えてフェイルオーバーするかどうかを決定します。設定すると、そのリージョンのすべてのエンドポイントが異常な場合であっても、Cloud DNS は常に最も近いリージョンにクエリを送信します。ジオフェンスを無効にするには、--no-enable-geo-fencing を使用します。設定されていない場合、リージョン内のすべてのエンドポイントが正常でない場合は、Cloud DNS は次に最も近いリージョンにクエリを送信します。デフォルトは false です。
  • --enable-health-checking: ヘルスチェックを有効にするフラグ。このフラグを使用する場合は、--routing-policy-data フィールドに IP アドレスではなく転送ルール名を指定する必要があります。

resourceRecordSets.create メソッドを使用します。

POST https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/MANAGED_ZONE/rrsets
{
"name": "RRSET_NAME",
      "type": "RRSET_TYPE",
      "ttl": TTL,
"routingPolicy": {
  "wrr": {
    "items": [
      {
        "weight": WEIGHT,
        "healthCheckedTargets": {
          "internalLoadBalancers": [
            {
              "loadBalancerType": "LOAD_BALANCER_TYPE"
              "ipAddress": "IP_ADDRESS"
              "port" : "PORT_NUMBER"
              "ipProtocol": "IP_PROTOCOL"
              "networkUrl": "NETWORK_URL"
              "project": "PROJECT_ID"
              "region": "REGION"
            }
          ]
        }
      },
      {
        "weight": WEIGHT,
        "healthCheckedTargets": {
          "internalLoadBalancers": [
            {
              "loadBalancerType": "LOAD_BALANCER_TYPE"
              "ipAddress": "IP_ADDRESS"
              "port" : "PORT_NUMBER"
              "ipProtocol": "IP_PROTOCOL"
              "networkUrl": "NETWORK_URL"
              "project": "PROJECT_ID"
              "region": "REGION"
            }
          ]
        }
      },
    ]
  }
}
}

以下を置き換えます。

  • PROJECT_ID: プロジェクトの ID
  • MANAGED_ZONE: この ResourceRecordSet が関連付けられているマネージド ゾーン(service-zone など)。この ResourceRecordSet の名前には、接尾辞としてマネージド ゾーンの DNS 名が必要です。
  • RRSET_NAME: 接尾辞としてこのゾーンの DNS 名を使用した受信クエリと一致する DNS 名(例: service.example.com
  • RRSET_TYPE: この ResourceRecordSet のリソース レコードタイプ(A など)
  • TTL: リゾルバがこの ResourceRecordSet をキャッシュに保存する秒単位の TTL(例: 30
  • WEIGHT: WRR ポリシーの場合、${weight_percent}=${rrdatas} 形式のセミコロン区切りリスト(.8=10.128.1.1;.2=10.130.1.1 など)。任意の正の小数で重みを指定します。 注: 重みは正の数値として指定する必要があります。ターゲットにルーティングされるトラフィックの割合は、すべての重みの合計に対する個々の重みの比率から計算されます。
  • LOAD_BALANCER_TYPE: ロードバランサのタイプ(regionalL4ilbglobalL7ilbregionalL7ilb など)。 この設定は省略可能です。
  • IP_ADDRESS: 転送ルールが提供する IP アドレス
  • PORT_NUMBER: ポート番号
  • IP_PROTOCOL: ヘルスチェックに使用されるプロトコルを指定します。有効なオプションは tcpudp です。
  • NETWORK_URL: この転送ルールが適用されるネットワーク URL
  • REGION: 転送ルールを作成したリージョン
POST https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/MANAGED_ZONE/rrsets
{
          "name": "RRSET_NAME",
          "type": "RRSET_TYPE",
          "ttl": TTL,
          "routingPolicy": {
        "geo": {
            "items": [
            {
                "location": "LOCATION",
                "healthCheckedTargets": {
                  "internalLoadBalancers": [
                    {
                    "loadBalancerType": "LOAD_BALANCER_TYPE"
                    "ipAddress": "IP_ADDRESS"
                    "port" : "PORT_NUMBER"
                    "ipProtocol": "IP_PROTOCOL"
                    "networkUrl": "NETWORK_URL"
                    "project": "PROJECT_ID"
                    "region": "REGION"
                    }
                  ]
                }
            },
            {
                "location": "LOCATION",
                "healthCheckedTargets": {
                  "internalLoadBalancers": [
                    {
                    "loadBalancerType": "LOAD_BALANCING_TYPE"
                    "ipAddress": "IP_ADDRESS"
                    "port" : "PORT_NUMBER"
                    "ipProtocol": "IP_PROTOCOL"
                    "networkUrl": "NETWORK_URL"
                    "project": "PROJECT_ID"
                    "region": "REGION"
                    }
                  ]
                }
            },
            }
        ]

      }
  }
}

以下を置き換えます。

  • PROJECT_ID: プロジェクトの ID
  • MANAGED_ZONE: この ResourceRecordSet が関連付けられているマネージド ゾーン(service-zone など)。この ResourceRecordSet の名前には、接尾辞としてマネージド ゾーンの DNS 名が必要です。
  • RRSET_NAME: 接尾辞としてこのゾーンの DNS 名を使用した受信クエリと一致する DNS 名(例: service.example.com
  • RRSET_TYPE: この ResourceRecordSet のリソース レコードタイプ(A など)
  • TTL: リゾルバがこの ResourceRecordSet をキャッシュに保存する秒単位の TTL(例: 30
  • LOCATION: GEO ポリシーの場合に、ポリシーを作成する位置情報(asia-east1 など)
  • LOAD_BALANCER_TYPE: ロードバランサのタイプ(regionalL4ilbglobalL7ilbregionalL7ilb など)。 この設定は省略可能です。
  • IP_ADDRESS: 転送ルールが提供する IP アドレス
  • PORT_NUMBER: 内部ロードバランサのポート番号
  • IP_PROTOCOL: ヘルスチェックに使用されるプロトコルを指定します。有効なオプションは tcpudp です。
  • NETWORK_URL: この転送ルールが適用されるネットワーク URL
  • REGION: 転送ルールを作成したリージョン

フェイルオーバー オプションでは、Cloud DNS は GEO ポリシーのみをサポートします。

POST https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/MANAGED_ZONE/rrsets
{
"name": "RRSET_NAME",
      "type": "RRSET_TYPE",
      "ttl": TTL,
"routingPolicy": {
  "primaryBackup": {
    "trickleTraffic": TRICKLE_TRAFFIC,
    "primaryTargets": {
      "internalLoadBalancers": [
        {
          "ipAddress": "IP_ADDRESS"
          "ipProtocol": "IP_PROTOCOL"
          "loadBalancerType": "LOAD_BALANCER_TYPE"
          "networkUrl": "NETWORK_URL"
          "port": "PORT_NUMBER"
          "project": "PROJECT_ID"
          "region": "REGION"
        }
      ]
    },
    "backupGeoTargets": {
      "enableFencing": ENABLE_FENCING,
      "items": [
        {
          "location": "LOCATION",
          "rrdatas": [
            "RRDATA"
          ]
        },
        {
          "location": "LOCATION",
          "rrdatas": [
            "RRDATA"
          ]
        }
      ]
    }
  },
}
}

以下を置き換えます。

  • PROJECT_ID: プロジェクトの ID
  • MANAGED_ZONE: この ResourceRecordSet が関連付けられているマネージド ゾーン(service-zone など)。この ResourceRecordSet の名前には、接尾辞としてマネージド ゾーンの DNS 名が必要です。
  • RRSET_NAME: 接尾辞としてこのゾーンの DNS 名を使用した受信クエリと一致する DNS 名(例: service.example.com
  • RRSET_TYPE: この ResourceRecordSet のリソース レコードタイプ(A など)
  • TTL: リゾルバがこの ResourceRecordSet をキャッシュに保存する秒単位の TTL(例: 30
  • TRICKLE_TRAFFIC: プライマリが正常であっても、バックアップ ターゲットに送信するトラフィックの割合は 0 ~ 1 にする必要があります(0.1 など)
  • IP_ADDRESS: 転送ルールが提供する IP アドレス
  • PORT_NUMBER: ポート番号
  • IP_PROTOCOL: ヘルスチェックに使用されるプロトコルを指定します。有効なオプションは tcpudp です。
  • NETWORK_URL: この転送ルールが適用されるネットワーク URL
  • PORT_NUMBER: 内部ロードバランサのポート番号
  • REGION: 転送ルールを作成したリージョン
  • ENABLE_FENCING: GEO ルーティング ポリシーの場合、リージョン内のすべてのエンドポイントが異常な場合に、トラフィックをリージョンを超えてフェイルオーバーするかどうかを決定します。設定すると、そのリージョンのすべてのエンドポイントが異常な場合であっても、Cloud DNS は常に最も近いリージョンにクエリを送信します。設定されていない場合、リージョン内のすべてのエンドポイントが正常でない場合は、Cloud DNS は次に最も近いリージョンにクエリを送信します。 デフォルトは false です。
  • LOCATION: GEO ポリシーの場合に、ポリシーを作成する位置情報(asia-east1 など)
  • WEIGHT: WRR ポリシーの場合、${weight_percent}=${rrdatas} 形式のセミコロン区切りリスト(.8=10.128.1.1;.2=10.130.1.1 など)。任意の正の小数で重みを指定します。
  • RRDATA: リソース レコードセットに関連付けられた任意の値(例: 198.51.100.5)。rrdata1 rrdata2 rrdata3 のように、複数の値を入力することもできます(例: 198.51.100.1 203.0.113.1...)。

一般公開ゾーンの DNS ルーティング ポリシーを作成する(プレビュー

一般公開ゾーンの DNS ルーティング ポリシーを作成するには、次の操作を行います。

コンソールgcloudAPI

構成を開始する

  1. Google Cloud コンソールで Cloud DNS の [ゾーン] ページに移動します。

    Cloud DNS の [ゾーン] に移動

  2. レコードを追加するマネージド ゾーンの名前をクリックします。

  3. [ゾーンの詳細] ページで、[ルーティング ポリシー付きで追加] をクリックします。

ベースデータ

  1. 省略可: [ルーティング ポリシー付きのレコードセットを作成] ページの [DNS 名] に、事前入力された DNS 名のサブドメインを入力します(例: mail)。末尾にドットが自動的に追加されます。

  2. [リソース レコードのタイプ] でオプションを選択します。

  3. [TTL] で、リソース レコードの有効期間を数値で入力します。これはキャッシュに保存できる時間です。この値は正の整数である必要があります

  4. 省略可: [TTL ユニット] で、時間の単位(例: minutes)を選択します。デフォルトは minutes に設定されています。

  5. [次へ] をクリックします。

ルーティング ポリシーの種類

  1. [ルーティング ポリシー] で、[重み付きラウンドロビン]、[位置情報]、[フェイルオーバー] のいずれかを選択します。
  2. [次へ] をクリックします。

ルーティング ポリシーのデータ

  1. [重み] に、リソース レコード(RR)データのサブセクションに対応する重みを入力します。

    この重みは 0.0~1,000.0 の範囲内の正の数字でなければなりません。ターゲットにルーティングされるトラフィックの割合は、すべての重みの合計に対する個々の重みの比率から計算されます。たとえば、ターゲット A の重みが 25、ターゲット B の重みが 75 で、合計重みが 100 の場合、Cloud DNS は、合計トラフィックの 25/100 = 0.25(25%)をターゲット A にルーティングし、75/100= 0.75(75%)をターゲット B にルーティングします。

  2. [外部 IP アドレス] セクションで、次の操作を行います。

    1. [IP アドレス] に外部 IP アドレスを入力します。
    2. 省略可: 現在のプロジェクト内のリソースの外部 IP アドレスを選択するには、[選択] をクリックします。 Google Cloud
    3. ヘルスチェックを有効にするには、[ヘルスチェック 1] を選択します。
    4. 省略可: 別の外部 IP アドレスを追加するには、[IP アドレスを追加] をクリックします。
    5. [完了] をクリックします。
  3. 前の手順でヘルスチェックを有効にした場合、[ヘルスチェック] リストでヘルスチェックを選択するか、次の手順で新しいヘルスチェックを作成します。

    1. [新しいヘルスチェックを作成] をクリックします。
    2. [名前] に、ヘルスチェックの名前を入力します。
    3. 省略可: [説明] に、ヘルスチェックの説明を入力します。
    4. [ソース リージョン] で、ヘルスチェック プローブを送信する 3 つの Google Cloudリージョンを選択します。
    5. 省略可: [プロトコル] リストでプロトコルを選択します。
    6. [ポート] にポート番号を入力します。

      プロトコルとポート番号によって、Cloud DNS がヘルスチェック プローブを送信する方法が決まります。

    7. 省略可: コンテンツ ベースのヘルスチェックを構成するには、[レスポンス] に、最大 1,024 文字の ASCII 文字(シングルバイト)のレスポンス文字列を指定します。

    8. 省略可: ヘルスチェックのロギングを有効にするには、[ログ] で [オン] を選択します。

    9. [チェック間隔] で、ヘルスチェック プローブ間の時間間隔(秒単位)を入力します。チェック間隔は、あるプローバーから発行された 1 回のプローブ開始から、同じプローバーから発行された次の回のプローブ開始までの時間です。

    10. [タイムアウト] で、Google Cloud でプローブに対するレスポンスを待つ時間(秒)を入力します。

    11. [正常しきい値] で、バックエンドが正常であると判定する際に要求されるプローブ結果成功の連続回数を入力します。

    12. [異常しきい値] で、バックエンドを異常とみなすために連続して失敗しなければならないプローブ結果の数を入力します。

    13. [作成] をクリックします。

  4. [次へ] をクリックします。

  1. [ジオフェンス] で [無効] または [有効] を選択します。ジオフェンスを有効にすると、特定の位置情報のすべてのエンドポイントが異常であったとしても、トラフィックをその地域内に制限できます。
  2. [ソース リージョン] で、有効な Google Cloudソース リージョンを選択します。
  3. [外部 IP アドレス] セクションで、次の操作を行います。
    1. [IP アドレス] に外部 IP アドレスを入力します。
    2. 省略可: 現在のプロジェクト内の Google Cloudリソースの外部 IP アドレスを選択するには、[選択] をクリックします。
    3. ヘルスチェックを有効にするには、[ヘルスチェック 1] を選択します。
    4. 省略可: 別の外部 IP アドレスを追加するには、[IP アドレスを追加] をクリックします。
    5. [完了] をクリックします。
  4. 前の手順でヘルスチェックを有効にした場合、[ヘルスチェック] リストでヘルスチェックを選択するか、次の手順で新しいヘルスチェックを作成します。

    1. [新しいヘルスチェックを作成] をクリックします。
    2. [名前] に、ヘルスチェックの名前を入力します。
    3. 省略可: [説明] に、ヘルスチェックの説明を入力します。
    4. [ソース リージョン] で、ヘルスチェック プローブを送信する 3 つの Google Cloudリージョンを選択します。
    5. 省略可: [プロトコル] リストでプロトコルを選択します。
    6. [ポート] にポート番号を入力します。

      プロトコルとポート番号によって、Cloud DNS がヘルスチェック プローブを送信する方法が決まります。

    7. 省略可: コンテンツ ベースのヘルスチェックを構成するには、[レスポンス] に、最大 1,024 文字の ASCII 文字(シングルバイト)のレスポンス文字列を指定します。

    8. 省略可: ヘルスチェックのロギングを有効にするには、[ログ] で [オン] を選択します。

    9. [チェック間隔] で、ヘルスチェック プローブ間の時間間隔(秒単位)を入力します。チェック間隔は、あるプローバーから発行された 1 回のプローブ開始から、同じプローバーから発行された次の回のプローブ開始までの時間です。

    10. [タイムアウト] で、Google Cloud でプローブに対するレスポンスを待つ時間(秒)を入力します。

    11. [正常しきい値] で、バックエンドが正常であると判定する際に要求されるプローブ結果成功の連続回数を入力します。

    12. [異常しきい値] で、バックエンドを異常とみなすために連続して失敗しなければならないプローブ結果の数を入力します。

    13. [作成] をクリックします。

  5. [次へ] をクリックします。

  1. [プライマリ外部 IP アドレス ターゲット] セクションの [IP アドレス] に、このレコードのヘルスチェック対象のプライマリ外部 IP アドレスを入力します。
  2. 省略可: 現在のプロジェクト内の Google Cloudリソースのプライマリ外部 IP アドレスを選択するには、[選択] をクリックします。
  3. 省略可: 別のプライマリ外部 IP アドレスを追加するには、[ターゲットを追加] をクリックします。DNSSEC が有効になっている場合、プライマリ外部 IP アドレス ターゲットは 1 つだけ追加できます。
  4. [バックアップ位置情報ポリシー] セクションで、次の操作を行います。
    1. [ジオフェンス] で [無効] または [有効] を選択します。ジオフェンスを有効にすると、特定の位置情報のすべてのエンドポイントが異常であったとしても、トラフィックをその地域内に制限できます。
    2. [ソース リージョン] で、有効な Google Cloudソース リージョンを選択します。
    3. [外部 IP アドレス] セクションで、次の操作を行います。
      1. [IP アドレス] に外部 IP アドレスを入力します。
      2. 省略可: 現在のプロジェクト内の Google Cloudリソースの外部 IP アドレスを選択するには、[選択] をクリックします。
      3. ヘルスチェックを有効にするには、[ヘルスチェック 1] を選択します。
      4. 省略可: 別の外部 IP アドレスを追加するには、[IP アドレスを追加] をクリックします。
    4. [完了] をクリックします。
  5. 前の手順でヘルスチェックを有効にした場合、[ヘルスチェック] リストでヘルスチェックを選択します。

    既存のヘルスチェックがない場合は、新しいヘルスチェックを作成します。

    1. [新しいヘルスチェックを作成] をクリックします。
    2. [名前] に、ヘルスチェックの名前を入力します。
    3. 省略可: [説明] に、ヘルスチェックの説明を入力します。
    4. [ソース リージョン] で、ヘルスチェック プローブを送信する 3 つの Google Cloudリージョンを選択します。
    5. 省略可: [プロトコル] リストでプロトコルを選択します。
    6. [ポート] にポート番号を入力します。

    プロトコルとポート番号によって、Cloud DNS がヘルスチェック プローブを送信する方法が決まります。

    1. 省略可: コンテンツ ベースのヘルスチェックを構成するには、[レスポンス] に、最大 1,024 文字の ASCII 文字(シングルバイト)のレスポンス文字列を指定します。
    2. 省略可: ヘルスチェックのロギングを有効にするには、[ログ] で [オン] を選択します。
    3. [チェック間隔] で、ヘルスチェック プローブ間の時間間隔(秒単位)を入力します。チェック間隔は、あるプローバーから発行された 1 回のプローブ開始から、同じプローバーから発行された次の回のプローブ開始までの時間です。
    4. [タイムアウト] で、Google Cloud でプローブに対するレスポンスを待つ時間(秒)を入力します。
    5. [正常しきい値] で、バックエンドが正常であると判定する際に要求されるプローブ結果成功の連続回数を入力します。
    6. [異常しきい値] で、バックエンドを異常とみなすために連続して失敗しなければならないプローブ結果の数を入力します。
    7. [作成] をクリックします。
  6. [トリクル トラフィック(%)] フィールドに、プライマリ ターゲットのヘルスチェック ステータスに関係なく、フェイルオーバー ターゲットに送信されるトラフィックの割合を入力します。

  7. [ヘルスチェック] リストで、ヘルスチェックを選択します。

  8. [次へ] をクリックします。

確認と作成

  1. [Review] をクリックします。
  2. ルーティング ポリシー構成を使用して、Cloud DNS レコードセットを確認します。
  3. [作成] をクリックします。

一般公開ゾーンの DNS ルーティング ポリシーを作成するには、次の操作を行います。

  1. 一般公開ゾーンの DNS ルーティング ポリシーでヘルスチェックを有効にするには、外部エンドポイントのヘルスチェックを作成します。

    gcloud beta compute health-checks create コマンドを実行します。

    gcloud beta compute health-checks create PROTOCOL HEALTH_CHECK_NAME \
        --global \
        --check-interval=CHECK_INTERVAL \
        --source-regions=SOURCE_REGIONS \
        --port=PORT_NUMBER
    

    以下を置き換えます。

    • PROTOCOL: ヘルスチェックに使用されるプロトコル。 有効なオプションは httphttpsssltcp です。
    • HEALTH_CHECK_NAME: ヘルスチェックの名前。
    • CHECK_INTERVAL: ヘルスチェック プローブ システムのある接続の開始から次の接続の開始までの時間。単位は秒です。CHECK_INTERVAL の値は 30 秒から 300 秒の範囲で指定してください
    • SOURCE_REGIONS: ヘルスチェック プローブを送信するGoogle Cloud  リージョンのカンマ区切りリスト。
    • PORT_NUMBER: ヘルスチェック リクエストのポート番号。
  2. ResourceRecordSet を作成してルーティング ポリシーを適用するには、gcloud beta dns record-sets create コマンドを実行します。

    gcloud beta dns record-sets create RRSET_NAME \
        --ttl=TTL \
        --type=RRSET_TYPE \
        --zone=MANAGED_ZONE \
        --routing-policy-type=WRR \
        --routing-policy-data=ROUTING_POLICY_DATA \
        --health-check=HEALTH_CHECK_NAME
    

    以下を置き換えます。

    • RRSET_NAME: 接頭辞としてこのゾーンの DNS 名を使用した受信クエリと一致する DNS 名(例: service.example.com)。
    • TTL: リゾルバがこの ResourceRecordSet をキャッシュに保存する秒単位の TTL(例: 30)。
    • RRSET_TYPE: この ResourceRecordSet のリソース レコードタイプ(A など)。
    • MANAGED_ZONE: この ResourceRecordSet が関連付けられているマネージド ゾーン(service-zone など)。この ResourceRecordSet の名前には、接尾辞としてマネージド ゾーンの DNS 名が必要です。
    • ROUTING_POLICY_DATA: ルーティング ポリシーのデータ。 ${weight_percent}:${rrdatas} 形式のセミコロン区切りリストを入力します(例: .8=203.0.113.1;.2=198.51.100.1)。重みは正の小数で指定します。重みは 01000 の範囲の正の数値にする必要があります。
    • HEALTH_CHECK_NAME: 前の手順で作成したヘルスチェックの名前。
    gcloud beta dns record-sets create RRSET_NAME \
        --ttl=TTL \
        --type=RRSET_TYPE \
        --zone=MANAGED_ZONE \
        --routing-policy-type=GEO \
        --routing-policy-data=ROUTING_POLICY_DATA \
        --health-check=HEALTH_CHECK_NAME
    

    以下を置き換えます。

    • RRSET_NAME: 接頭辞としてこのゾーンの DNS 名を使用した受信クエリと一致する DNS 名(例: service.example.com)。
    • TTL: リゾルバがこの ResourceRecordSet をキャッシュに保存する秒単位の TTL(例: 30)。
    • RRSET_TYPE: この ResourceRecordSet のリソース レコードタイプ(A など)。
    • MANAGED_ZONE: この ResourceRecordSet が関連付けられているマネージド ゾーン(service-zone など)。この ResourceRecordSet の名前には、接尾辞としてマネージド ゾーンの DNS 名が必要です。
    • ROUTING_POLICY_DATA: ルーティング ポリシーのデータ。 ${region}=${IP_address},${IP_address} 形式のセミコロン区切りリストを入力します(例: asia-east1=198.51.100.1;us-central1=203.0.113.1, 203.0.113.2)。 1 つのリージョンに複数の IP アドレスを指定するには、IP アドレスをカンマで区切ります。転送ルール名は有効な値であり、ヘルスチェックが行われます。
    • HEALTH_CHECK_NAME: 前の手順で作成したヘルスチェックの名前。
    gcloud beta dns record-sets create RRSET_NAME \
        --ttl=TTL \
        --type=RRSET_TYPE \
        --zone=MANAGED_ZONE \
        --routing-policy-type=GEO \
        --routing-policy-data=ROUTING_POLICY_DATA \
        --health-check=HEALTH_CHECK_NAME \
        --enable-geo-fencing
    

    以下を置き換えます。

    • RRSET_NAME: 接頭辞としてこのゾーンの DNS 名を使用した受信クエリと一致する DNS 名(例: service.example.com)。
    • TTL: リゾルバがこの ResourceRecordSet をキャッシュに保存する秒単位の TTL(例: 30)。
    • RRSET_TYPE: この ResourceRecordSet のリソース レコードタイプ(A など)。
    • MANAGED_ZONE: この ResourceRecordSet が関連付けられているマネージド ゾーン(service-zone など)。この ResourceRecordSet の名前には、接尾辞としてマネージド ゾーンの DNS 名が必要です。
    • ROUTING_POLICY_DATA: ルーティング ポリシーのデータ。 ${region}=${IP_address} 形式のセミコロン区切りリストを入力します(例: asia-east1=198.51.100.1;us-central1=203.0.113.1)。1 つのリージョンに複数の IP アドレスを指定するには、IP アドレスをカンマで区切ります。転送ルール名は有効な値であり、ヘルスチェックが行われます。
    • HEALTH_CHECK_NAME: 前の手順で作成したヘルスチェックの名前。

      --enable-geo-fencing: GEO ルーティング ポリシーの場合、リージョン内のすべてのエンドポイントが異常な場合に、トラフィックをリージョンを超えてフェイルオーバーするかどうかを決定します。設定すると、そのリージョンのすべてのエンドポイントが異常な場合であっても、Cloud DNS は常に最も近いリージョンにクエリを送信します。ジオフェンスを無効にするには、--no-enable-geo-fencing を使用します。設定されていない場合、リージョン内のすべてのエンドポイントが正常でない場合は、Cloud DNS は次に最も近いリージョンにクエリを送信します。デフォルトは false です。

    gcloud beta dns record-sets create RRSET_NAME \
        --ttl=TTL \
        --type=RRSET_TYPE \
        --zone=MANAGED_ZONE \
        --routing-policy-type=FAILOVER \
        --routing-policy-primary-data=ROUTING_POLICY_PRIMARY_DATA \
        --routing-policy-backup-data=ROUTING_POLICY_BACKUP_DATA \
        --routing-policy-backup-data-type=ROUTING_POLICY_BACKUP_DATA_TYPE \
        --backup-data-trickle-ratio=BACKUP_DATA_TRICKLE_RATIO \
        --health-check=HEALTH_CHECK_NAME
    

    以下を置き換えます。

    • RRSET_NAME: 接頭辞としてこのゾーンの DNS 名を使用した受信クエリと一致する DNS 名(例: service.example.com)。
    • TTL: リゾルバがこの ResourceRecordSet をキャッシュに保存する秒単位の TTL(例: 30
    • RRSET_TYPE: この ResourceRecordSet のリソース レコードタイプ(A など)。
    • MANAGED_ZONE: この ResourceRecordSet が関連付けられているマネージド ゾーン(service-zone など)。この ResourceRecordSet の名前には、接尾辞としてマネージド ゾーンの DNS 名が必要です。
    • ROUTING_POLICY_PRIMARY_DATA: FAILOVER ルーティング ポリシーに使用するプライマリ ターゲット。このターゲットは、1 つ以上の転送ルール(forwarding-rule-1 など)への参照にする必要があります。これらの転送ルールの少なくとも 1 つが正常である限り、すべての正常な転送ルールの IP アドレスを使用してこの名前のクエリに応答します。
    • ROUTING_POLICY_BACKUP_DATA: FAILOVER ルーティング ポリシーに使用するバックアップ ターゲット。これらのターゲットは、--routing-policy-primary-data で指定されたすべての転送ルールが異常な場合に使用されます。Cloud DNS は、地域ベースのバックアップ ターゲットのみをサポートします。このフィールドの形式は、--routing-policy-type = 'GEO' の場合の --routing-policy-data のものと一致します(asia-east1=forwarding-rule-2 など)。
    • ROUTING_POLICY_BACKUP_DATA_TYPE: FAILOVER ルーティング ポリシーの場合、バックアップ データで使用されるルーティング ポリシーのタイプ。これは GEO にする必要があります。
    • BACKUP_DATA_TRICKLE_RATIO: プライマリが正常な場合であっても、バックアップ ターゲットに送信するトラフィックの割合。この割合は 0~1 にする必要があります(0.1 など)。 デフォルトは 0 に設定されています。
    • HEALTH_CHECK_NAME: 前の手順で作成したヘルスチェックの名前。
  1. 一般公開ゾーンの DNS ルーティング ポリシーでヘルスチェックを有効にするには、healthChecks.insert メソッドを使用します。

  2. ResourceRecordSet を作成してルーティング ポリシーを適用するには、resourceRecordSets.create メソッドを使用します。

        POST https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/MANAGED_ZONE/rrsets
        {
            "name": "RRSET_NAME",
            "type": "RRSET_TYPE",
            "ttl": TTL,
            "routingPolicy": {
                "healthCheck": "https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/healthChecks/HEALTH_CHECK_NAME"
                "wrr": {
                    "items": [{
                        "weight": WEIGHT,
                        "healthCheckedTargets": {
                            "rrdata": ["RRDATA"]
                        }
                    }, {
                        "weight": 1.0,
                        "healthCheckedTargets": {
                            "rrdata": ["RRDATA", "RRDATA"]
                        }
                    }]
                }
            }
        }
      

    以下を置き換えます。

    • PROJECT_ID: プロジェクトの ID
    • MANAGED_ZONE: この ResourceRecordSet が関連付けられているマネージド ゾーン(service-zone など)。この ResourceRecordSet の名前には、接尾辞としてマネージド ゾーンの DNS 名が必要です。
    • RRSET_NAME: 接尾辞としてこのゾーンの DNS 名を使用した受信クエリと一致する DNS 名(例: service.example.com)。
    • TTL: リゾルバがこの ResourceRecordSet をキャッシュに保存する秒単位の TTL(例: 30)。
    • RRSET_TYPE: この ResourceRecordSet のリソース レコードタイプ(A など)。
    • HEALTH_CHECK_NAME: ヘルスチェックの名前。
    • WEIGHT: WRR ポリシーの場合、${weight_percent}=${rrdatas} 形式のセミコロン区切りリスト(.8=10.128.1.1;.2=10.130.1.1 など)。任意の正の小数で重みを指定します。 注: 重みは正の数値で指定する必要があります。ターゲットにルーティングされるトラフィックの割合は、すべての重みの合計に対する個々の重みの比率から計算されます。
    • RRDATA: リソース レコードセットに関連付けられた任意の値(例: 198.51.100.5)。rrdata1 rrdata2 rrdata3 のように、複数の値を入力することもできます(例: 198.51.100.1203.0.113.1)。

        POST https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/MANAGED_ZONE/rrsets
        {
            "name": "RRSET_NAME",
            "type": "RRSET_TYPE",
            "ttl": TTL,
            "routingPolicy": {
                "healthCheck": "https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/healthChecks/HEALTH_CHECK_NAME"
                "geo": {
              "enableFencing": ENABLE_FENCING
                    "items": [{
                        "location": "LOCATION",
                        "healthCheckedTargets": {
                            "rrdata": ["RRDATA"]
                        }
                    }, {
                        "location": "LOCATION",
                        "healthCheckedTargets": {
                            "rrdata": ["RRDATA", "RRDATA"]
                        }
                    }]
                }
            }
        }
      

    以下を置き換えます。

    • PROJECT_ID: プロジェクトの ID
    • MANAGED_ZONE: この ResourceRecordSet が関連付けられているマネージド ゾーン(service-zone など)。この ResourceRecordSet の名前には、接尾辞としてマネージド ゾーンの DNS 名が必要です。
    • RRSET_NAME: 接尾辞としてこのゾーンの DNS 名を使用した受信クエリと一致する DNS 名(例: service.example.com)。
    • RRSET_TYPE: この ResourceRecordSet のリソース レコードタイプ(A など)。
    • TTL: リゾルバがこの ResourceRecordSet をキャッシュに保存する秒単位の TTL(例: 30)。
    • HEALTH_CHECK_NAME: ヘルスチェックの名前。
    • ENABLE_FENCING: GEO ルーティング ポリシーの場合、リージョン内のすべてのエンドポイントが異常な場合に、トラフィックをリージョンを超えてフェイルオーバーするかどうかを決定します。設定すると、そのリージョンのすべてのエンドポイントが異常な場合であっても、Cloud DNS は常に最も近いリージョンにクエリを送信します。設定されていない場合、リージョン内のすべてのエンドポイントが正常でない場合は、Cloud DNS は次に最も近いリージョンにクエリを送信します。有効なオプションは truefalse です。このデフォルト設定は false です。
    • LOCATION: GEO ポリシーの場合、ポリシーを作成する位置情報(asia-east1 など)。
    • RRDATA: リソース レコードセットに関連付けられた任意の値(例: 198.51.100.5)。rrdata1 rrdata2 rrdata3 のように、複数の値を入力することもできます(例: 198.51.100.1203.0.113.1)。

    フェイルオーバー オプションでは、Cloud DNS は GEO ポリシーのみをサポートします。

        POST https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/MANAGED_ZONE/rrsets
        {
            "name": "RRSET_NAME",
            "type": "RRSET_TYPE",
            "ttl": TTL,
            "routingPolicy": {
                "healthCheck": "https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/healthChecks/HEALTH_CHECK_NAME"
                "primaryBackup": {
                    "trickleTraffic": TRICKLE_TRAFFIC,
                    "primaryTargets": {
                        "rrdata": ["RRDATA"]
                    }
                    "backupGeoTargets": {
                        "enableFencing": ENABLE_FENCING,
                        "items": [{
                            "location": "LOCATION",
                            "rrdatas": ["RRDATA]
                        }, {
                            "location": "LOCATION",
                            "rrdatas": ["RRDATA", "RRDATA"]
                        }]
                    }
                }
            }
        }
      

    以下を置き換えます。

    • PROJECT_ID: プロジェクトの ID
    • MANAGED_ZONE: この ResourceRecordSet が関連付けられているマネージド ゾーン(service-zone など)。この ResourceRecordSet の名前には、接尾辞としてマネージド ゾーンの DNS 名が必要です。
    • RRSET_NAME: 接尾辞としてこのゾーンの DNS 名を使用した受信クエリと一致する DNS 名(例: service.example.com)。
    • RRSET_TYPE: この ResourceRecordSet のリソース レコードタイプ(A など)。
    • TTL: リゾルバがこの ResourceRecordSet をキャッシュに保存する秒単位の TTL(例: 30)。
    • HEALTH_CHECK_NAME: ヘルスチェックの名前。
    • TRICKLE_TRAFFIC: プライマリが正常であっても、バックアップ ターゲットに送信するトラフィックの割合は 0 ~ 1 にする必要があります(0.1 など)。
    • RRDATA: リソース レコードセットに関連付けられた任意の値(例: 198.51.100.5)。rrdata1 rrdata2 rrdata3 のように、複数の値を入力することもできます(例: 198.51.100.1203.0.113.1)。
    • ENABLE_FENCING: GEO ルーティング ポリシーの場合、リージョン内のすべてのエンドポイントが異常な状態になると、リージョンを超えてトラフィックをフェイルオーバーする必要があるかどうかを決定します。設定すると、そのリージョンのすべてのエンドポイントが異常な場合であっても、Cloud DNS は常に最も近いリージョンにクエリを送信します。設定されていない場合、リージョン内のすべてのエンドポイントが正常でない場合は、Cloud DNS は次に最も近いリージョンにクエリを送信します。 デフォルトの設定は false です。
    • LOCATION: GEO ポリシーの場合、ポリシーを作成する位置情報(asia-east1 など)。

DNS ルーティング ポリシーを更新する

リソース レコードセットのルーティング ポリシーを更新する手順は次のとおりです。

コンソールgcloudAPI
  1. Google Cloud コンソールで、Cloud DNS の [ゾーン] ページに移動します。

    Cloud DNS の [ゾーン] に移動

  2. リソース レコードセットのルーティング ポリシーを更新するゾーンをクリックします。

  3. [ゾーンの詳細] ページで、更新するリソース レコードセットの横にある [ 編集] をクリックします。

  4. 更新が完了したら、[保存] をクリックします。

gcloud dns record-sets update コマンドを実行します。

gcloud dns record-sets update RRSET_NAME \
  --ttl=TTL \
  --type=RRSET_TYPE \
  --zone=MANAGED_ZONE \
  --routing-policy-type=WRR \
  --routing-policy-data=ROUTING_POLICY_DATA \
  --enable-health-checking
gcloud dns record-sets update RRSET_NAME \
  --ttl=TTL \
  --type=RRSET_TYPE \
  --zone=MANAGED_ZONE \
  --routing-policy-type=GEO \
  --routing-policy-data=ROUTING_POLICY_DATA \
  --enable-health-checking
gcloud dns record-sets update RRSET_NAME \
  --ttl=TTL \
  --type=RRSET_TYPE \
  --zone=MANAGED_ZONE \
  --routing-policy-type=GEO \
  --routing-policy-data=ROUTING_POLICY_DATA \
  --enable-geo-fencing
  --enable-health-checking
gcloud dns record-sets update RRSET_NAME \
  --ttl=TTL \
  --type=RRSET_TYPE \
  --zone=MANAGED_ZONE \
  --routing-policy-type=FAILOVER \
  --enable-geo-fencing \
  --routing-policy-primary-data=ROUTING_POLICY_PRIMARY_DATA \
  --routing-policy-backup-data=ROUTING_POLICY_BACKUP_DATA \
  --backup-data-trickle-ratio=BACKUP_DATA_TRICKLE_RATIO \
  --enable-health-checking

以下を置き換えます。

  • RRSET_NAME: 接尾辞としてこのゾーンの DNS 名を使用した受信クエリと一致する DNS 名(例: service.example.com
  • TTL: リゾルバがこの ResourceRecordSet をキャッシュに保存する秒単位の TTL(例: 30
  • RRSET_TYPE: この ResourceRecordSet のリソース レコードタイプ(A など)

    サポートされているレコードタイプの一覧については、リソース レコードのタイプの選択をご覧ください。

  • MANAGED_ZONE: この ResourceRecordSet が関連付けられているマネージド ゾーン(service-zone など)。この ResourceRecordSet の名前には、接尾辞としてマネージド ゾーンの DNS 名が必要です。

  • ROUTING_POLICY_TYPE: ルーティング ポリシーのタイプ。

    重み付きラウンドロビンの場合は WRR、位置情報の場合は GEO、フェイルオーバー ポリシーの場合は FAILOVER を入力します。選択されたタイプがポリシーになった後は、このフィールドを変更できません。ポリシーを削除して、別のタイプの新しいポリシーを追加することのみ可能です。

  • ROUTING_POLICY_DATA: ルーティング ポリシーのデータ

    • --routing-policy-type=WRR${weight_percent}:${rrdatas} 形式のセミコロン区切りリストを入力します(例: .8=203.0.113.1;.2=198.51.100.1)。重みは正の小数で指定します。ターゲットにルーティングされるトラフィックの割合は、すべての重みの合計に対する個々の重みの比率から計算されます。転送ルール名は有効な値であり、ヘルスチェックが行われます。
    • --routing-policy-type=GEO${region}=${IP_address} 形式のセミコロン区切りリストを入力します(例: asia-east1=198.51.100.1;us-central1=203.0.113.1)。1 つのリージョンに複数の IP アドレスを指定するには、IP アドレスをカンマで区切ります。転送ルール名は有効な値であり、ヘルスチェックが行われます。
    • --routing-policy-type=FAILOVER に、作成した転送ルールの名前を形式 ${region}=${Forwarding rule name} で入力します。

  • --enable-geo-fencing: GEO ルーティング ポリシーの場合、リージョン内のすべてのエンドポイントが異常な状態になると、リージョンを超えてトラフィックをフェイルオーバーするかどうかを決定します。設定すると、そのリージョンのすべてのエンドポイントが異常な場合であっても、Cloud DNS は常に最も近いリージョンにクエリを送信します。ジオフェンスを無効にするには、--no-enable-geo-fencing を使用します。設定されていない場合、リージョン内のすべてのエンドポイントが異常と判断され、Cloud DNS は次に最も近いリージョンにクエリを転送します。デフォルトの設定は false です。

  • ROUTING_POLICY_PRIMARY_DATA: FAILOVER ルーティング ポリシーに使用するプライマリ ターゲット。このターゲットは、1 つ以上の転送ルール(forwarding-rule-1 など)への参照にする必要があります。これらの転送ルールの少なくとも 1 つが正常である限り、すべての正常な転送ルールの IP アドレスを使用してこの名前のクエリに応答します。

  • ROUTING_POLICY_BACKUP_DATA: FAILOVER ルーティング ポリシーに使用するバックアップ ターゲット。これらのターゲットは、--routing-policy-primary-data で指定されたすべての転送ルールが異常な場合に使用されます。Cloud DNS は、地域ベースのバックアップ ターゲットのみをサポートします。このフィールドの形式は、--routing-policy-type = 'GEO' の場合の --routing-policy-data のものと一致します(asia-east1=forwarding-rule-2 など)。

  • BACKUP_DATA_TRICKLE_RATIO: プライマリが正常な場合であっても、バックアップ ターゲットに送信するトラフィックの割合。この割合は 0 ~ 1 にする必要があります(0.1 など)。デフォルトは 0 に設定されています。

  • --enable-health-checking: --routing-policy-data への rrdata として提供される転送ルールのヘルスチェックを有効にします。

resourceRecordSets.patch メソッドを使用します。rrset.rrdatas または rrset.routingPolicy のいずれかを指定します。routingPolicy を指定する場合は、新しい routingPolicy フィールド全体を指定する必要があります。

WRR位置情報

WRR ポリシーには、次のメソッドを使用します。

PATCH https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/MANAGED_ZONE/rrsets
{
      "name": "RRSET_NAME.",
      "type": "RRSET_TYPE",
      "ttl": TTL,
      "routingPolicy": {
        "wrrPolicy": {
            "item": [
                  {
                      "weight": WEIGHT,
                      "rrdatas": ["RRDATA"]
                  },
                  {
                      "weight": WEIGHT,
                      "rrdatas": ["RRDATA"]
                  }
            ],
          }
    }
}

次のメソッドを使用します。

PATCH https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/MANAGED_ZONE/rrsets
{
          "name": "RRSET_NAME",
          "type": "RRSET_TYPE",
          "ttl": TTL,
          "routingPolicy": {
        "geo": {
            "items": [
            {
                "location": "LOCATION",
                "healthCheckedTargets": {
                  "internalLoadBalancers": [
                    {
                    "loadBalancerType": "LOAD_BALANCER_TYPE"
                    "ipAddress": "IP_ADDRESS"
                    "port" : "PORT_NUMBER"
                    "ipProtocol": "IP_PROTOCOL"
                    "networkUrl": "NETWORK_URL"
                    "project": "PROJECT"
                    "region": "REGION"
                    }
                  ]
                }
            },
            {
                "location": "LOCATION",
                "healthCheckedTargets": {
                  "internalLoadBalancers": [
                    {
                    "loadBalancerType": "LOAD_BALANCING_TYPE"
                    "ipAddress": "IP_ADDRESS"
                    "port" : "PORT_NUMBER"
                    "ipProtocol": "IP_PROTOCOL"
                    "networkUrl": "NETWORK_URL"
                    "project": "PROJECT"
                    "region": "REGION"
                    }
                  ]
                }
            },
            }
        ]

      }
  }
}

以下を置き換えます。

  • PROJECT_ID: プロジェクトの ID
  • MANAGED_ZONE: この ResourceRecordSet が関連付けられているマネージド ゾーン(service-zone など)。この ResourceRecordSet の名前には、接尾辞としてマネージド ゾーンの DNS 名が必要です。
  • RRSET_NAME: 接尾辞としてこのゾーンの DNS 名を使用した受信クエリと一致する DNS 名(例: service.example.com
  • RRSET_TYPE: この ResourceRecordSet のリソース レコードタイプ(A など)
  • TTL: リゾルバがこの ResourceRecordSet をキャッシュに保存する秒単位の TTL(例: 30
  • TRICKLE_TRAFFIC: プライマリが正常であっても、バックアップ ターゲットに送信するトラフィックの割合は 0 ~ 1 にする必要があります(0.1 など)
  • ENABLE_FENCING: GEO ルーティング ポリシーの場合、リージョン内のすべてのエンドポイントが異常な場合に、トラフィックをリージョンを超えてフェイルオーバーするかどうかを決定します。設定すると、そのリージョンのすべてのエンドポイントが異常な場合であっても、Cloud DNS は常に最も近いリージョンにクエリを送信します。設定されていない場合、リージョン内のすべてのエンドポイントが正常でない場合は、Cloud DNS は次に最も近いリージョンにクエリを送信します。 デフォルトは false です。
  • LOCATION: GEO ポリシーの場合に、ポリシーを更新する位置情報(asia-east1 など)
  • WEIGHT: WRR ポリシーの場合、${weight_percent}=${rrdatas} 形式のセミコロン区切りリスト(.8=10.128.1.1;.2=10.130.1.1 など)。任意の正の小数で重みを指定します。
  • RRDATA: リソース レコードセットに関連付けられた任意の値(例: 198.51.100.5)。rrdata1 rrdata2 rrdata3 のように、複数の値を入力することもできます(例: 198.51.100.1 203.0.113.1...)。
  • LOAD_BALANCER_TYPE: ロードバランサのタイプ(regionalL4ilbglobalL7ilbregionalL7ilb など)。 この設定は省略可能です。
  • IP_ADDRESS: 転送ルールが提供する IP アドレス
  • PORT_NUMBER: ポート番号
  • IP_PROTOCOL: ヘルスチェックに使用されるプロトコルを指定します。有効なオプションは tcpudp です。
  • NETWORK_URL: この転送ルールが適用されるネットワーク URL
  • REGION: 転送ルールを作成したリージョン

DNS ルーティング ポリシーを削除する

ルーティング ポリシーを削除するには、ルーティング ポリシーを含むリソース レコードセットを削除する必要があります。方法は次のとおりです。

コンソールgcloudAPI
  1. Google Cloud コンソールで、Cloud DNS の [ゾーン] ページに移動します。

    Cloud DNS の [ゾーン] に移動

  2. リソース レコードセットを削除するゾーンをクリックします。

  3. [ゾーンの詳細] ページで、削除するリソース レコードセットの DNS 名の横にあるチェックボックスをオンにします。

  4. [レコードセットを削除] をクリックします。

gcloud dns record-sets delete コマンドを実行します。

gcloud dns record-sets delete RRSET_NAME \
    --type=RRSET_TYPE \
    --zone=MANAGED_ZONE \

以下を置き換えます。

  • RRSET_NAME: 接尾辞としてこのゾーンの DNS 名を使用した受信クエリと一致する DNS 名(例: service.example.com
  • RRSET_TYPE: この ResourceRecordSet のリソース レコードタイプ(A など)

    サポートされているレコードタイプの一覧については、リソース レコードのタイプの選択をご覧ください。

  • MANAGED_ZONE: この ResourceRecordSet が関連付けられているマネージド ゾーン(service-zone など)。この ResourceRecordSet の名前には、接尾辞としてマネージド ゾーンの DNS 名が必要です。

resourceRecordSets.delete メソッドを使用します。

DELETE https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/MANAGED_ZONE/rrsets/RRSET_NAME/RRSET_TYPE

以下を置き換えます。

  • PROJECT_ID: プロジェクトの ID
  • MANAGED_ZONE: この ResourceRecordSet が関連付けられているマネージド ゾーン(my-zone-name など)。この ResourceRecordSet の名前には、接尾辞としてマネージド ゾーンの DNS 名が必要です。
  • RRSET_NAME: 接尾辞としてこのゾーンの DNS 名を使用した受信クエリと一致する DNS 名(例: test.example.com
  • RRSET_TYPE: この ResourceRecordSet のリソース レコードタイプ(A など)

次のステップ