하이브리드 연결로 리전 외부 프록시 네트워크 부하 분산기 설정

리전 외부 프록시 네트워크 부하 분산기는 외부 리전 IP 주소 외부의 단일 리전에서 TCP 서비스 트래픽을 실행하고 확장할 수 있게 해주는 프록시 기반의 리전별 Layer 4 부하 분산기입니다. 이러한 부하 분산기는 인터넷의 외부 TCP 트래픽을 동일한 리전의 백엔드로 분산합니다.

이 페이지에서는 하이브리드 연결을 사용하여 연결된 온프레미스 또는 다른 클라우드 환경의 백엔드로 트래픽을 부하 분산하도록 리전 외부 프록시 네트워크 부하 분산기를 구성하는 방법을 설명합니다. 네트워크를 Google Cloud에 연결하도록 하이브리드 연결을 구성하는 내용은 이 페이지에서 다루지 않습니다.

시작하기 전에 외부 프록시 네트워크 부하 분산기 개요를 읽어보세요.

이 예시에서는 부하 분산기를 사용하여 온프레미스 또는 다른 클라우드 환경에 있는 백엔드 VM에 TCP 트래픽을 분산합니다.

이 예시에서는 다음 다이어그램에 표시된 배포를 구성합니다.

하이브리드 NEG 백엔드를 사용하는 외부 프록시 네트워크 부하 분산기 구성 예시
하이브리드 NEG 백엔드를 사용하는 외부 프록시 네트워크 부하 분산기 구성 예시

리전 부하 분산기입니다. 모든 부하 분산기 구성요소(백엔드 인스턴스 그룹, 백엔드 서비스, 대상 프록시, 전달 규칙)는 같은 리전에 있어야 합니다.

권한

하이브리드 부하 분산을 설정하려면 다음 권한이 있어야 합니다.

  • Google Cloud 환경

    • Google Cloud와 온프레미스 환경 또는 기타 클라우드 환경 간에 하이브리드 연결을 설정할 수 있는 권한이 필요합니다. 필요한 권한 목록은 관련 네트워크 연결 제품 문서를 참조하세요.
    • 하이브리드 연결 NEG 및 부하 분산기를 만들 수 있는 권한이 필요합니다. Compute 부하 분산기 관리자 역할(roles/compute.loadBalancerAdmin)에는 이 가이드에서 설명하는 태스크를 수행하는 데 필요한 권한이 포함되어 있습니다.
  • 온프레미스 환경 또는 Google Cloud 이외의 기타 클라우드 환경

    • IP:Port 조합을 사용하여 온프레미스 환경 또는 기타 클라우드 환경의 서비스를 Google Cloud에서 연결할 수 있도록 허용하는 네트워크 엔드포인트를 구성할 수 있는 권한입니다. 자세한 내용은 환경 네트워크 관리자에게 문의하세요.
    • Google의 상태 점검 프로브가 엔드포인트에 도달할 수 있도록 온프레미스 환경 또는 기타 클라우드 환경에서 방화벽 규칙을 만들 수 있는 권한이 필요합니다.

또한 이 페이지의 안내를 완료하려면 부하 분산기의 Google Cloud 기반 백엔드로 제공할 하이브리드 연결 NEG, 부하 분산기, 영역별 NEG(및 해당 엔드포인트)를 만들어야 합니다.

이렇게 하려면 프로젝트 소유자 또는 편집자이거나 다음 Compute Engine IAM 역할을 보유해야 합니다.

작업 필요한 역할
네트워크, 서브넷, 부하 분산기 구성요소 만들기 Compute 네트워크 관리자 (roles/compute.networkAdmin)
방화벽 규칙 추가 및 삭제 Compute 보안 관리자 (roles/compute.securityAdmin)
인스턴스 만들기 Compute 인스턴스 관리자 (roles/compute.instanceAdmin)

하이브리드 연결 설정

Google Cloud와 온프레미스 환경 또는 기타 클라우드 환경은 Cloud Router와 함께 Cloud Interconnect VLAN 연결 또는 Cloud VPN 터널을 사용하는 하이브리드 연결을 통해 연결되어야 합니다. 고가용성 연결을 사용하는 것을 권장합니다.

