DNS 라우팅 정책 및 상태 점검 구성

이 페이지에서는 Cloud DNS를 사용하여 DNS 라우팅 정책을 구성하고 상태 점검을 사용 설정하는 방법을 설명합니다. 이 페이지를 사용하기 전에 DNS 라우팅 정책과 상태 점검을 숙지하세요.

DNS 라우팅 정책을 사용하려면 리소스 레코드 세트를 만들고 다음 DNS 라우팅 정책 중 하나를 선택하여 리소스 레코드 세트에 적용합니다.

DNS 라우팅 정책은 각 지리적 위치에 대해 여러 IP 주소도 지원합니다. 특정 지리적 위치에 대해 지정된 경우 동일한 가중치 WRR 정책에 따라 여러 IP 주소가 반환됩니다. 지역 기반 라우팅 정책과 커스텀 가중치가 적용된 WRR 정책을 결합하는 것은 지원되지 않습니다.

한 번에 한 가지 유형의 라우팅 정책만 리소스 레코드 모음에 적용할 수 있습니다. 위치정보 라우팅 정책을 백업으로 설정할 수 있는 장애 조치 라우팅 정책을 구성하는 경우를 제외하면 라우팅 정책을 결합할 수는 없습니다. 리전 부하 분산기에 전역 액세스를 사용 설정해야 합니다.

비공개 영역의 DNS 라우팅 정책 만들기

비공개 영역의 DNS 라우팅 정책을 만들기 전에 다음 단계를 완료합니다.

  1. 비공개 영역을 만듭니다.
  2. 다음 내부 부하 분산기 중 하나를 설정했습니다.
  3. 내부 부하 분산기에 대한 전달 규칙을 만듭니다.
  4. 내부 부하 분산기의 상태 확인을 설정합니다.

비공개 영역에 대한 DNS 라우팅 정책을 만들려면 다음 단계를 수행합니다.

콘솔

구성 시작

  1. Google Cloud 콘솔에서 Cloud DNS 영역 페이지로 이동합니다.

    Cloud DNS 영역으로 이동

  2. 레코드를 추가할 관리형 영역의 이름을 클릭합니다.

  3. 영역 세부정보 페이지에서 라우팅 정책으로 추가를 클릭합니다.

기본 데이터

  1. 선택사항: 라우팅 정책으로 레코드 세트 만들기 페이지의 DNS 이름에 DNS 이름의 하위 도메인을 입력합니다(예: mail). 후행 점은 자동으로 추가됩니다.

  2. 리소스 레코드 유형에서 옵션을 선택합니다.

  3. TTL에 리소스 레코드가 캐시될 수 있는 기간인 리소스 레코드의 TTL(수명)에 대한 숫자 값을 입력합니다. 값은 양의 정수여야 합니다.

  4. 선택사항: TTL 단위에서 시간 단위를 선택합니다(예: minutes). 기본값은 minutes으로 설정됩니다.

  5. 다음을 클릭합니다.

라우팅 정책 유형

  1. 라우팅 정책에서 가중치가 적용된 라운드 로빈, 위치정보 또는 장애 조치를 선택합니다.
  2. 다음을 클릭합니다.

라우팅 정책 데이터

WRR

  1. 가중치에 리소스 레코드(RR) 데이터의 하위 섹션에 해당하는 가중치를 입력합니다.

    이 가중치는 0.0~1000.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. 백업 위치정보 정책 섹션에서 다음을 수행합니다.

    1. 지오펜싱에서 사용 중지됨 또는 사용 설정됨을 선택합니다. 지오펜싱을 사용 설정하면 특정 위치정보의 모든 엔드포인트가 비정상인 경우에도 트래픽이 해당 위치정보로 제한됩니다.
    2. 소스 리전에서 유효한 Google Cloud 소스 리전을 선택합니다.
    3. IPv4 상태 점검 대상 섹션에서 다음을 수행합니다.

      1. 프로젝트에서 전달 규칙이 있는 프로젝트를 선택합니다.
      2. 전달 규칙에서 전달 규칙을 선택합니다.

        전달 규칙은 다음 옵션 중 하나를 지정합니다.

        • 내부 IP 주소, 포트, 리전별 백엔드 서비스
        • HTTP(S) 프록시
        • TCP 프록시

    모든 기본 IP 주소가 비정상이면 백업 위치정보 정책에 따라 트래픽이 자동으로 처리됩니다.

  3. 완료를 클릭합니다.

  4. 선택사항: 상태가 검사된 다른 타겟을 추가하려면 타겟 추가를 클릭합니다.

  5. 선택사항: 상태 점검 없이 IPv4 주소를 허용하려면 다음을 수행합니다.

    1. 상태 점검 없이 IPv4 주소 허용을 선택합니다.
    2. IPv4 주소에 IPv4 주소를 입력합니다.
  6. 선택사항: 다른 백업 위치정보 정책 라우팅 데이터 집합을 추가하려면 라우팅 데이터 추가를 클릭합니다.

  7. Trickle 트래픽(%) 필드에 기본 대상의 상태 점검 상태와 관계없이 장애 조치 대상으로 전송된 트래픽의 비율을 입력합니다.

  8. 다음을 클릭합니다.

