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

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

始める前に

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

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

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

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

  • パブリック ゾーンの DNS ルーティング ポリシーを構成する前に、組織のポリシーの制約 constraints/compute.disableInternetNetworkEndpointGroup を無効にします。詳細については、組織のポリシーの制約をご覧ください。

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

プライベート ゾーンの DNS ルーティング ポリシーを作成する

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

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

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

コンソール

構成を開始する

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

    Cloud DNS の [ゾーン] に移動

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

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

ベースデータ

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

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

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

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

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

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

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

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

WRR

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

    この重みは 0.0~1,000.0 の範囲内の正の数字でなければなりません。ターゲットにルーティングされるトラフィックの割合は、すべての重みの合計に対する個々の重みの比率から計算されます。たとえば、ターゲット A の重みが 25、ターゲット B の重みが 75 で、合計重みが 100 の場合、合計トラフィックの 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. [確認] をクリックします。
  2. ルーティング ポリシー構成を含む Cloud DNS レコードセットを確認します。
  3. [作成] をクリックします。

gcloud

リソース レコードセットに対して、ルーティング ポリシー(routingPolicy)または DNS データ(rrdatas)のどちらか一方を設定します。両方を設定することはできません。ルーティング ポリシーと DNS データの間で切り替えるには、リソース レコードセットを更新します。たとえば、DNS データ(rrdatas)を含むリソース レコードセットにルーティング ポリシー(routingPolicy)を含めるには、rrdatas を削除し、routingPolicy を同じリソース レコードセットに追加します。

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

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

WRR

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 ルーティング ポリシーの場合、リージョン内のすべてのエンドポイントが異常な場合にリージョンを越えてトラフィックをフェイルオーバーするかどうかを指定します。これを設定すると、そのリージョンのすべてのエンドポイントが異常な場合でも、常に最も近いリージョンにクエリが送信されます。ジオフェンスを無効にするには、--no-enable-geo-fencing を使用します。これが設定されていない場合、リージョン内のすべてのエンドポイントが異常になると、次に最も近いリージョンにクエリが送信されます。デフォルトは 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 ルーティング ポリシーの場合、リージョン内のすべてのエンドポイントが異常な場合にリージョンを越えてトラフィックをフェイルオーバーするかどうかを指定します。これを設定すると、そのリージョンのすべてのエンドポイントが異常な場合でも、常に最も近いリージョンにクエリが送信されます。ジオフェンスを無効にするには、--no-enable-geo-fencing を使用します。これが設定されていない場合、リージョン内のすべてのエンドポイントが異常になると、次に最も近いリージョンにクエリが送信されます。デフォルトは false です。
  • --enable-health-checking: ヘルスチェックを有効にするフラグ。このフラグを使用する場合は、--routing-policy-data フィールドに IP アドレスではなく転送ルール名を指定する必要があります。

API

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

WRR

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 など)。負でない任意の 10 進数で重みを指定します。注: 重みは負でない数値として指定する必要があります。ターゲットにルーティングされるトラフィックの割合は、すべての重みの合計に対する個々の重みの比率から計算されます。
  • 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 ルーティング ポリシーの場合、リージョン内のすべてのエンドポイントが異常な場合にリージョンを越えてトラフィックをフェイルオーバーするかどうかを指定します。これを設定すると、そのリージョンのすべてのエンドポイントが異常な場合でも、常に最も近いリージョンにクエリが送信されます。これが設定されていない場合、リージョン内のすべてのエンドポイントが異常になると、次に最も近いリージョンにクエリが送信されます。デフォルトは false です。
  • LOCATION: GEO ポリシーの場合、ポリシーを作成する位置情報(asia-east1 など)
  • WEIGHT: WRR ポリシーの場合、${weight_percent}=${rrdatas} 形式のセミコロン区切りリスト(.8=10.128.1.1;.2=10.130.1.1 など)。負でない任意の 10 進数で重みを指定します。
  • RRDATA: リソース レコードセットに関連付けられた任意の値(例: 198.51.100.5)。rrdata1 rrdata2 rrdata3 のように、複数の値を入力することもできます(例: 198.51.100.1 203.0.113.1...)。

パブリック ゾーンの DNS ルーティング ポリシーを作成する

パブリック ゾーンの DNS ルーティング ポリシーを作成するには、次の操作を行います。

コンソール

構成を開始する

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

    Cloud DNS の [ゾーン] に移動

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

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

ベースデータ

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

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

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

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

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

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

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

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

WRR

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

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

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

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

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

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

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

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

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

    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. 省略可: コンテンツ ベースのヘルスチェックを構成するには、[レスポンス] に、想定されるレスポンス文字列を入力します。この文字列の最大長は、ASCII 文字(シングルバイト)で 1,024 文字です。

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

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

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

    11. [正常しきい値] に、あるバックエンドを正常と判定するために必要なプローブ成功の連続回数を入力します。

    12. [異常しきい値] に、あるバックエンドを異常と判定するために必要なプローブ失敗の連続回数を入力します。

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

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

