내부 부하 분산 및 DNS 이름

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

사양

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

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

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

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

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

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

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

DNS 레코드 형식

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

  • 내부 TCP/UDP 부하 분산의 경우:

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

  • 내부 HTTP(S) 부하 분산의 경우:

    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를 사용합니다.

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

이 절차는 내부 TCP/UDP 부하 분산기 또는 내부 HTTP(S) 부하 분산기에 대한 서비스 라벨을 사용하여 전달 규칙을 만드는 방법을 보여줍니다.

이 절차 전용 서비스 라벨이 있는 전달 규칙을 만드는 방법에 중점을 둡니다. 부하 분산기의 백엔드 구성의 속성과 프런트엔드 구성의 다른 속성은 생략됩니다. 내부 TCP/UDP 부하 분산 또는 내부 HTTP(S) 부하 분산을 처음 사용하는 경우 다음 페이지에서 전체 예제를 참조하세요.

Console

  1. Google Cloud Console에서 부하 분산 페이지로 이동합니다.
    부하 분산 페이지로 이동
  2. 부하 분산기 만들기를 클릭합니다.
  3. HTTP(S) 부하 분산, TCP 부하 분산 또는 UDP 부하 분산에서 구성 시작을 클릭합니다.
  4. 인터넷 연결 또는 내부 전용에서 내 VM 사이에서만을 선택한 다음 계속을 클릭합니다.
  5. 부하 분산기의 이름을 입력합니다.
  6. 백엔드 구성을 완료합니다.
  7. 프런트엔드 구성을 클릭합니다. 프런트엔드 구성을 완료하고 해당 섹션의 하단에 서비스 라벨을 지정합니다.
  8. 완료를 클릭한 다음 검토 및 완료합니다.

gcloud

내부 TCP/UDP 부하 분산기에 대한 서비스 라벨을 사용하여 전달 규칙을 만들려면 다음 단계를 따르세요.

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

api

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

내부 TCP/UDP 부하 분산기에 대한 서비스 라벨을 사용하여 전달 규칙을 만들려면 다음 단계를 따르세요.

    POST https://www.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://www.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://www.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은 내부 TCP/UDP 부하 분산기의 백엔드 서비스 이름입니다.
  • TARGET_PROXY_NAME은 내부 HTTPS 부하 분산기에 대한 대상 HTTPS 프록시 또는 내부 HTTP 부하 분산기에 대한 대상 HTTP 프록시의 이름입니다.
  • NETWORK는 부하 분산기에서 생성되는 VPC 네트워크의 이름입니다.
  • SUBNET은 VPC 네트워크의 서브넷 이름입니다. 서브넷은 부하 분산기의 백엔드 서비스 또는 대상 프록시와 동일한 리전에 있어야 합니다.
  • INTERNAL_IP는 선택한 서브넷의 기본 IP 범위에 있는 내부 IP 주소입니다. Google Cloud에서 사용 가능한 IP 주소를 선택하도록 IPAddress 키를 생략할 수 있습니다.
  • 내부 TCP/UDP 부하 분산기의 경우 PROTOCOLTCP 또는 UDP이며 부하 분산기의 백엔드 서비스의 프로토콜과 일치합니다. 내부 HTTP 부하 분산기의 경우 프로토콜은 TCP이어야 합니다.
  • 내부 TCP/UDP 부하 분산기의 경우 PORTS는 숫자로 최대 5개의 포트 또는 단어 ALL로 지정한 배열입니다. 내부 HTTPS 부하 분산기의 경우 포트에 대해 443를 사용해야 하고 내부 HTTP 부하 분산기의 경우에는 PORT에 대해 80 또는 8080를 사용할 수 있습니다. 자세한 내용은 전달 규칙 개념의 포트 사양을 참조하세요.
  • SERVICE_LABEL은 원하는 서비스 라벨입니다. 이름 지정 규칙을 따라야 합니다.

서비스 라벨 보기

Console

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

  1. Google Cloud Console에서 부하 분산 페이지로 이동합니다.
    부하 분산 페이지로 이동
  2. 세부정보 페이지를 보려면 내부 부하 분산기의 이름을 클릭합니다.
  3. 부하 분산기에 할당된 내부 전달 규칙은 프런트엔드 섹션에 나열됩니다. DNS 이름 열에는 각 전달 규칙에 할당된 Compute Engine 내부 DNS 이름이 표시됩니다. 서비스 라벨은 이름의 첫 부분(첫 번째 점 이전)입니다. 표시된 이름이 없으면 전달 규칙에 정의된 서비스 라벨이 없습니다.

gcloud

  1. 내부 TCP/UDP 부하 분산 또는 내부 HTTP(S) 부하 분산이 사용하는 프로젝트의 전달 규칙을 나열합니다. 필요한 단계를 찾은 다음 이름 및 리전을 메모하여 다음 단계를 진행합니다.

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

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

    • 내부 TCP/UDP 부하 분산기의 경우 INTERNAL을 사용합니다.
    • 내부 HTTP(S) 부하 분산기의 경우 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://www.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",
      ...
    }
    

예시

다음 절차는 전달 규칙을 서비스 라벨이 있는 규칙으로 대체하는 방법을 보여줍니다. 이 절차는 내부 TCP/UDP 부하 분산 및 내부 HTTP(S) 부하 분산에 적용됩니다.

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

  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 주소로 대체 전달 규칙을 만듭니다. 서비스 라벨이 있는 전달 규칙 만들기를 참조하세요.

다음 단계