검토 및 만들기

  1. Review(검토)를 클릭합니다.
  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). 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). 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 라우팅 정책에 사용할 기본 대상입니다. 이 대상은 forwarding-rule-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 주소 대신 전달 규칙 이름을 제공해야 합니다.

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: 부하 분산기의 유형입니다(예: regionalL4ilb, globalL7ilb, regionalL7ilb). 이 설정은 선택사항입니다.
  • 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: 부하 분산기의 유형입니다(예: regionalL4ilb, globalL7ilb, regionalL7ilb). 이 설정은 선택사항입니다.
  • 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)으로 가중치를 음수가 아닌 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에 리소스 레코드가 캐시될 수 있는 기간인 리소스 레코드의 TTL(수명)에 대한 숫자 값을 입력합니다. 값은 양의 정수여야 합니다.

  4. 선택사항: TTL 단위에서 시간 단위를 선택합니다(예: minutes). 기본값은 minutes으로 설정됩니다.

  5. 다음을 클릭합니다.

라우팅 정책 유형

  1. 라우팅 정책에서 가중치가 적용된 라운드 로빈, 위치정보 또는 장애 조치를 선택합니다.
  2. 다음을 클릭합니다.

라우팅 정책 데이터

WRR

  1. 가중치에 리소스 레코드(RR) 데이터의 하위 섹션에 해당하는 가중치를 입력합니다.

    이 가중치는 0.0~1000.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. 선택사항: 현재 프로젝트에서 Google Cloud 리소스의 외부 IP 주소를 선택하려면 선택을 클릭합니다.
    3. 상태 점검을 사용 설정하려면 상태 점검 1을 선택합니다.
    4. 선택사항: 다른 외부 IP 주소를 추가하려면 IP 주소 추가를 클릭합니다.
    5. 완료를 클릭합니다.
  3. 이전 단계에서 상태 점검을 사용 설정한 경우 상태 점검 목록에서 상태 점검을 선택하거나 다음 단계를 수행하여 새 상태 점검을 만듭니다.

    1. 새 상태 점검 만들기를 클릭합니다.
    2. 이름에 상태 점검의 이름을 입력합니다.
    3. 선택사항: 설명에 상태 점검에 대한 설명을 입력합니다.
    4. 소스 리전에서 상태 점검 프로브를 전송할 Google Cloud 리전 3개를 선택합니다.
    5. 선택사항: 프로토콜 목록에서 프로토콜을 선택합니다.
    6. 포트에 포트 번호를 입력합니다.

      프로토콜과 포트 번호는 Cloud DNS에서 상태 점검 프로브를 전송하는 방법을 결정합니다.

    7. 선택사항: 콘텐츠 기반 상태 점검을 구성하려면 응답에 길이가 각각 최대 1,024자 ASCII(싱글 바이트)인 예상 응답 문자열을 제공합니다.

    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. 소스 리전에서 상태 점검 프로브를 전송할 Google Cloud 리전 3개를 선택합니다.
    5. 선택사항: 프로토콜 목록에서 프로토콜을 선택합니다.
    6. 포트에 포트 번호를 입력합니다.

      프로토콜과 포트 번호는 Cloud DNS에서 상태 점검 프로브를 전송하는 방법을 결정합니다.

    7. 선택사항: 콘텐츠 기반 상태 점검을 구성하려면 응답에 길이가 각각 최대 1,024자 ASCII(싱글 바이트)인 예상 응답 문자열을 제공합니다.

    8. 선택사항: 상태 점검 로그를 사용 설정하려면 로그에서 사용을 선택합니다.

    9. 확인 간격에 상태 점검 프로브 사이의 시간 간격(초)을 입력합니다. 확인 간격은 한 프로버에서 실행한 한 프로브의 시작부터 같은 프로버에서 실행한 다음 프로브의 시작까지의 시간입니다.

    10. 제한 시간에 Google Cloud가 프로브에 대한 응답을 기다릴 시간(초)을 입력합니다.

    11. 정상 기준점에 백엔드가 정상으로 간주되는 연속 성공 프로브 결과 수를 입력합니다.

    12. 비정상 기준점에 백엔드가 비정상으로 간주되는 연속 실패 프로브 결과 수를 입력합니다.

    13. 만들기를 클릭합니다.

  5. 다음을 클릭합니다.

