DNS 라우팅 정책 관리

DNS 라우팅 정책은 쿼리(예: 라운드 로빈, 위치정보)를 기준으로 트래픽을 조정합니다. 특별한 라우팅 정책 값으로 특별한 ResourceRecordSets(컬렉션 측면)를 만들어 라우팅 정책을 구성할 수 있습니다.

이 페이지에서는 Cloud DNS를 사용하여 DNS 라우팅 정책을 생성, 수정, 삭제하는 방법을 설명합니다. 이 페이지를 사용하기 전에 DNS 정책 개요를 숙지하세요.

DNS 라우팅 정책을 사용하려면 ResourceRecordSet를 만들고 다음 DNS 라우팅 정책 중 하나를 선택하여 ResourceRecordSet에 적용합니다.

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

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

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

    • 공개 DNS: 쿼리의 소스 IP 주소나 DNS의 확장 메커니즘(EDNS)이 사용됩니다.
    • 비공개 DNS: 쿼리가 수신되는 위치(예: 쿼리 VM의 리전 또는 인바운드 전달 쿼리가 수신되는 위치)

    인바운드 전달의 경우 쿼리는 인바운드 포워더의 IP 주소와 연결된 위치가 아닌 Virtual Private Cloud(VPC)를 소스 위치로 입력한 위치를 사용합니다.

    예를 들어 쿼리가 us-west1에 대한 포워더 IP 주소로 전송되었지만 이 쿼리가 us-east1에 도착하도록 라우팅이 구성되어 있다고 가정해 보겠습니다. Cloud DNS는 us-west1 포워더 주소가 있더라도 us-east1를 소스 리전으로 사용합니다.

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

시작하기 전에

미리 관리형 영역을 만들고 영역을 만들기 위한 기본 요건을 완료해야 합니다.

DNS 라우팅 정책 만들기

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

Console

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

    Cloud DNS 영역으로 이동

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

  3. 영역 세부정보 페이지에서 레코드 모음 추가를 클릭합니다.

  4. 레코드 모음 만들기 페이지의 DNS 이름 필드에 DNS 영역의 하위 도메인(예: mail)을 입력합니다. 후행 점은 끝에 자동으로 추가됩니다.

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

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

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

  8. 라우팅 정책을 선택합니다. 가중치가 적용된 라운드 로빈 또는 지역 기반을 선택할 수 있습니다. 레코드에 라우팅 정책을 연결하지 않으려면 기본 레코드 유형을 선택합니다.

  9. 가중치가 적용된 라운드 로빈을 선택한 경우 새 관리형 rrdata 섹션에서 다음을 수행하세요.

    1. 리소스 레코드(RR) 데이터의 하위 섹션에 해당하는 가중치를 입력합니다. 이 가중치는 0.0에서 1000.0 사이의 음수가 아닌 숫자여야 합니다. 대상으로 라우팅된 트래픽 비율은 전체 가중치에 대한 개별 가중치의 비율로 계산됩니다.
    2. 선택한 레코드 유형에 따라 다음 필드에 관련 세부정보를 입력합니다. 예를 들어 레코드 유형이 A인 경우 IPv4 주소 필드에 호스트의 숫자 IP 주소(예: 203.0.113.1)를 입력합니다. AAAA 레코드에 호스트의 IPv6 주소 등을 입력합니다.
  10. 지역 기반을 선택한 경우 새 관리형 rrdata 섹션에서 다음을 수행하세요.

    1. 유효한 Google Cloud 소스 리전을 입력합니다(예: asia-east1).
    2. 선택한 레코드 유형에 따라 다음 필드에 관련 세부정보를 입력합니다. 예를 들어 레코드 유형이 A인 경우 IPv4 주소 필드에 호스트의 숫자 IP 주소(예: 203.0.113.1)를 입력합니다. AAAA 레코드에 호스트의 IPv6 주소 등을 입력합니다.
  11. 선택한 레코드 유형에 따라 추가 데이터를 입력하려면 항목 추가를 클릭합니다. 다음 표에는 레코드 유형 및 입력할 수 있는 추가 데이터가 나와 있습니다.

    레코드 유형 추가 데이터 입력
    A IPv4 주소
    AAAA IPv6 주소
    CNAME 표준 이름
    MX 메일 교환 레코드
    SRV 호스트/포트(<aclass="external" l10n-attrs-original-order="href,class" l10n-encrypted-href="fbj0fi6rS3pPqxfn3YD3etONK6A9Q8tQ5MUfKCg7jl5ONxJ2KV+27oDWYJ43g//U">RFC 2782) </aclass="external">
    TXT 텍스트 데이터
  12. 추가 관리형 RR 데이터를 입력하려면 관리형 rrdata 추가를 클릭합니다.

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

gcloud

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

gcloud beta dns record-sets create RRSET_NAME \
    --ttl=TTL \
    --type=RRSET_TYPE \
    --zone=MANAGED_ZONE \
    --routing_policy_type=ROUTING_POLICY_TYPE \
    --routing_policy_data=ROUTING_POLICY_DATA

