내부 부하 분산 및 DNS 이름

A 레코드로 알려진 DNS의 주소 레코드는 IP 주소로 DNS 이름을 매핑하는 데 사용됩니다. 내부 부하 분산기의 전달 규칙을 만들 때 Google Cloud에서 부하 분산기에 고유한 Compute Engine 내부 DNS 이름을 만들도록 서비스 라벨을 선택적으로 지정할 수 있습니다. 이 내부 DNS 이름은 사용자가 지정한 프로젝트 ID, 전달 규칙 이름, 선택한 서비스 라벨로 구성됩니다.

사양

  • 이 기능은 다음 부하 분산기의 전달 규칙에서 지원됩니다.

  • Google Cloud에서 부하 분산기에 대해 만드는 DNS 이름 형식에 대한 자세한 내용은 DNS 레코드 형식을 참조하세요. DNS 이름에는 전달 규칙의 이름이 포함되어 있으므로 여러 전달 규칙에 동일한 서비스 라벨을 사용하더라도 각 DNS 이름은 고유합니다.

  • 대체 이름 서버가 구성된 경우가 아니라면 같은 프로젝트 및 VPC 네트워크의 모든 리전에 있는 클라이언트 VM이 부하 분산기의 내부 DNS 이름에 대한 DNS 조회를 수행할 수 있습니다. 전역 액세스를 사용할 수 있고 사용 설정되어 있는 경우가 아니라면 부하 분산기에 액세스하려면 클라이언트 VM이 같은 리전에 있어야 합니다. 전역 액세스를 사용 설정하면 모든 리전의 클라이언트가 부하 분산기에 액세스할 수 있습니다.

  • 전달 규칙을 생성할 때만 서비스 라벨을 지정할 수 있습니다. 서비스 라벨을 기존 전달 규칙에 추가할 수 없습니다. 하지만 기존 전달 규칙을 서비스 라벨이 있는 새 전달 규칙으로 바꿀 수 있습니다. 원본 전달 규칙을 먼저 삭제한 경우 이 새 전달 규칙은 동일한 내부 IP 주소를 원본으로 사용할 수 있습니다.

  • 서비스 라벨에서 생성된 내부 DNS 이름에는 다음과 같은 제한 사항이 있습니다.

    • 대응하는 역방향(PTR) 레코드가 생성되지 않습니다.
    • 각 전달 규칙은 하나의 서비스 라벨만 가질 수 있습니다.
    • 서비스 라벨 및 전달 규칙의 이름 이외에는 내부 DNS 이름의 다른 부분을 변경할 수 없습니다. 여기에는 형식 및 도메인 이름(.internal)이 포함됩니다.

    내부 부하 분산기에 더 유연한 DNS 이름이 필요한 경우 Cloud DNS 관리 비공개 영역에서 커스텀 레코드를 만들 수 있습니다.

DNS 레코드 형식

전달 규칙에 서비스 라벨을 추가하면 Google Cloud는 다음 형식 중 하나를 사용하여 Compute Engine 내부 DNS A 레코드를 만듭니다.

  • 내부 패스 스루 네트워크 부하 분산기:

    SERVICE_LABEL.FORWARDING_RULE_NAME.il4.REGION.lb.PROJECT_ID.internal

  • 리전별 내부 애플리케이션 부하 분산기의 경우:

    SERVICE_LABEL.FORWARDING_RULE_NAME.il7.REGION.lb.PROJECT_ID.internal

SERVICE_LABEL은 지정한 전달 규칙의 서비스 라벨입니다. 다음 형식을 따라야 합니다.

  • 최대 63자의 소문자(a~z), 숫자(0~9) 또는 대시(-)를 사용할 수 있습니다.
  • 서비스 라벨은 소문자로 시작해야 합니다.
  • 서비스 라벨은 소문자 또는 숫자로 끝나야 합니다.

FORWARDING_RULE_NAME은 만들려는 전달 규칙의 이름입니다.

REGION은 부하 분산기 리전입니다.

PROJECT_ID프로젝트 ID입니다. organization:project-id 형식의 프로젝트 ID는 project-id.organization으로 변환됩니다. 예를 들어 프로젝트 ID가 example.com:example-marketing-prod인 경우 Google Cloud는 example-marketing-prod.example.com을 사용합니다.

서비스 라벨이 있는 전달 규칙 만들기

