DNS 라우팅 정책 및 상태 점검 관리

DNS 라우팅 정책은 쿼리 유형(예: 가중치가 적용된 라운드 로빈 또는 위치정보)을 기준으로 트래픽을 조정합니다. 특정 라우팅 정책 값이 포함된 리소스 레코드 세트를 만들어 이러한 정책을 구성할 수 있습니다. 이 값은 트래픽이 라우팅되는 방법을 결정합니다. 예를 들어 가중치가 적용된 라운드 로빈 정책에서 각 리소스 레코드 세트에는 트래픽 분산에 영향을 주는 할당된 가중치가 있습니다.

이 페이지에서는 DNS 라우팅 정책 만들기, 수정, 삭제 및 Cloud DNS를 사용한 상태 점검 사용 설정에 대한 정보를 제공합니다. 이 페이지를 사용하기 전에 DNS 정책 개요를 숙지하세요.

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

  • 가중치가 적용된 라운드 로빈(WRR) 라우팅 정책: WRR을 사용하여 DNS 이름의 리소스 레코드 세트별로 다른 가중치를 지정합니다. DNS 라우팅 정책은 구성된 가중치에 따라 트래픽이 분산되도록 합니다. WRR 라우팅 정책과 위치정보 라우팅 정책을 결합할 수 없습니다.

  • 위치정보(GEO) 라우팅 정책: GEO를 사용하여 소스 위치정보를 지정하고 해당 지역에 해당하는 답변을 제공합니다. 위치정보 라우팅 정책은 트래픽의 소스가 정책 항목과 정확하게 일치하지 않으면 소스 위치와 가장 가까운 일치 항목을 적용합니다.

    GEO는 다음과 같은 방법으로 공개 및 비공개 DNS의 소스를 매핑합니다.

    • 공개 DNS: 쿼리의 클라이언트 서브넷의 소스 IP 주소나 DNS의 확장 메커니즘(EDNS)이 사용됩니다.
    • 비공개 DNS의 경우 EDNS 클라이언트 서브넷이 사용되지 않습니다. 대신 쿼리 위치는 쿼리의 패킷을 보내는 시스템의 위치입니다.
      • VPC 네트워크의 네트워크 인터페이스가 있는 가상 머신(VM) 인스턴스의 쿼리인 경우, 쿼리의 위치는 VM이 포함된 리전입니다.
      • 인바운드 서버 정책 진입점에서 수신된 쿼리인 경우, 쿼리 위치는 Cloud VPN 터널, Cloud Interconnect VLAN 연결 또는 쿼리 패신을 수신한 라우터 어플라이언스의 리전입니다. 진입점 IP 주소의 리전은 관련이 없습니다. 자세한 내용은 'DNS 서버 정책' 페이지의 인바운드 쿼리의 네트워크 및 리전을 참조하세요.
  • 지오펜싱 라우팅 정책: 지오펜싱을 사용하여 위치정보의 모든 엔드포인트가 비정상인 경우에도 트래픽을 특정 위치정보로 제한할 수 있습니다. 지오펜싱에 대한 자세한 내용은 지오펜싱 라우팅 정책을 참조하세요.

  • 장애 조치 라우팅 정책: 장애 조치를 사용하여 활성 백업 구성을 설정합니다. 자세한 내용은 장애 조치 라우팅 정책을 참조하세요.

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

상태 점검

Cloud DNS는 전역 액세스가 사용 설정된 내부 패스 스루 네트워크 부하 분산기와 내부 애플리케이션 부하 분산기 및 리전 간 내부 애플리케이션 부하 분산기의 상태 점검을 지원합니다.

내부 패스 스루 네트워크 부하 분산기를 설정한 후 Google Cloud 콘솔, gcloud CLI 또는 API를 사용하여 내부 패스 스루 네트워크 부하 분산기를 지정하여 Cloud DNS 내에서 적절한 라우팅 정책을 설정합니다. 이 단계에서는 WRR 또는 GEO 버킷을 여러 개 설정하며 각 버킷은 여러 내부 패스 스루 네트워크 부하 분산기를 포함할 수 있습니다.