다음을 바꿉니다.

  • 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를 입력합니다. 정책에 선택된 유형이 있으면 이 필드를 수정할 수 없습니다. 정책을 삭제하고 다른 유형의 새 정책만 추가할 수 있습니다.

  • ROUTING_POLICY_DATA: 라우팅 정책 데이터

    • --routing_policy_type=WRR${weight_percent}=${rrdatas} 형식의 세미콜론으로 구분된 목록을 입력합니다(예: .8=10.128.1.1;.2=10.130.1.1). 가중치를 음수가 아닌 십진수로 지정합니다.
    • --routing_policy_type=GEO${region}=${rrdatas} 형식의 세미콜론으로 구분된 목록을 입력합니다(예: asia-east1=10.128.1.1;us-central1=10.130.1.1). 리전을 반복하여 단일 리전에 여러 개의 IP 주소를 지정할 수 있습니다.

API

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

POST https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/MANAGED_ZONE/rrsets
{
        "name": "RRSET_NAME.",
        "type": "RRSET_TYPE",
        "ttl": TTL,
        "routingPolicy": {
          "geoPolicy": {
              "item": [
                    {
                        "location": "LOCATION",
                        "rrdatas": ["RR_DATA"]
                    },
                    {
                        "location": "LOCATION",
                        "rrdatas": ["RR_DATA"]
                     }
               ],
               "failover": [
                     {
                         "location": "LOCATION",
                         "rrdatas": ["RR_DATA"]
                     },
                     {
                         "location": "LOCATION",
                         "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).
  • LOCATION: 정책을 만들어야 할 위치정보입니다(예: asia-east).
  • RR_DATA: 리소스 레코드 모음과 연결된 임의의 값(예: 198.51.100.5), 여러 개의 값 rrdata1 rrdata2 rrdata3을 입력할 수도 있습니다(예: 198.51.100.1 203.0.113.1...).

DNS 라우팅 정책 업데이트

ResourceRecordSet의 라우팅 정책을 업데이트하려면 다음 단계를 따르세요.

Console

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

    Cloud DNS 영역으로 이동

  2. ResourceRecordSet의 라우팅 정책을 업데이트할 영역을 클릭합니다.

  3. 영역 세부정보 페이지에서 업데이트할 ResourceRecordSet 옆에 있는 수정을 클릭합니다.

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

gcloud

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

gcloud beta dns record-sets update RRSET_NAME \
    --ttl=TTL \
    --type=RRSET_TYPE \
    --zone=MANAGED_ZONE \
    --routing_policy_type=ROUTING_POLICY_TYPE \
    --routing_policy_data=ROUTING_POLICY_DATA

다음을 바꿉니다.

  • 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를 입력합니다. 정책에 선택된 유형이 있으면 이 필드를 수정할 수 없습니다. 변경하려면 정책을 삭제하고 다른 유형의 새 정책을 추가해야 합니다.

  • 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 주소를 지정할 수 있습니다.

API

resourceRecordSets.patch 메서드를 사용합니다. rrset.rrdatas 또는 rrset.routingPolicy 중 하나만 지정합니다. routingPolicy를 지정하는 경우 전체 routingPolicy 필드를 지정해야 합니다.

PATCH https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/MANAGED_ZONE/rrsets
{
        "name": "RRSET_NAME.",
        "type": "RRSET_TYPE",
        "ttl": TTL,
        "routingPolicy": {
          "geoPolicy": {
              "item": [
                    {
                        "location": "LOCATION",
                        "rrdatas": ["RR_DATA"]
                    },
                    {
                        "location": "LOCATION",
                        "rrdatas": ["RR_DATA"]
                     }
               ],
               "failover": [
                     {
                         "location": "LOCATION",
                         "rrdatas": ["RR_DATA"]
                     },
                     {
                         "location": "LOCATION",
                         "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).
  • LOCATION: 정책을 만들어야 할 위치정보입니다(예: asia-east).
  • RR_DATA: 리소스 레코드 모음과 연결된 임의의 값(예: 198.51.100.5), 여러 개의 값 rrdata1 rrdata2 rrdata3을 입력할 수도 있습니다(예: 198.51.100.5, 203.0.113.1 ...).

DNS 라우팅 정책 삭제

라우팅 정책을 삭제하려면 라우팅 정책이 포함된 ResourceRecordSet를 삭제해야 합니다. 삭제하려면 다음 단계를 따르세요.

Console

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

    Cloud DNS 영역으로 이동

  2. ResourceRecordSet를 삭제할 영역을 클릭합니다.

  3. 영역 세부정보 페이지에서 삭제할 ResourceRecordSet의 DNS 이름 옆에 있는 체크박스를 선택합니다.

  4. 레코드 모음 삭제를 클릭합니다.

gcloud

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

gcloud beta 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).

다음 단계

  • 관리형 영역을 생성, 업데이트, 나열, 삭제하려면 영역 관리를 참조하세요.
  • Cloud DNS를 사용할 때 발생할 수 있는 일반적인 문제에 대한 해결책을 찾으려면 문제 해결을 참조하세요.
  • Cloud DNS 개요는 Cloud DNS 개요를 참조하세요.