리전 외부 HTTP(S) 부하 분산기용 프록시 전용 서브넷

이 페이지에서는 리전 부하 분산기의 프록시 전용 서브넷을 사용하는 방법을 설명합니다.

리전 외부 HTTP(S) 부하 분산기의 일반적인 개요는 HTTP(S) 부하 분산 개요를 참조하세요.

프록시 전용 서브넷은 리전 부하 분산기 프록시 전용으로 예약되므로 다른 용도로 사용할 수 없습니다. 각 리전의 VPC 네트워크마다 1개의 프록시 전용 서브넷만 활성화할 수 있습니다.

부하 분산기의 전달 규칙을 만들기 전에 프록시 전용 서브넷을 만들어야 합니다. 리전 부하 분산기를 사용하는 VPC 네트워크의 각 리전에는 프록시 전용 서브넷이 있어야 합니다.

리전 부하 분산기는 네트워크의 프록시 풀을 제공합니다. 프록시는 URL 맵, 백엔드 서비스의 세션 어피니티, 각 백엔드 인스턴스 그룹 또는 NEG의 분산 모드, 기타 요인을 기반으로 이동하는 각 HTTP(S) 요청의 위치를 평가합니다.

  1. 클라이언트는 부하 분산기 전달 규칙의 IP 주소와 포트에 연결됩니다.

  2. 프록시 중 하나에서 클라이언트의 네트워크 연결을 수신하고 종료합니다.

  3. 프록시는 부하 분산기의 URL 맵과 백엔드 서비스에서 지정한 대로 NEG의 적절한 백엔드 VM 또는 엔드포인트에 대한 연결을 설정합니다.

각 부하 분산기의 프록시에는 내부 IP 주소가 할당됩니다. 리전 내 모든 리전 부하 분산기의 프록시는 VPC 네트워크의 해당 리전에 있는 단일 프록시 전용 서브넷의 내부 IP 주소를 사용합니다. 프록시 전용 서브넷은 64개 이상의 IP 주소를 제공해야 합니다. 이는 /26 이하의 프리픽스 길이에 해당합니다.

리전의 리전 부하 분산기용으로 Google Cloud에서 만든 프록시만 프록시 전용 서브넷을 사용합니다. 부하 분산기 전달 규칙의 IP 주소는 프록시 전용 서브넷에서 시작되지 않습니다. 백엔드 VM 및 엔드포인트의 IP 주소도 프록시 전용 서브넷에서 시작되지 않습니다.

각 프록시는 해당 부하 분산기의 전달 규칙에서 지정한 IP 주소와 포트를 리슨합니다. 프록시에서 백엔드 VM 또는 엔드포인트로 전송되는 각 패킷에는 프록시 전용 서브넷의 소스 IP 주소가 있습니다.

프록시는 부하 분산기 수준이 아닌 VPC 수준에서 할당됩니다. 즉, 동일한 리전과 동일한 VPC 네트워크에 있는 여러 리전 부하 분산기가 부하 분산을 위해 프록시를 공유합니다.

프록시 전용 서브넷이 부하 분산기 아키텍처에 통합되는 방식

다음 다이어그램은 리전 부하 분산기에 필요한 Google Cloud 리소스를 보여줍니다.

리전 외부 HTTP(S) 부하 분산기 구성요소(확대하려면 클릭)
리전 외부 HTTP(S) 부하 분산기 구성요소(확대하려면 클릭)