전역 동적 라우팅으로 사용 설정된 Cloud Router는 경계 게이트웨이 프로토콜(BGP)을 통해 특정 엔드포인트를 학습하고 Google Cloud VPC 네트워크에 프로그래밍합니다. 리전별 동적 라우팅은 지원되지 않습니다. 정적 경로도 지원되지 않습니다.

Cloud Interconnect 또는 Cloud VPN을 구성하는 데 사용하는 VPC 네트워크는 하이브리드 부하 분산 배포를 구성하는 데 사용하는 네트워크와 동일합니다. VPC 네트워크의 서브넷 CIDR 범위가 원격 CIDR 범위와 충돌하지 않는지 확인합니다. 서브넷 경로는 IP 주소가 겹칠 때 원격 연결보다 우선 적용됩니다.

자세한 내용은 다음 문서를 참조하세요.

Google Cloud 외부에 있는 환경 설정

다음 단계를 수행하여 하이브리드 부하 분산을 위한 온프레미스 환경 또는 기타 클라우드 환경을 설정하세요.

  • Google Cloud에 온프레미스 서비스를 노출하도록 네트워크 엔드포인트 구성(IP:Port)
  • 온프레미스 환경 또는 기타 클라우드 환경에서 방화벽 규칙 구성
  • Cloud Router가 특정 필수 경로를 비공개 환경에 공지하도록 구성

네트워크 엔드포인트 설정

하이브리드 연결을 설정한 후에는 IP:port 조합을 사용하여 Cloud Interconnect 또는 Cloud VPN을 통해 연결할 수 있는 온프레미스 환경 또는 다른 클라우드 환경 내에서 네트워크 엔드포인트를 하나 이상 구성합니다. 이 IP:port 조합은 이 프로세스의 후반부에 Google Cloud에서 생성될 하이브리드 연결 NEG의 엔드포인트 한 개 이상으로 구성됩니다.

IP 엔드포인트에 대한 경로가 여러 개 있으면 라우팅은 Cloud Router 개요에 설명된 동작을 따릅니다.

방화벽 규칙 설정

온프레미스 환경 또는 다른 클라우드 환경에서 다음 방화벽 규칙을 만들어야 합니다.

  • 온프레미스 또는 다른 클라우드 환경에서 인그레스 허용 방화벽 규칙을 만들어 리전의 프록시 전용 서브넷에서 엔드포인트에 도달하도록 트래픽을 허용합니다.
  • 하이브리드 NEG에는 Google의 상태 점검 프로브 범위를 허용 목록에 추가할 필요가 없습니다. 하지만 단일 백엔드 서비스에서 하이브리드 및 영역 NEG 조합을 사용하는 경우 영역 NEG에 대한 Google 상태 점검 프로브 범위를 허용 목록에 추가해야 합니다.

온프레미스 환경 또는 기타 클라우드 환경에 다음 커스텀 IP 범위를 공지하도록 Cloud Router를 구성하세요.

  • 리전의 프록시 전용 서브넷의 범위입니다.

Google Cloud 환경 설정

다음 단계에서는 환경 간 하이브리드 연결을 구성하는 데 사용된 것과 동일한 VPC 네트워크(이 절차에서는 NETWORK라고 함)를 사용해야 합니다. 이 네트워크에서 서브넷을 선택하여 부하 분산기의 IP 주소를 예약하고 부하 분산기를 만들 수 있습니다. 이 절차에서는 이 서브넷을 LB_SUBNET이라고 합니다.

또한 사용된 리전(이 절차에서는 REGION_A이라고 함)이 Cloud VPN 터널 또는 Cloud Interconnect VLAN 연결을 만들 때 사용한 리전과 동일한지 확인합니다.

프록시 전용 서브넷 구성

프록시 전용 서브넷은 Google이 사용자를 대신하여 Envoy 프록시를 실행하는 데 사용하는 IP 주소 집합을 제공합니다. 프록시는 클라이언트의 연결을 종료하고 백엔드에 새 연결을 만듭니다.

프록시 전용 서브넷은 VPC 네트워크(NETWORK)의 리전(REGION_A)에 있는 모든 Envoy 기반 리전 부하 분산기에서 사용됩니다.

VPC 네트워크당 리전별 활성 프록시 전용 서브넷은 하나만 있을 수 있습니다. 이 리전에 프록시 전용 서브넷이 이미 있으면 이 단계를 건너뛰어도 됩니다.