이 절차에서는 내부 패스 스루 네트워크 부하 분산기 또는 내부 애플리케이션 부하 분산기에 대한 서비스 라벨이 포함된 전달 규칙을 만드는 방법을 보여줍니다.

이 절차 전용 서비스 라벨이 있는 전달 규칙을 만드는 방법에 중점을 둡니다. 부하 분산기의 백엔드 구성의 속성과 프런트엔드 구성의 다른 속성은 생략됩니다. 내부 패스 스루 네트워크 부하 분산기나 내부 애플리케이션 부하 분산기를 처음 사용하는 경우 전체 예시는 다음 페이지를 참조하세요.

콘솔

  1. Google Cloud 콘솔에서 부하 분산 페이지로 이동합니다.

    부하 분산으로 이동

  2. 부하 분산기 만들기를 클릭합니다.
  3. 마법사의 단계를 완료하여 내부 패스 스루 네트워크 부하 분산기나 내부 애플리케이션 부하 분산기를 만들고 구성을 클릭합니다.
  4. 부하 분산기의 이름을 입력합니다.
  5. 계속을 클릭합니다.
  6. 백엔드 구성을 완료합니다.
  7. 프런트엔드 구성을 클릭합니다. 프런트엔드 구성을 완료하고 해당 섹션의 하단에 서비스 라벨을 지정합니다.

  8. 완료를 클릭한 다음 검토 및 완료합니다.

gcloud

내부 패스 스루 네트워크 부하 분산기에 대한 서비스 라벨이 포함된 전달 규칙을 만들려면 다음 단계를 따르세요.

gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
    --load-balancing-scheme=INTERNAL \
    --region=REGION \
    --backend-service-region=REGION \
    --backend-service=BACKEND_SERVICE_NAME \
    --network=NETWORK \
    --subnet=SUBNET \
    --address=INTERNAL_IP \
    --ip-protocol=PROTOCOL \
    --ports=PORTS \
    --service-label=SERVICE_LABEL

내부 HTTPS 부하 분산기에 대한 서비스 라벨이 포함된 전달 규칙을 만들려면 다음 단계를 따르세요.

gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
    --load-balancing-scheme=INTERNAL_MANAGED \
    --region=REGION \
    --target-https-proxy-region=REGION \
    --target-https-proxy=TARGET_PROXY_NAME \
    --network=NETWORK \
    --subnet=SUBNET \
    --address=INTERNAL_IP \
    --ip-protocol=TCP \
    --ports=443 \
    --service-label=SERVICE_LABEL

내부 HTTP 부하 분산기에 대한 서비스 라벨이 포함된 전달 규칙을 만들려면 다음 단계를 따르세요.

gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
    --load-balancing-scheme=INTERNAL_MANAGED \
    --region=REGION \
    --target-http-proxy-region=REGION \
    --target-http-proxy=TARGET_PROXY_NAME \
    --network=NETWORK \
    --subnet=SUBNET \
    --address=INTERNAL_IP \
    --ip-protocol=TCP \
    --ports=PORT \
    --service-label=SERVICE_LABEL

각 자리표시자를 적절한 값으로 바꿉니다.

  • FORWARDING_RULE_NAME은 부하 분산기의 전달 규칙 이름입니다.
  • REGION은 부하 분산기 리전입니다.
  • BACKEND_SERVICE_NAME은 부하 분산기의 백엔드 서비스 이름입니다.
  • TARGET_PROXY_NAME은 대상 HTTPS 프록시(내부 HTTPS 부하 분산기용) 또는 대상 HTTP 프록시(내부 HTTP 부하 분산기용)의 이름입니다.
  • NETWORK는 부하 분산기가 생성되는 VPC 네트워크의 이름입니다.
  • SUBNET은 VPC 네트워크의 서브넷 이름입니다. 서브넷은 부하 분산기의 백엔드 서비스 또는 대상 프록시와 동일한 리전에 있어야 합니다.
  • INTERNAL_IP는 선택한 서브넷의 기본 IP 범위에 있는 내부 IP 주소입니다. Google Cloud에서 사용 가능한 IP 주소를 선택하도록 --address 플래그를 생략할 수 있습니다.
  • 내부 패스 스루 네트워크 부하 분산기의 경우 PROTOCOL은 부하 분산기의 백엔드 서비스 프로토콜과 일치하는 TCP 또는 UDP입니다. 내부 애플리케이션 부하 분산기의 경우 프로토콜은 TCP여야 합니다.
  • 내부 패스 스루 네트워크 부하 분산기의 경우 PORTS는 숫자로 최대 5개의 포트 또는 단어 ALL로 지정한 배열입니다. 내부 HTTPS 부하 분산기의 경우 포트에 443을 사용해야 합니다. 내부 HTTP 부하 분산기의 경우 PORT80 또는 8080을 사용할 수 있습니다. 자세한 내용은 전달 규칙 개념의 포트 사양을 참조하세요.
  • SERVICE_LABEL은 원하는 서비스 라벨입니다. 이름 지정 규칙을 따라야 합니다.