내부 패스 스루 네트워크 부하 분산기의 경우 Cloud DNS는 부하 분산기의 개별 백엔드 인스턴스에서 상태 정보를 확인하여 부하 분산기가 정상 또는 비정상인지 확인합니다. Cloud DNS는 기본 20% 기준을 적용하고 최소 20% 의 백엔드 인스턴스가 정상이면 부하 분산기 엔드포인트가 정상으로 간주됩니다. DNS 라우팅 정책은 이 기준에 따라 엔드포인트를 정상 또는 비정상으로 표시하고 그에 따라 트래픽을 라우팅합니다.

내부 애플리케이션 부하 분산기와 리전 간 내부 애플리케이션 부하 분산기의 경우 Cloud DNS는 내부 애플리케이션 부하 분산기의 전체 상태를 점검하고 내부 애플리케이션 부하 분산기 자체가 백엔드 인스턴스의 상태를 점검하도록 합니다.

엔드포인트가 비정상으로 표시되면 다음 조건이 발생할 수 있습니다.

  • 정책에 프로그래밍된 VIP 주소가 여러 개 있으면 정상 VIP 주소만 반환됩니다.
  • 정책 버킷에 대해 프로그래밍된 모든 VIP 주소가 비정상이면 정책 줄이 실패한 것입니다. 다음 동작이 적용됩니다.

    • WRR 정책의 경우 Cloud DNS는 다음 정상 가중치 버킷에 트래픽을 분산합니다.
    • 펜싱이 사용 설정되지 않은 GEO 정책의 경우 트래픽이 다음으로 가장 가까운 지역으로 전환됩니다.
    • 펜싱이 사용 설정된 지오펜싱 정책의 경우 가장 가까운 지역 버킷의 VIP 주소가 있는 그대로 반환됩니다.
    • 장애 조치 정책의 경우 Cloud DNS가 트래픽을 장애 조치 버킷으로 전환합니다.
    • 모든 정책 버킷이 비정상이면 Cloud DNS는 모든 엔드포인트가 정상인 것처럼 작동합니다.

시작하기 전에

이 절차에서는 다음 작업을 완료했다고 가정합니다.

  1. 관리형 영역을 만들고 영역을 만들기 위한 기본 요건을 완료했습니다.
  2. 다음 내부 부하 분산기 중 하나를 설정했습니다.
  3. 내부 부하 분산기에 대한 전달 규칙을 만들었습니다.
  4. 내부 부하 분산기의 상태 확인을 설정합니다.

DNS 라우팅 정책 만들기

리소스 레코드 세트를 만들고 라우팅 정책을 적용하려면 다음 단계를 따르세요.

콘솔

구성 시작

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

    Cloud DNS 영역으로 이동

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

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

기본 데이터

  1. 라우팅 정책으로 레코드 모음 만들기 페이지에서 DNS 이름 입력란에 DNS 영역의 하위 도메인, 예를 들면 mail을 입력합니다. 후행 점은 끝에 자동으로 추가됩니다.

  2. 리소스 레코드 유형을 선택합니다(예: A).

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

  4. TTL 단위 메뉴에서 시간 단위를 선택합니다(예: 30 minutes).

  5. 다음을 클릭합니다.

라우팅 정책 유형

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