콘솔

Google Cloud 콘솔을 사용하는 경우에는 기다렸다가 나중에 부하 분산 페이지에서 프록시 전용 서브넷을 만들 수 있습니다.

지금 프록시 전용 서브넷을 만들려면 다음 단계를 사용합니다.

  1. Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.

    VPC 네트워크로 이동

  2. 환경 간 하이브리드 연결을 구성하는 데 사용된 네트워크로 이동합니다.

  3. 서브넷 추가를 클릭합니다.

  4. 이름proxy-only-subnet를 입력합니다.

  5. 리전에서 REGION_A을 선택합니다.

  6. 용도리전별 관리형 프록시로 설정합니다.

  7. IP 주소 범위10.129.0.0/23을 입력합니다.

  8. 추가를 클릭합니다.

gcloud

프록시 전용 서브넷을 만들려면 gcloud compute networks subnets create 명령어를 사용합니다.

gcloud compute networks subnets create proxy-only-subnet \
    --purpose=REGIONAL_MANAGED_PROXY \
    --role=ACTIVE \
    --region=REGION_A \
    --network=NETWORK \
    --range=10.129.0.0/23

부하 분산기의 IP 주소 예약

부하 분산기의 고정 IP 주소를 예약합니다.

콘솔

  1. Google Cloud 콘솔에서 고정 주소 예약 페이지로 이동합니다.

    고정 주소 예약으로 이동

  2. 새 주소의 이름을 선택합니다.

  3. 네트워크 서비스 등급스탠더드를 선택합니다.

  4. IP 버전에서 IPv4를 선택합니다. IPv6 주소는 지원되지 않습니다.

  5. 유형에서 리전을 선택합니다.

  6. 리전에서 REGION_A을 선택합니다.

  7. 연결 대상 옵션을 없음으로 설정된 상태로 둡니다. 부하 분산기를 만들면 이 IP 주소가 부하 분산기의 전달 규칙에 연결됩니다.

  8. 예약을 클릭하여 IP 주소를 예약합니다.

gcloud

  1. 고정 외부 IP 주소를 예약하려면 gcloud compute addresses create 명령어를 사용합니다.

    gcloud compute addresses create ADDRESS_NAME  \
       --region=REGION_A \
       --network-tier=STANDARD
    

    ADDRESS_NAME을 이 주소에 사용할 이름으로 바꿉니다.

  2. 결과를 보려면 gcloud compute addresses describe 명령어를 사용하세요.

    gcloud compute addresses describe ADDRESS_NAME
    

하이브리드 연결 NEG 설정

NEG를 만들 때 Google Cloud와 온프레미스 또는 기타 클라우드 환경 간의 지리적 거리를 최소화하는 ZONE을 사용합니다. 예를 들어 독일 프랑크푸르트의 온프레미스 환경에서 서비스를 호스팅하는 경우 NEG를 만들 때 europe-west3-a Google Cloud 영역을 지정할 수 있습니다.

또한 NEG를 만드는 데 사용하는 영역은 하이브리드 연결을 위해 Cloud VPN 터널 또는 Cloud Interconnect VLAN 연결이 구성된 리전과 동일해야 합니다.

사용 가능한 리전 및 영역은 Compute Engine 문서의 사용 가능한 리전 및 영역을 참조하세요.

콘솔

하이브리드 연결 NEG 만들기

  1. Google Cloud 콘솔에서 네트워크 엔드포인트 그룹 페이지로 이동합니다.

    네트워크 엔드포인트 그룹으로 이동

  2. 네트워크 엔드포인트 그룹 만들기를 클릭합니다.

  3. 이름HYBRID_NEG_NAME를 입력합니다.

  4. 네트워크 엔드포인트 그룹 유형하이브리드 연결 네트워크 엔드포인트 그룹(영역)을 선택합니다.

  5. 네트워크에서 NETWORK를 선택합니다.

  6. 서브넷으로 LB_SUBNET을 선택합니다.

  7. 영역에서 HYBRID_NEG_ZONE를 선택합니다.

  8. 기본 포트에서 기본값을 선택합니다.

  9. 최대 연결 수2를 입력합니다.

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