API

다음 예시에서는 forwardingRules.insert 메서드를 사용하여 전달 규칙을 만듭니다.

내부 패스 스루 네트워크 부하 분산기에 대한 서비스 라벨이 포함된 전달 규칙을 만들려면 다음 단계를 따르세요.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/forwardingRules

{
  "name": "FORWARDING_RULE_NAME",
  "loadBalancingScheme": "INTERNAL",
  "backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/backendServices/BACKEND_SERVICE_NAME",
  "network": "https://www.googleapis.com/compute/v1/projects/PROJECT/global/networks/NETWORK",
  "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/subnetworks/SUBNET",
  "IPAddress": "INTERNAL_IP",
  "IPProtocol": "PROTOCOL",
  "ports": PORTS,
  "serviceLabel": "SERVICE_LABEL"
}

내부 HTTPS 부하 분산기에 대한 서비스 라벨이 포함된 전달 규칙을 만들려면 다음 단계를 따르세요.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/forwardingRules

{
  "name": "FORWARDING_RULE_NAME",
  "loadBalancingScheme": "INTERNAL_MANAGED",
  "target": "https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/targetHttpsProxies/TARGET_PROXY_NAME",
  "network": "https://www.googleapis.com/compute/v1/projects/PROJECT/global/networks/NETWORK",
  "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/subnetworks/SUBNET",
  "IPAddress": "INTERNAL_IP",
  "IPProtocol": "TCP",
  "ports": 443,
  "serviceLabel": "SERVICE_LABEL"
}

내부 HTTP 부하 분산기에 대한 서비스 라벨이 포함된 전달 규칙을 만들려면 다음 단계를 따르세요.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/forwardingRules

{
  "name": "FORWARDING_RULE_NAME",
  "loadBalancingScheme": "INTERNAL_MANAGED",
  "target": "https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/targetHttpProxies/TARGET_PROXY_NAME",
  "network": "https://www.googleapis.com/compute/v1/projects/PROJECT/global/networks/NETWORK",
  "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/subnetworks/SUBNET",
  "IPAddress": "INTERNAL_IP",
  "IPProtocol": "TCP",
  "ports": PORT,
  "serviceLabel": "SERVICE_LABEL"
}

각 자리표시자를 적절한 값으로 바꿉니다.

  • FORWARDING_RULE_NAME은 부하 분산기의 전달 규칙 이름입니다.
  • REGION은 부하 분산기 리전입니다.
  • BACKEND_SERVICE_NAME은 내부 패스 스루 네트워크 부하 분산기의 백엔드 서비스 이름입니다.
  • TARGET_PROXY_NAME은 대상 HTTPS 프록시(내부 HTTPS 부하 분산기용) 또는 대상 HTTP 프록시(내부 HTTP 부하 분산기용)의 이름입니다.
  • NETWORK는 부하 분산기가 생성되는 VPC 네트워크의 이름입니다.
  • SUBNET은 VPC 네트워크의 서브넷 이름입니다. 서브넷은 부하 분산기의 백엔드 서비스 또는 대상 프록시와 동일한 리전에 있어야 합니다.
  • INTERNAL_IP는 선택한 서브넷의 기본 IP 범위에 있는 내부 IP 주소입니다. Google Cloud에서 사용 가능한 IP 주소를 선택하도록 IPAddress 키를 생략할 수 있습니다.
  • 내부 패스 스루 네트워크 부하 분산기의 경우 PROTOCOL은 부하 분산기의 백엔드 서비스 프로토콜과 일치하는 TCP 또는 UDP입니다. 내부 애플리케이션 부하 분산기의 경우 프로토콜은 TCP여야 합니다.
  • 내부 패스 스루 네트워크 부하 분산기의 경우 PORTS는 숫자로 최대 5개의 포트 또는 단어 ALL로 지정한 배열입니다. 내부 HTTPS 부하 분산기의 경우 포트에 443을 사용해야 합니다. 내부 HTTP 부하 분산기의 경우 PORT80 또는 8080을 사용할 수 있습니다. 자세한 내용은 전달 규칙 개념의 포트 사양을 참조하세요.
  • SERVICE_LABEL은 원하는 서비스 라벨입니다. 이름 지정 규칙을 따라야 합니다.