フェイルオーバー

  1. [Primary external IP address target] セクションの [IP アドレス] に、このレコードのヘルスチェック対象のプライマリ外部 IP アドレスを入力します。
  2. 省略可: 現在のプロジェクト内の Google Cloudリソースのプライマリ外部 IP アドレスを選択するには、[選択] をクリックします。
  3. 省略可: 別のプライマリ外部 IP アドレスを追加するには、[ターゲットを追加] をクリックします。DNSSEC が有効になっている場合、追加できるプライマリ外部 IP アドレス ターゲットは 1 つだけです。
  4. [Backup geolocation policy] セクションで、次の操作を行います。
    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. 省略可: コンテンツ ベースのヘルスチェックを構成するには、[レスポンス] に、想定されるレスポンス文字列を入力します。この文字列の最大長は、ASCII 文字(シングルバイト)で 1,024 文字です。
    2. 省略可: ヘルスチェックのロギングを有効にするには、[ログ] で [オン] を選択します。
    3. [チェック間隔] に、ヘルスチェック プローブを送信する時間間隔(秒)を入力します。このチェック間隔は、特定のプローバーから発行されるあるプローブの開始から、同じプローバーから発行される次のプローブの開始までの時間です。
    4. [タイムアウト] に、Google Cloud がプローブに対するレスポンスを待つ時間(秒)を入力します。
    5. [正常しきい値] に、あるバックエンドを正常と判定するために必要なプローブ成功の連続回数を入力します。
    6. [異常しきい値] に、あるバックエンドを異常と判定するために必要なプローブ失敗の連続回数を入力します。
    7. [作成] をクリックします。
  6. [トリクル トラフィック(%)] フィールドに、プライマリ ターゲットのヘルスチェック ステータスに関係なく、フェイルオーバー ターゲットに送信されるトラフィックの割合を入力します。

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

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

確認と作成

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

gcloud

パブリック ゾーンの 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 の値は 30300 の範囲で指定してください。
    • SOURCE_REGIONS: ヘルスチェック プローブを送信するGoogle Cloud リージョンのカンマ区切りリスト。
    • PORT_NUMBER: ヘルスチェック リクエストのポート番号。
  2. ResourceRecordSet を作成してルーティング ポリシーを適用するには、gcloud beta dns record-sets create コマンドを実行します。

    WRR

    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 ルーティング ポリシーの場合、リージョン内のすべてのエンドポイントが異常な場合にリージョンを越えてトラフィックをフェイルオーバーするかどうかを指定します。これを設定すると、そのリージョンのすべてのエンドポイントが異常な場合でも、常に最も近いリージョンにクエリが送信されます。ジオフェンスを無効にするには、--no-enable-geo-fencing を使用します。これが設定されていない場合、リージョン内のすべてのエンドポイントが異常になると、次に最も近いリージョンにクエリが送信されます。デフォルトは 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: 前の手順で作成したヘルスチェックの名前。

API

  1. パブリック ゾーンの DNS ルーティング ポリシーでヘルスチェックを有効にするには、healthChecks.insert メソッドを使用します。

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

    WRR

        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.1 203.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 ルーティング ポリシーの場合、リージョン内のすべてのエンドポイントが異常な場合にリージョンを越えてトラフィックをフェイルオーバーするかどうかを指定します。これを設定すると、そのリージョンのすべてのエンドポイントが異常な場合でも、常に最も近いリージョンにクエリが送信されます。これが設定されていない場合、リージョン内のすべてのエンドポイントが異常になると、次に最も近いリージョンにクエリが送信されます。有効なオプションは truefalse です。デフォルト設定は false です。
    • LOCATION: GEO ポリシーの場合、ポリシーを作成する位置情報(asia-east1 など)。
    • RRDATA: リソース レコードセットに関連付けられた任意の値(例: 198.51.100.5)。rrdata1 rrdata2 rrdata3 のように、複数の値を入力することもできます(例: 198.51.100.1 203.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.1 203.0.113.1...)。
    • ENABLE_FENCING: GEO ルーティング ポリシーの場合、リージョン内のすべてのエンドポイントが異常な場合にリージョンを越えてトラフィックをフェイルオーバーするかどうかを指定します。これを設定すると、そのリージョンのすべてのエンドポイントが異常な場合でも、常に最も近いリージョンにクエリが送信されます。これが設定されていない場合、リージョン内のすべてのエンドポイントが異常になると、次に最も近いリージョンにクエリが送信されます。デフォルト設定は false です。
    • LOCATION: GEO ポリシーの場合、ポリシーを作成する位置情報(asia-east1 など)。

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

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

コンソール

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

    Cloud DNS の [ゾーン] に移動

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

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

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

gcloud

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

WRR

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 ルーティング ポリシーの場合、リージョン内のすべてのエンドポイントが異常な場合にリージョンを越えてトラフィックをフェイルオーバーするかどうかを指定します。これを設定すると、そのリージョンのすべてのエンドポイントが異常な場合でも、常に最も近いリージョンにクエリが送信されます。ジオフェンスを無効にするには、--no-enable-geo-fencing を使用します。これが設定されていない場合、リージョン内のすべてのエンドポイントが異常になると、次に最も近いリージョンにクエリが送信されます。デフォルト設定は 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 として提供される転送ルールのヘルスチェックを有効にします。

API

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 ルーティング ポリシーの場合、リージョン内のすべてのエンドポイントが異常な場合にリージョンを越えてトラフィックをフェイルオーバーするかどうかを指定します。これを設定すると、そのリージョンのすべてのエンドポイントが異常な場合でも、常に最も近いリージョンにクエリが送信されます。これが設定されていない場合、リージョン内のすべてのエンドポイントが異常になると、次に最も近いリージョンにクエリが送信されます。デフォルトは false です。
  • LOCATION: GEO ポリシーの場合、ポリシーを更新する位置情報(asia-east1 など)
  • WEIGHT: WRR ポリシーの場合、${weight_percent}=${rrdatas} 形式のセミコロン区切りリスト(.8=10.128.1.1;.2=10.130.1.1 など)。負でない任意の 10 進数で重みを指定します。
  • 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 ルーティング ポリシーを削除する

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

コンソール

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

    Cloud DNS の [ゾーン] に移動

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

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

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

gcloud

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 名が必要です。

API

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 など)

次のステップ