장애 조치

  1. 기본 외부 IP 주소 대상 섹션의 IP 주소에 이 레코드 상태가 점검되는 기본 외부 IP 주소를 입력합니다.
  2. 선택사항: 현재 프로젝트에서 Google Cloud 리소스의 기본 외부 IP 주소를 선택하려면 선택을 클릭합니다.
  3. 선택사항: 다른 기본 외부 IP 주소를 추가하려면 대상 추가를 클릭합니다. DNSSEC가 사용 설정되어 있으면 기본 외부 IP 주소 대상 하나만 추가할 수 있습니다.
  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. 소스 리전에서 상태 점검 프로브를 전송할 Google Cloud 리전 3개를 선택합니다.
    5. 선택사항: 프로토콜 목록에서 프로토콜을 선택합니다.
    6. 포트에 포트 번호를 입력합니다.

    프로토콜과 포트 번호는 Cloud DNS에서 상태 점검 프로브를 전송하는 방법을 결정합니다.

    1. 선택사항: 콘텐츠 기반 상태 점검을 구성하려면 응답에 길이가 각각 최대 1,024자 ASCII(싱글 바이트)인 예상 응답 문자열을 제공합니다.
    2. 선택사항: 상태 점검 로그를 사용 설정하려면 로그에서 사용을 선택합니다.
    3. 확인 간격에 상태 점검 프로브 사이의 시간 간격(초)을 입력합니다. 확인 간격은 한 프로버에서 실행한 한 프로브의 시작부터 같은 프로버에서 실행한 다음 프로브의 시작까지의 시간입니다.
    4. 제한 시간에 Google Cloud가 프로브에 대한 응답을 기다릴 시간(초)을 입력합니다.
    5. 정상 기준점에 백엔드가 정상으로 간주되는 연속 성공 프로브 결과 수를 입력합니다.
    6. 비정상 기준점에 백엔드가 비정상으로 간주되는 연속 실패 프로브 결과 수를 입력합니다.
    7. 만들기를 클릭합니다.
  6. 트리클 트래픽(%) 필드에 기본 대상의 상태 점검 상태와 관계없이 장애 조치 대상으로 전송된 트래픽의 비율을 입력합니다.

  7. 상태 점검 목록에서 상태 점검을 선택합니다.

  8. 다음을 클릭합니다.

검토 및 만들기

  1. Review(검토)를 클릭합니다.
  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: 상태 점검에 사용되는 프로토콜입니다. http, https, ssl, tcp가 유효한 옵션입니다.
    • HEALTH_CHECK_NAME: 상태 점검의 이름입니다.
    • CHECK_INTERVAL: 하나의 상태 점검 프로브 시스템의 연결이 시작된 후부터 다음 프로브 시작까지 걸리는 시간입니다. 단위는 초입니다. CHECK_INTERVAL값은 30~300초 사이여야 합니다.
    • 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). 가중치를 음수가 아닌 십진수로 지정합니다. 가중치는 0~1000의 음수가 아닌 숫자여야 합니다.
    • 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). 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). 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 라우팅 정책에 사용할 기본 대상입니다. 이 대상은 forwarding-rule-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)으로 가중치를 음수가 아닌 10진수로 지정합니다. 참고: 가중치를 음수가 아닌 숫자로 지정해야 합니다. 대상으로 라우팅된 트래픽 비율은 모든 가중치에 대한 총 가중치 대비 개별 가중치의 비율로 계산됩니다.
    • 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 라우팅 정책의 경우 리전의 모든 엔드포인트가 비정상인 경우 리전 간에 트래픽을 장애 조치해야 하는지 여부를 결정합니다. 설정되면 Cloud DNS는 해당 리전의 모든 엔드포인트가 비정상인 경우에도 항상 가장 가까운 리전으로 쿼리를 전달합니다. 설정되지 않은 경우 Cloud DNS는 리전의 모든 엔드포인트가 비정상일 때 다음으로 가장 가까운 리전으로 쿼리를 전달합니다. 유효한 옵션은 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 라우팅 정책의 경우 리전의 모든 엔드포인트가 비정상인 경우 리전 간에 트래픽을 장애 조치해야 하는지 여부를 결정합니다. 설정되면 Cloud DNS는 해당 리전의 모든 엔드포인트가 비정상인 경우에도 항상 가장 가까운 리전으로 쿼리를 전달합니다. 설정되지 않은 경우 Cloud DNS는 리전의 모든 엔드포인트가 비정상일 때 다음으로 가장 가까운 리전으로 쿼리를 전달합니다. 기본 설정은 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). 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 라우팅 정책에 사용할 기본 대상입니다. 이 대상은 forwarding-rule-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 라우팅 정책의 경우 리전의 모든 엔드포인트가 비정상인 경우 리전 간에 트래픽을 장애 조치해야 하는지 여부를 결정합니다. 설정되면 Cloud DNS는 해당 리전의 모든 엔드포인트가 비정상인 경우에도 항상 가장 가까운 리전으로 쿼리를 전달합니다. 설정되지 않은 경우 Cloud DNS는 리전의 모든 엔드포인트가 비정상일 때 다음으로 가장 가까운 리전으로 쿼리를 전달합니다. 기본값은 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: 부하 분산기의 유형입니다(예: regionalL4ilb, globalL7ilb, regionalL7ilb). 이 설정은 선택사항입니다.
  • 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).

다음 단계