엔드포인트를 하이브리드 연결 NEG에 추가

  1. Google Cloud 콘솔에서 네트워크 엔드포인트 그룹 페이지로 이동합니다.

    네트워크 엔드포인트 그룹으로 이동

  2. 이전 단계에서 만든 네트워크 엔드포인트 그룹의 이름(HYBRID_NEG_NAME)을 클릭합니다.

  3. 네트워크 엔드포인트 그룹 세부정보 페이지의 이 그룹의 네트워크 엔드포인트 섹션에서 네트워크 엔드포인트 추가를 클릭합니다.

  4. 네트워크 엔드포인트 추가 페이지에서 새 네트워크 엔드포인트의 IP 주소를 입력합니다.

  5. 포트 유형을 선택합니다.

    • 기본값을 선택하면 엔드포인트에서 네트워크 엔드포인트 그룹의 모든 엔드포인트에 기본 포트를 사용합니다.
    • 커스텀을 선택하면 사용할 엔드포인트에 다른 포트 번호를 입력할 수 있습니다.
  6. 엔드포인트를 추가하려면 네트워크 엔드포인트 추가를 클릭하고 이전 단계를 반복합니다.

  7. Google Cloud 이외의 엔드포인트를 모두 추가한 후 만들기를 클릭합니다.

gcloud

  1. 하이브리드 연결 NEG를 만들려면 gcloud compute network-endpoint-groups create 명령어를 사용합니다.

    gcloud compute network-endpoint-groups create HYBRID_NEG_NAME \
        --network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \
        --zone=HYBRID_NEG_ZONE \
        --network=NETWORK
     
  2. 온프레미스 IP:포트 엔드포인트를 하이브리드 NEG에 추가합니다.

    gcloud compute network-endpoint-groups update HYBRID_NEG_NAME \
        --zone=HYBRID_NEG_ZONE \
        --add-endpoint="ip=ENDPOINT_IP_ADDRESS,port=ENDPOINT_PORT"
    

이 명령어를 사용하여 이전에 온프레미스 또는 클라우드 환경에서 구성한 네트워크 엔드포인트를 추가할 수 있습니다. --add-endpoint를 필요한 만큼 반복합니다.

필요한 경우 이 단계를 반복하여 하이브리드 NEG를 여러 개 만들 수 있습니다.

부하 분산기 구성

콘솔

구성 시작

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

    부하 분산으로 이동

  2. 부하 분산기 만들기를 클릭합니다.
  3. 부하 분산기 유형네트워크 부하 분산기(TCP/UDP/SSL)를 선택하고 다음을 클릭합니다.
  4. 프록시 또는 패스 스루프록시 부하 분산기를 선택하고 다음을 클릭합니다.
  5. 공개 또는 내부에서 공개(외부)를 선택하고 다음을 클릭합니다.
  6. 전역 또는 단일 리전 배포에서 리전 워크로드에 적합을 선택하고 다음을 클릭합니다.
  7. 구성을 클릭합니다.

기본 구성

  1. 이름에 부하 분산기의 이름을 입력합니다.
  2. 리전에서 REGION_A을 선택합니다.
  3. 네트워크에서 NETWORK를 선택합니다.

프록시 전용 서브넷 예약

  1. 서브넷 예약을 클릭합니다.
  2. 이름proxy-only-subnet를 입력합니다.
  3. IP 주소 범위10.129.0.0/23을 입력합니다.
  4. 추가를 클릭합니다.

백엔드 구성

  1. 백엔드 구성을 클릭합니다.
  2. 백엔드 유형에서 하이브리드 연결 네트워크 엔드포인트 그룹(영역)을 선택합니다.
  3. 프로토콜에서 TCP를 선택합니다.
  4. 새 백엔드에 이전에 만든 하이브리드 NEG(HYBRID_NEG_NAME)를 선택합니다. 또는 네트워크 엔드포인트 그룹 만들기를 클릭하여 지금 하이브리드 NEG를 만들 수도 있습니다. NEG 구성에 대한 안내는 하이브리드 NEG 설정을 참조하세요.
  5. 남은 기본값은 그대로 두고 완료를 클릭합니다.
  6. 상태 점검을 구성합니다.
    • 상태 점검에서 상태 점검 만들기를 선택합니다.
    • 이름에 상태 점검의 이름을 입력합니다.
    • 프로토콜에서 TCP를 선택합니다.
    • 포트80을 입력합니다.
  7. 남은 기본값은 그대로 두고 저장을 클릭합니다.
  8. Google Cloud 콘솔에서 백엔드 구성 옆에 체크표시가 있는지 확인합니다. 없으면 모든 단계를 완료했는지 다시 확인합니다.