서비스 라벨 보기

Console

내부 부하 분산기의 각 내부 전달 규칙에 대한 Compute Engine 내부 DNS 이름(서비스 라벨에서 생성)을 볼 수 있습니다.

  1. Google Cloud 콘솔에서 부하 분산 페이지로 이동합니다.

    부하 분산으로 이동

  2. 세부정보 페이지를 보려면 내부 부하 분산기의 이름을 클릭합니다.

  3. 부하 분산기에 할당된 내부 전달 규칙은 프런트엔드 섹션에 나열됩니다. DNS 이름 열에는 각 전달 규칙에 할당된 Compute Engine 내부 DNS 이름이 표시됩니다. 서비스 라벨은 이름의 첫 부분(첫 번째 점 이전)입니다. 표시된 이름이 없으면 전달 규칙에 정의된 서비스 라벨이 없습니다.

gcloud

  1. 내부 패스 스루 네트워크 부하 분산기 또는 내부 애플리케이션 부하 분산기에서 사용하는 프로젝트의 전달 규칙을 나열합니다. 필요한 단계를 찾은 다음 이름 및 리전을 메모하여 다음 단계를 진행합니다.

    gcloud compute forwarding-rules list \
        --filter="loadBalancingScheme=SCHEME"
    

    SCHEME 값은 나열해야 하는 전달 규칙에 따라 다릅니다.

    • 내부 패스 스루 네트워크 부하 분산기의 경우 INTERNAL을 사용합니다.
    • 내부 애플리케이션 부하 분산기의 경우 INTERNAL_MANAGED를 사용합니다.
  2. 전달 규칙을 설명하고 FORWARDING_RULE_NAME을 전달 규칙 이름으로, REGION을 전달 규칙 리전으로 바꿉니다.

    gcloud compute forwarding-rules describe FORWARDING_RULE_NAME \
        --region=REGION \
        --format="get(serviceLabel)"
    

API

forwardingRules.get 메서드가 있는 전달 규칙 및 서비스 라벨을 확인합니다.

API 요청에 대한 응답에는 서비스 라벨(serviceLabel) 및 Compute Engine 내부 DNS 이름(serviceName)이 포함됩니다.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/forwardingRules/FORWARDING_RULE_NAME

TCP/UDP 응답:

{
  ...
  "serviceLabel": "SERVICE_LABEL",
  "serviceName": "SERVICE_LABEL.FORWARDING_RULE_NAME.il4.REGION.lb.PROJECT.internal",
  ...
}

HTTP(S) 응답:

{
  ...
  "serviceLabel": "SERVICE_LABEL",
  "serviceName": "SERVICE_LABEL.FORWARDING_RULE_NAME.il7.REGION.lb.PROJECT.internal",
  ...
}

다음 절차는 전달 규칙을 서비스 라벨이 있는 규칙으로 대체하는 방법을 보여줍니다. 이 절차는 내부 패스 스루 네트워크 부하 분산기와 내부 애플리케이션 부하 분산기 모두에 작동합니다.

아직 내부 부하 분산기에 대한 전달 규칙을 만들지 않은 경우 이 예시를 건너뛰고 대신 서비스 라벨이 있는 전달 규칙 만들기를 참조하세요.

  1. 전달 규칙의 내부 IP 주소를 확인하여 부하 분산기의 기존 전달 규칙을 설명합니다.

    gcloud compute forwarding-rules describe FORWARDING_RULE_NAME \
        --region=REGION \
        --format="get(IPAddress)"
    
  2. 전달 규칙 삭제:

    gcloud compute forwarding-rules delete FORWARDING_RULE_NAME \
        --region=REGION
    
  3. 서비스 라벨이 있는 동일한 이름 및 내부 IP 주소로 대체 전달 규칙을 만듭니다. 서비스 라벨이 있는 전달 규칙 만들기를 참조하세요.

다음 단계