라우팅 정책 데이터

  1. 가중치가 적용된 라운드 로빈 정책 라우팅 데이터 섹션에서 가중치가 적용된 라운드 로빈을 선택한 경우 다음을 수행합니다.

    1. 가중치 필드에 리소스 레코드(RR) 데이터의 하위 섹션에 해당하는 가중치를 입력합니다. 이 가중치는 0.0~1000.0 사이의 음수가 아닌 숫자여야 합니다. 대상으로 라우팅된 트래픽 비율은 모든 가중치에 대한 총 가중치 대비 개별 가중치의 비율로 계산됩니다.
    2. 상태 점검 대상 추가 섹션에서 다음을 수행합니다.

      1. 프로젝트 목록에서 전달 규칙이 있는 프로젝트를 선택합니다.
      2. 유형 목록에서 내부 패스 스루 네트워크 부하 분산기, 내부 애플리케이션 부하 분산기 또는 리전 간 내부 애플리케이션 부하 분산기를 선택합니다.
      3. 전달 규칙 목록에서 전달 규칙을 선택합니다.

        전달 규칙은 내부 IP 주소, 포트, 리전 백엔드 서비스 또는 HTTP(S) 프록시를 지정합니다. Cloud DNS가 상태 점검과 함께 작동하려면 내부 부하 분산기에 전역 액세스를 사용 설정해야 합니다.

    3. 상태 점검 없이 IPv4 주소를 허용하려면 상태 점검 없이 IPv4 주소 허용을 선택합니다.

    4. IPv4 주소 필드에 IPv4 주소를 입력합니다.

  2. 위치정보를 선택한 경우 다음을 수행합니다.

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

      1. 프로젝트 목록에서 전달 규칙이 있는 프로젝트를 선택합니다.
      2. 유형 목록에서 내부 패스 스루 네트워크 부하 분산기, 내부 애플리케이션 부하 분산기 또는 리전 간 내부 애플리케이션 부하 분산기를 선택합니다.
      3. 전달 규칙 목록에서 전달 규칙을 선택합니다.

        전달 규칙은 내부 IP 주소, 포트, 리전 백엔드 서비스 또는 HTTP(S) 프록시를 지정합니다. Cloud DNS가 상태 점검과 함께 작동하려면 내부 부하 분산기에 전역 액세스를 사용 설정해야 합니다.

    4. 상태 점검 없이 IPv4 주소를 허용하려면 상태 점검 없이 IPv4 주소 허용을 선택합니다.

    5. IPv4 주소 필드에 IPv4 주소를 입력합니다.

  3. 장애 조치를 선택한 경우 다음을 수행합니다.

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

      1. 프로젝트 목록에서 전달 규칙이 있는 프로젝트를 선택합니다.
      2. 유형 목록에서 내부 패스 스루 네트워크 부하 분산기, 내부 애플리케이션 부하 분산기 또는 리전 간 내부 애플리케이션 부하 분산기를 선택합니다.
      3. 전달 규칙 목록에서 전달 규칙을 선택합니다.

        전달 규칙은 내부 IP 주소, 포트, 리전 백엔드 서비스 또는 HTTP(S) 프록시를 지정합니다. Cloud DNS가 상태 점검과 함께 작동하려면 내부 부하 분산기에 전역 액세스를 사용 설정해야 합니다.

    3. 백업 위치정보 정책 섹션에서 다음을 수행합니다.

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

        1. 프로젝트 목록에서 전달 규칙이 있는 프로젝트를 선택합니다.
        2. 유형 목록에서 내부 패스 스루 네트워크 부하 분산기, 내부 애플리케이션 부하 분산기 또는 리전 간 내부 애플리케이션 부하 분산기를 선택합니다.
        3. 전달 규칙 목록에서 전달 규칙을 선택합니다.

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

    4. 상태 점검 없이 IPv4 주소를 허용하려면 상태 점검 없이 IPv4 주소 허용을 선택합니다.

    5. IPv4 주소 필드에 IPv4 주소를 입력합니다.

  4. 다음을 클릭합니다.

검토 및 만들기

  1. Review(검토)를 클릭합니다.
  2. 라우팅 정책 구성으로 Cloud DNS 레코드 집합을 검토하세요.
  3. 선택사항: 동등한 주석 줄을 클릭하여 gcloud CLI 명령어를 보고 라우팅 정책으로 이 레코드 모음을 만듭니다.
  4. 만들기를 클릭합니다.

gcloud

ResourceRecordSet에는 routingPolicy 또는 rrdatas 중 하나만 포함될 수 있습니다. ResourceRecordSets를 업데이트할 때 rrdatas 또는 routingPolicy 간의 변경이 지원됩니다. 예를 들어 rrdatas가 포함된 ResourceRecordSet을 업데이트하려면 rrdatas를 삭제하고 routingPolicy를 같은 ResourceRecordSet에 추가하면 됩니다.

ResourceRecordSet를 만들고 라우팅 정책을 적용하려면 다음 단계를 따르세요.