다이어그램에서 볼 수 있듯이 리전 부하 분산기 배포에는 서브넷이 최소 두 개 이상 필요합니다.

  • 부하 분산기의 백엔드 VM 및 백엔드 엔드포인트는 기본 IP 주소 범위가 `10.1.2.0/24(이 예시의 경우)인 단일 서브넷을 사용합니다. 이 서브넷은 프록시 전용 서브넷이 아닙니다. 서브넷이 부하 분산기와 동일한 리전에 있다면 백엔드 VM 및 엔드포인트에 여러 개의 서브넷을 사용할 수 있습니다.
  • 프록시 전용 서브넷은 10.129.0.0/23입니다(이 예시의 경우).
  • 프록시 전용 서브넷 만들기

    리전 부하 분산기의 서브넷 예약은 일부 플래그의 추가를 제외하고는 서브넷 만들기 절차와 기본적으로 동일합니다.

    기존 서브넷을 프록시 전용 서브넷으로 다시 사용할 수 없으므로 반드시 리전 외부 HTTP(S) 부하 분산기가 있는 각 리전에 새 서브넷을 만들어야 합니다. 이는 subnets update 명령어가 서브넷의 --purpose 필드 수정을 허용하지 않기 때문입니다. 프록시 전용 서브넷의 경우 --purposeREGIONAL_MANAGED_PROXY로 설정해야 합니다.

    리전 부하 분산기의 전달 규칙을 만들기 전에 부하 분산기의 프록시에서 사용할 프록시 전용 서브넷을 만들어야 합니다. 리전에 대한 프록시 전용 서브넷을 먼저 만들지 않고 리전 부하 분산기를 구성하려고 하면 부하 분산기 생성 프로세스가 실패합니다.

    리전 부하 분산기를 사용하는 가상 네트워크(VPC)의 각 리전에 1개의 프록시 전용 서브넷을 만들어야 합니다. 이 서브넷은 해당 리전의 모든 리전 부하 분산기에서 공유합니다.

    네트워크가 자동 모드인지 커스텀 모드인지 여부에 관계없이 프록시 전용 서브넷을 만들어야 합니다. 권장 서브넷 크기는 /23(512개의 프록시 전용 주소)이며, 최소 /26(64개의 프록시 전용 주소)이어야 합니다.

    Console

    1. Cloud Console에서 VPC 네트워크 페이지로 이동합니다.
      VPC 네트워크 페이지로 이동
    2. 프록시 전용 서브넷을 추가할 공유 VPC 네트워크의 이름을 클릭합니다.
    3. 서브넷 추가를 클릭합니다.
    4. 이름을 입력합니다.
    5. 리전을 선택합니다.
    6. 용도리전별 관리형 프록시로 설정합니다.
    7. IP 주소 범위를 입력합니다.
    8. 추가를 클릭합니다.

    gcloud

    gcloud compute networks subnets create 명령어는 프록시 전용 서브넷을 만듭니다.

    gcloud beta compute networks subnets create SUBNET_NAME \
        --purpose=REGIONAL_MANAGED_PROXY \
        --role=ACTIVE \
        --region=REGION \
        --network=VPC_NETWORK_NAME \
        --range=CIDR_RANGE
    

    필드는 다음과 같이 정의됩니다.

    • SUBNET_NAME은 프록시 전용 서브넷의 이름입니다.
    • REGION은 프록시 전용 서브넷의 리전입니다.
    • VPC_NETWORK_NAME은 서브넷이 포함된 VPC 네트워크의 이름입니다.
    • CIDR_RANGE - 서브넷의 기본 IP 주소 범위입니다. 리전의 프록시에서 64개 이상의 IP 주소를 사용할 수 있도록 26 이하의 서브넷 마스크를 사용해야 합니다. 권장 서브넷 마스크 길이는 /23입니다.

    전체 구성 예시는 프록시 전용 서브넷 구성을 참조하세요.

    백엔드가 프록시 전용 서브넷의 연결을 수락하도록 방화벽 규칙을 구성해야 합니다. 방화벽 규칙 구성에서 fw-allow-proxies 구성을 참조하세요.

    프록시 가용성

    경우에 따라 Google Cloud 리전에 새로운 리전 부하 분산기의 프록시 용량이 부족할 수 있습니다. 이 경우 부하 분산기를 만들 때 Cloud Console에서 프록시 가용성 경고 메시지를 제공합니다. 이 문제를 해결하려면 다음 중 하나를 수행하면 됩니다.

    • 부하 분산기에 다른 리전을 선택합니다. 다른 리전에 백엔드가 있으면 이 방법이 편리합니다.
    • 프록시 전용 서브넷이 이미 할당된 VPC 네트워크를 사용합니다.
    • 용량 문제가 해결될 때까지 기다립니다.

    프록시 전용 서브넷의 크기 또는 주소 범위 변경

    배포 시 백엔드 수를 변경하는 경우 프록시 전용 서브넷의 크기 또는 주소 범위를 변경해야 할 수 있습니다.

    기본 주소 범위에 하는 것과 동일한 방법으로(expand-ip-range 명령어 사용) 프록시 전용 서브넷을 확장할 수 없습니다. 대신 요구에 맞는 백업 프록시 전용 서브넷을 만든 후 이를 활성 역할로 승격해야 합니다. 프록시 전용 서브넷은 리전 및 VPC 네트워크당 한 개만 활성화할 수 있고 서브넷의 기본 IP 주소 범위만 확장할 수 있기 때문입니다.

    프록시 전용 서브넷을 백업에서 활성으로 전환해도 새 연결이 중단되지 않습니다.

    • 새로 활성화된 프록시 전용 서브넷은 새 연결에 사용됩니다.
    • 이전의 활성(현재는 백업) 프록시 전용 서브넷은 더 이상 새 연결에 사용되지 않습니다.
    • Google Cloud는 이전의 활성(현재는 백업) 프록시 전용 서브넷의 프록시에서 기존 연결을 드레이닝하기 시작합니다.

    VPC 네트워크의 각 리전별로 한 개의 활성 프록시 전용 서브넷과 한 개의 백업 프록시 전용 서브넷을 만들 수 있습니다.

    Console

    1. 동일한 리전에 백업 프록시 전용 서브넷을 만들고 요구사항에 맞는 기본 IP 주소 범위를 지정합니다.

      1. Cloud Console에서 VPC 네트워크 페이지로 이동합니다.
        VPC 네트워크 페이지로 이동
      2. 프록시 전용 서브넷을 추가할 공유 VPC 네트워크의 이름을 클릭합니다.
      3. 서브넷 추가를 클릭합니다.
      4. 이름을 입력합니다.
      5. 리전을 선택합니다.
      6. 용도리전별 관리형 프록시로 설정합니다.
      7. 역할백업을 선택합니다.
      8. IP 주소 범위를 입력합니다.
      9. 추가를 클릭합니다.
    2. 백업 프록시 전용 서브넷의 기본 IP 주소 범위를 포함하도록 백엔드 VM 또는 엔드포인트에 적용되는 인그레스 허용 방화벽 규칙을 만들거나 수정합니다.

    3. 백업 프록시 전용 서브넷을 활성 역할로 승격합니다. 또한 이 작업은 이전의 활성 프록시 전용 서브넷을 백업 역할로 강등합니다.

      1. Cloud Console에서 VPC 네트워크 페이지로 이동합니다.
        VPC 네트워크 페이지로 이동
      2. 수정하려는 공유 VPC 네트워크의 이름을 클릭합니다.
      3. 부하 분산을 위해 예약된 프록시 전용 서브넷에서 이전 단계에서 만든 백업 서브넷을 찾습니다.
      4. Activate를 클릭합니다.
      5. 드레이닝 제한 시간(선택사항)을 지정합니다.
      6. 서브넷 활성화를 클릭합니다.
    4. 연결 드레이닝 제한 시간 초과 후 또는 백엔드 VM 또는 엔드포인트에 대한 연결이 이전의 활성(현재는 백업) 프록시 전용 서브넷의 프록시에서 시작되지 않았다고 확신하는 경우 다음을 수행할 수 있습니다.

      • 백엔드 VM 또는 엔드포인트에 적용되는 인그레스 허용 방화벽 규칙을 수정하여 이전의 활성(현재는 백업) 프록시 전용 서브넷의 기본 IP 주소 범위가 포함되지 않도록 합니다.
      • 이전의 활성(현재는 백업) 프록시 전용 서브넷을 삭제하여 기본 IP 주소 범위에 사용된 서브넷의 IP 주소를 해제합니다.

    gcloud

    1. gcloud compute networks subnets create 명령어와 --role=BACKUP 플래그를 사용하여 동일한 리전에 백업 프록시 전용 서브넷을 만들고 필요에 맞는 기본 IP 주소 범위를 지정합니다.

      gcloud beta compute networks subnets create BACKUP_PROXY_SUBNET \
         --purpose=REGIONAL_MANAGED_PROXY \
         --role=BACKUP \
         --region=REGION \
         --network=VPC_NETWORK_NAME \
         --range=CIDR_RANGE
      

    2. 백업 프록시 전용 서브넷의 기본 IP 주소 범위를 포함하도록 백엔드 VM 또는 엔드포인트에 적용되는 인그레스 허용 방화벽 규칙을 만들거나 수정합니다.

    3. 다음 gcloud 명령어는 백업 프록시 전용 서브넷을 활성 역할로 승격하고 이전의 활성 프록시 전용 서브넷을 백업 역할로 강등합니다.

      gcloud beta compute networks subnets update BACKUP_PROXY_SUBNET \
         --region=REGION \
         --role=ACTIVE \
         --drain-timeout=CONNECTION_DRAINING_TIMEOUT
      

      다음을 바꿉니다.

      • BACKUP_PROXY_SUBNET: 새로 생성된 백업 프록시 전용 서브넷의 이름입니다.
      • REGION: 새로 생성된 백업 프록시 전용 서브넷의 리전입니다.
      • CONNECTION_DRAINING_TIMEOUT: Google Cloud에서 이전의 활성 프록시 전용 서브넷의 프록시에서 다른 곳으로 기존 연결을 마이그레이션하는 데 사용하는 시간(초)입니다.
    4. 연결 드레이닝 제한 시간 초과 후 또는 백엔드 VM 또는 엔드포인트에 대한 연결이 이전의 활성(현재는 백업) 프록시 전용 서브넷의 프록시에서 시작되지 않았다고 확신하는 경우 다음을 수행할 수 있습니다.

      • 백엔드 VM 또는 엔드포인트에 적용되는 인그레스 허용 방화벽 규칙을 수정하여 이전의 활성(현재는 백업) 프록시 전용 서브넷의 기본 IP 주소 범위가 포함되지 않도록 합니다.
      • 이전의 활성(현재는 백업) 프록시 전용 서브넷을 삭제하여 기본 IP 주소 범위에 사용된 서브넷의 IP 주소를 해제합니다.

    구성 예시

    이 섹션에는 리전의 프록시 전용 서브넷을 수정하는 데 필요한 단계를 보여주는 샘플 구성이 포함되어 있습니다.

    1. 특정 리전만 전담하는 백업 프록시 전용 서브넷을 만듭니다.

      gcloud beta compute networks subnets create new-l7xlb-backend-subnet-us-west1 \
         --purpose=REGIONAL_MANAGED_PROXY \
         --role=BACKUP \
         --region=us-west1 \
         --network=default \
         --range=10.130.0.0/23
      

    2. 백엔드 방화벽을 업데이트하여 새 서브넷의 연결을 수락합니다.

      gcloud compute firewall-rules update l7-ilb-firewall \
         --source-ranges 10.129.0.0/23,10.130.0.0/23
      
    3. 새 서브넷을 업데이트하여 리전의 ACTIVE 프록시 전용 서브넷으로 설정하고 이전 서브넷이 드레이닝될 때까지 기다립니다.

      gcloud beta compute networks subnets update new-l7xlb-ip-range-us-west1 \
         --drain-timeout 1h --role ACTIVE
      

      IP 주소 범위를 즉시 드레이닝하려면 --drain-timeout0s로 설정합니다. 그러면 드레이닝 중인 서브넷에서 할당된 주소가 있는 프록시에 대한 모든 연결이 즉시 종료됩니다.

    4. list 또는 describe 명령어를 사용하여 드레이닝 상태를 모니터링합니다. 서브넷이 드레이닝될 때 서브넷의 상태는 DRAINING입니다.

      gcloud compute networks subnets list
      

      드레이닝이 완료될 때까지 기다립니다. 이전 프록시 전용 서브넷이 드레이닝될 때 서브넷의 상태는 READY입니다.

    5. 새 서브넷의 연결만 허용하도록 백엔드 방화벽 규칙을 업데이트합니다.

      gcloud compute firewall-rules update l7-ilb-firewall \
         --source-ranges 10.130.0.0/23
      
    6. 이전 서브넷을 삭제합니다.

      gcloud beta compute networks subnets delete l7xlb-ip-range-us-west1 \
         --region us-west1
      

    프록시 전용 서브넷 삭제

    프록시 전용 서브넷을 삭제하면 기본 IP 주소 범위가 해제되므로 범위를 다른 용도로 사용할 수 있습니다. Google Cloud는 프록시 전용 서브넷 삭제 요청을 받으면 다음 규칙을 적용합니다.

    • 동일한 리전 및 VPC 네트워크에 한 개 이상의 리전 부하 분산기가 있으면 활성 프록시 전용 서브넷을 삭제할 수 없습니다.

    • 동일한 리전과 VPC 네트워크에 백업 프록시 전용 서브넷이 있으면 활성 프록시 전용 서브넷을 삭제할 수 없습니다.

      백업을 삭제하기 전에 활성 프록시 전용 서브넷을 삭제하려고 하면 '잘못된 리소스 사용량: 백업 서브네트워크가 있으므로 활성 서브네트워크를 삭제할 수 없습니다.'라는 오류 메시지가 표시됩니다.

    사실상 이러한 규칙에는 다음과 같은 효과가 있습니다.

    • 지정된 리전 및 VPC 네트워크에 리전 부하 분산기가 정의되어 있지 않으면 해당 리전의 프록시 전용 서브넷을 삭제할 수 있습니다. 백업 프록시 전용 서브넷이 있으면 먼저 삭제한 다음 활성 프록시 전용 서브넷을 삭제해야 합니다.

    • 지정된 리전 및 VPC 네트워크에 1개 이상의 리전 부하 분산기가 정의되어 있으면 활성 프록시 전용 서브넷을 삭제할 수 없습니다. 그러나 백업 프록시 전용 서브넷을 활성 역할로 승격할 수 있으며, 이때 이전의 활성 프록시 전용 서브넷은 백업 역할로 자동 강등됩니다. 연결이 드레이닝된 후 백업(이전의 활성) 프록시 전용 서브넷을 삭제할 수 있습니다.

    자세한 내용은 VPC 네트워크 문서에서 서브넷 삭제를 참조하세요.

    제한사항

    다음 제약조건은 프록시 전용 서브넷에만 적용됩니다.

    • 동일한 네트워크 및 리전에 INTERNAL_HTTPS_LOAD_BALANCERREGIONAL_MANAGED_PROXY 서브넷이 모두 있을 수 없으며 마찬가지로 2개의 REGIONAL_MANAGED_PROXY 프록시 또는 2개의 INTERNAL_HTTPS_LOAD_BALANCER 프록시를 사용할 수 없습니다.

    • VPC 네트워크의 각 리전별로 1개의 활성 프록시 전용 서브넷과 1개의 프록시 전용 서브넷을 만들 수 있습니다.

    • 해당 리전 및 네트워크에 활성 프록시 전용 서브넷을 이미 만든 경우가 아니라면 백업 프록시 전용 서브넷을 만들 수 없습니다.

    • 서브넷을 업데이트하여 프록시 전용 서브넷 역할을 백업에서 활성으로 변경할 수 있습니다. 그러면 Google Cloud가 이전의 활성 프록시 전용 서브넷을 백업으로 자동 변경합니다. 프록시 전용 서브넷의 역할을 업데이트하여 백업으로 명시적으로 설정할 수 없습니다.

    • 프록시 전용 서브넷의 연결을 드레이닝하는 동안(--drain-timeout)에는 프록시 전용 서브넷의 역할을 백업에서 활성으로 변경할 수 없습니다.

    • 프록시 전용 서브넷에 IP 주소가 부족해도 Google Cloud에서 경고를 표시하지 않습니다.

    • 프록시 전용 서브넷은 VPC 흐름 로그를 지원하지 않습니다.

    다음 단계