프런트엔드 구성

  1. 프런트엔드 구성을 클릭합니다.
  2. 이름에 전달 규칙의 이름을 입력합니다.
  3. IP 주소에서 LB_IP_ADDRESS를 선택합니다.
  4. 포트 번호에 1~65535 사이의 포트 번호를 입력합니다. 전달 규칙은 대상 포트가 일치하는 패킷만 전달합니다.
  5. 온프레미스 또는 기타 클라우드 엔드포인트에서 실행되는 서비스로 작동하는 경우에만 프록시 프로토콜을 사용 설정합니다. 예를 들어 PROXY 프로토콜은 Apache HTTP 서버 소프트웨어에서 작동하지 않습니다. 자세한 내용은 PROXY 프로토콜을 참조하세요.
  6. 완료를 클릭합니다.
  7. Google Cloud 콘솔에서 프런트엔드 구성 옆에 체크표시가 있는지 확인합니다. 없으면 이전 단계를 모두 완료했는지 다시 확인합니다.

검토 및 완료

  1. 검토 및 완료를 클릭합니다.
  2. 설정한 내용을 다시 한 번 확인합니다.
  3. 만들기를 클릭합니다.

gcloud

  1. 백엔드의 리전 상태 점검을 만듭니다.

    gcloud compute health-checks create tcp TCP_HEALTH_CHECK_NAME \
        --region=REGION_A \
        --use-serving-port
    
  2. 백엔드 서비스를 만듭니다.

    gcloud compute backend-services create BACKEND_SERVICE_NAME \
       --load-balancing-scheme=EXTERNAL_MANAGED \
       --protocol=TCP \
       --region=REGION_A \
       --health-checks=TCP_HEALTH_CHECK_NAME \
       --health-checks-region=REGION_A
    
  3. 하이브리드 NEG 백엔드를 백엔드 서비스에 추가합니다.

    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
       --network-endpoint-group=HYBRID_NEG_NAME \
       --network-endpoint-group-zone=HYBRID_NEG_ZONE \
       --region=REGION_A \
       --balancing-mode=CONNECTION \
       --max-connections=MAX_CONNECTIONS
    

    MAX_CONNECTIONS의 경우, 백엔드가 처리해야 하는 최대 동시 연결 수를 입력합니다.

  4. 대상 TCP 프록시를 만듭니다.

    gcloud compute target-tcp-proxies create TARGET_TCP_PROXY_NAME \
       --backend-service=BACKEND_SERVICE_NAME \
       --region=REGION_A
    
  5. 전달 규칙을 만듭니다. gcloud compute forwarding-rules create 명령어를 사용합니다. FWD_RULE_PORT를 1~65535 사이의 단일 포트 번호로 바꿉니다. 전달 규칙은 대상 포트가 일치하는 패킷만 전달합니다.

    gcloud compute forwarding-rules create FORWARDING_RULE \
       --load-balancing-scheme=EXTERNAL_MANAGED \
       --network=NETWORK \
       --subnet=LB_SUBNET \
       --address=LB_IP_ADDRESS \
       --ports=FWD_RULE_PORT \
       --region=REGION_A \
       --target-tcp-proxy=TARGET_TCP_PROXY_NAME \
       --target-tcp-proxy-region=REGION_A
    

부하 분산기 테스트

부하 분산기를 구성했으므로 부하 분산기의 IP 주소로 트래픽 전송을 테스트할 수 있습니다.

  1. 부하 분산기의 IP 주소를 가져옵니다.

    IPv4 주소를 가져오려면 다음 명령어를 실행합니다.

    gcloud compute addresses describe ADDRESS_NAME
    
  2. 다음 명령어를 실행하여 트래픽을 부하 분산기로 보냅니다. LB_IP_ADDRESS를 부하 분산기의 IPv4 주소로 바꿉니다.

    curl -m1 LB_IP_ADDRESS:FWD_RULE_PORT
    

다음 단계