gcloud dns record-sets create 명령어를 실행합니다.

GEO 정책

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

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

지오펜싱 정책

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

장애 조치 정책

gcloud dns record-sets create 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-type=ROUTING_POLICY_BACKUP_DATA_TYPE \
    --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).

  • ROUTING_POLICY_BACKUP_DATA_TYPE: FAILOVER 라우팅 정책의 경우 백업 데이터가 사용하는 라우팅 정책 유형은 반드시 GEO이어야 합니다.

  • BACKUP_DATA_TRICKLE_RATIO: 기본 상태가 정상인 경우에도 백업 대상으로 보낼 트래픽의 비율입니다. 이 비율은 0에서 1 사이여야 합니다(예: 0.1). 기본값은 0으로 설정됩니다.

  • --enable-health-checking: 상태 점검을 사용 설정하는 플래그입니다. 이 플래그를 사용할 때는 --routing-policy-data 필드에 IP 주소 대신 전달 규칙 이름을 제공해야 합니다.

API

resourceRecordSets.create 메서드를 사용합니다.

GEO 정책

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"
                       "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"
                      }
                     ]
                  }
              },
              }
           ]

        }
     }
}

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"
                "region": "REGION"
              }
            ]
          }
        },
        {
          "weight": WEIGHT,
          "healthCheckedTargets": {
            "internalLoadBalancers": [
              {
                "loadBalancerType": "LOAD_BALANCER_TYPE"
                "ipAddress": "IP_ADDRESS"
                "port" : "PORT_NUMBER"
                "ipProtocol": "IP_PROTOCOL"
                "networkUrl": "NETWORK_URL"
                "project": "PROJECT"
                "region": "REGION"
              }
            ]
          }
        },
      ]
    }
  }
}

GEO 정책의 장애 조치

장애 조치 옵션에서 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"
            "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).
  • 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진수로 지정합니다.
  • RR_DATA: 리소스 레코드 모음과 연결된 임의의 값(예: 198.51.100.5), 여러 개의 값 rrdata1 rrdata2 rrdata3을 입력할 수도 있습니다(예: 198.51.100.1 203.0.113.1...).
  • LOAD_BALANCER_TYPE: 부하 분산기의 유형(예: regionalL4ilb)
  • IP_ADDRESS: 전달 규칙이 제공하는 IP 주소
  • PORT_NUMBER: 포트 번호
  • IP_PROTOCOL: 상태 점검에 사용되는 프로토콜을 정의합니다. 유효한 옵션은 tcpudp입니다.
  • NETWORK_URL: 이 전달 규칙이 적용되는 네트워크 URL
  • REGION: 전달 규칙을 만든 리전

DNS 라우팅 정책 업데이트

리소스 레코드 세트의 라우팅 정책을 업데이트하려면 다음 단계를 따르세요.

콘솔

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

    Cloud DNS 영역으로 이동

  2. 리소스 레코드 세트의 라우팅 정책을 업데이트할 영역을 클릭합니다.

  3. 영역 세부정보 페이지에서 업데이트할 리소스 레코드 모음 옆에 있는 수정을 클릭합니다.

  4. 필요한 사항을 업데이트한 후 저장을 클릭합니다.

gcloud

gcloud dns record-sets update 명령어를 실행합니다.

GEO 정책

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

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-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 필드를 지정해야 합니다.

GEO 정책의 경우 다음 메서드를 사용합니다.

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"
                      }
                     ]
                  }
              },
              }
           ]

        }
     }
}

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": ["RR_DATA"]
                    },
                    {
                        "weight": WEIGHT,
                        "rrdatas": ["RR_DATA"]
                     }
               ],
            }
      }
}

다음을 바꿉니다.

  • 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진수로 지정합니다.
  • RR_DATA: 리소스 레코드 모음과 연결된 임의의 값(예: 198.51.100.5), 여러 개의 값 rrdata1 rrdata2 rrdata3을 입력할 수도 있습니다(예: 198.51.100.1 203.0.113.1...).
  • LOAD_BALANCER_TYPE: 부하 분산기의 유형(예: regionalL4ilb)
  • 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).

다음 단계