Google Cloud 전역 외부 프록시 네트워크 부하 분산기를 사용하면 전 세계 모든 사용자에게 단일 IP 주소를 사용할 수 있습니다. 전역 외부 프록시 네트워크 부하 분산기는 사용자와 가장 가까운 백엔드 인스턴스로 트래픽을 자동으로 라우팅합니다.
이 페이지에는 대상 TCP 프록시 및 VM 인스턴스 그룹 백엔드로 전역 외부 프록시 네트워크 부하 분산기를 설정하는 방법에 대한 안내가 포함되어 있습니다. 시작하기 전에 외부 프록시 네트워크 부하 분산기 개요에서 이러한 부하 분산기의 작동 방식에 대한 자세한 내용을 읽어보세요.
설정 개요
이 예시에서는 리전 A 및 리전 B의 두 리전에 존재하는 서비스에 외부 프록시 네트워크 부하 분산기를 설정하는 방법을 보여줍니다.
이 예시에서 서비스는 포트 110
에서 응답하도록 구성된 Apache 서버 세트입니다. 대부분의 브라우저는 포트 110
을 허용하지 않으므로 테스트 섹션에서는 curl
을 사용합니다.
이 예시에서는 다음 항목을 구성합니다.
- 두 리전 간에 분산된 4개의 인스턴스
- 인스턴스를 포함하는 인스턴스 그룹
- 인스턴스 상태 검증을 위한 상태 점검
- 인스턴스를 모니터링하고 구성된 사용량 초과를 방지하는 백엔드 서비스
- 대상 TCP 프록시
- 외부 정적 IPv4 주소 및 사용자 트래픽을 프록시로 전송하는 전달 규칙
- 외부 정적 IPv6 주소 및 사용자 트래픽을 프록시로 전송하는 전달 규칙
- 부하 분산기와 상태 점검기의 트래픽이 인스턴스에 도달하도록 허용하는 방화벽 규칙
부하 분산기가 구성된 후 구성을 테스트합니다.
권한
이 가이드를 진행하려면 프로젝트에서 인스턴스를 만들고 네트워크를 수정할 수 있어야 합니다. 이렇게 하려면 프로젝트 소유자 또는 편집자이거나, 다음 Compute Engine IAM 역할을 모두 보유해야 합니다.
작업 | 필요한 역할 |
---|---|
네트워크, 서브넷, 부하 분산기 구성요소 만들기 | 네트워크 관리자 |
방화벽 규칙 추가 및 삭제 | 보안 관리자 |
인스턴스 만들기 | Compute 인스턴스 관리자 |
자세한 내용은 다음 가이드를 참조하세요.
네트워크 및 서브넷 구성
예시 네트워크 및 서브넷을 만들려면 다음 단계를 따르세요.
콘솔
IPv4 및 IPv6 트래픽을 모두 지원하려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.
VPC 네트워크 만들기를 클릭합니다.
네트워크의 이름을 입력합니다.
선택사항: 이 네트워크에서 서브넷에 내부 IPv6 주소 범위를 구성하려면 다음 단계를 완료합니다.
- VPC 네트워크 ULA 내부 IPv6 범위에서 사용 설정됨을 선택합니다.
내부 IPv6 범위 할당에 대해 자동 또는 수동을 선택합니다.
수동을 선택한 경우
fd20::/20
범위 내에서/48
범위를 입력합니다. 범위가 사용 중인 경우 다른 범위를 제공하라는 메시지가 표시됩니다.
서브넷 생성 모드에서 커스텀을 선택합니다.
새 서브넷 섹션에서 다음 필드를 구성합니다.
- 이름 필드에 서브넷 이름을 입력합니다.
- 리전 필드에서 리전을 선택합니다.
- IP 스택 유형에 IPv4 및 IPv6(이중 스택)을 선택합니다.
IP 주소 범위 필드에 IP 주소 범위를 입력합니다. 이 범위는 서브넷의 기본 IPv4 범위입니다.
서브넷의 IPv4 주소 범위를 구성할 수 있지만 서브넷의 IPv6 주소 범위를 선택할 수는 없습니다. Google은 고정된 크기(
/64
)의 IPv6 CIDR 블록을 제공합니다.IPv6 액세스 유형에서 외부를 선택합니다.
완료를 클릭합니다.
다른 리전에 서브넷을 추가하려면 서브넷 추가를 클릭하고 이전 단계를 반복합니다.
만들기를 클릭합니다.
IPv4 트래픽만 지원하려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.
VPC 네트워크 만들기를 클릭합니다.
이름 필드에 네트워크의 이름을 입력합니다.
서브넷 생성 모드에서 커스텀을 선택합니다.
새 서브넷 섹션에서 다음을 구성합니다.
- 이름 필드에 서브넷 이름을 입력합니다.
- 리전 필드에서 리전을 선택합니다.
- IP 스택 유형에 IPv4(단일 스택)를 선택합니다.
- IP 주소 범위 필드에 서브넷의 기본 IPv4 범위를 입력합니다.
완료를 클릭합니다.
다른 리전에 서브넷을 추가하려면 서브넷 추가를 클릭하고 이전 단계를 반복합니다.
만들기를 클릭합니다.
gcloud
커스텀 모드 VPC 네트워크를 만듭니다.
gcloud compute networks update NETWORK \ [ --enable-ula-internal-ipv6 [ --internal-ipv6-range=ULA_IPV6_RANGE ]] \ --switch-to-custom-subnet-mode
네트워크 내에서 백엔드용 서브넷을 만듭니다.
IPv4 및 IPv6 트래픽의 경우 다음 명령어를 사용하여 서브넷을 업데이트합니다.
gcloud compute networks subnets update SUBNET \ --stack-type=IPV4_IPv6 \ --ipv6-access-type=EXTERNAL \ --network=NETWORK \ --region=REGION_A
gcloud compute networks subnets update SUBNET_B \ --stack-type=IPV4_IPv6 \ --ipv6-access-type=EXTERNAL \ --network=NETWORK \ --region=REGION_B
IPv4 트래픽 전용의 경우 다음 명령어를 사용합니다.
gcloud compute networks subnets update SUBNET \ --network=NETWORK \ --stack-type=IPV4_ONLY \ --range=10.1.2.0/24 \ --region=REGION_A
gcloud compute networks subnets update SUBNET_B \ --stack-type=IPV4_ONLY \ --ipv6-access-type=EXTERNAL \ --network=NETWORK \ --region=REGION_B
다음을 바꿉니다.
NETWORK
: VPC 네트워크의 이름입니다.ULA_IPV6_RANGE
: 내부 IPv6 서브넷 범위에 대해 Google에서 사용하는fd20::/20
범위 내의/48
프리픽스입니다.--internal-ipv6-range
플래그를 사용하지 않으면 Google은 네트워크의/48
프리픽스를 선택합니다.SUBNET
: 서브넷의 이름입니다.
REGION_A
또는REGION_B
: 리전의 이름입니다.
인스턴스 그룹 백엔드 구성
이 섹션에서는 간단한 인스턴스 그룹을 만들고 여기에 인스턴스를 추가한 후 해당 인스턴스를 상태 점검을 통해 백엔드 서비스에 추가하는 방법을 보여줍니다. 일반적으로 프로덕션 시스템에서는 인스턴스 템플릿을 기반으로 관리형 인스턴스 그룹을 사용하지만, 초기 테스트에서는 이렇게 구성하는 방식이 더 빠릅니다.
인스턴스 구성
테스트를 위해 4개의 인스턴스(2개의 인스턴스 그룹에 각각 2개씩)에 Apache를 설치합니다. 일반적으로 외부 프록시 네트워크 부하 분산기는 HTTP 트래픽에 사용되지 않지만 Apache 소프트웨어는 일반적으로 테스트용으로 사용됩니다.
이 예시에서 인스턴스는 tcp-lb
태그로 생성됩니다. 이 태그는 나중에 방화벽 규칙에 의해 사용됩니다.
콘솔
인스턴스 만들기
Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.
인스턴스 만들기를 클릭합니다.
이름을
vm-a1
로 설정합니다.리전을
REGION_A
로 설정합니다.영역을
ZONE_A
로 설정합니다.고급 옵션을 클릭합니다.
네트워킹을 클릭하고 다음 필드를 구성합니다.
- 네트워크 태그에
tcp-lb
,allow-health-check-ipv6
을 입력합니다.
IPv4 및 IPv6 트래픽을 모두 지원하려면 다음 단계를 따르세요.
- 네트워크 인터페이스 섹션에서
- 네트워크:
NETWORK
- 서브넷:
SUBNET
- IP 스택 유형: IPv4 및 IPv6(이중 스택)
수정을 클릭하고 다음과 같이 변경합니다.
- 네트워크:
- 완료를 클릭합니다.
- 네트워크 태그에
관리를 클릭합니다. 시작 스크립트 필드에 다음 스크립트를 입력합니다.
sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>vm-a1</h1></body></html>' | sudo tee /var/www/html/index.html
만들기를 클릭합니다.
동일한 설정으로
vm-a2
를 만듭니다. 단, 시작 스크립트 필드의 다음 스크립트는 제외합니다.sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>vm-a2</h1></body></html>' | sudo tee /var/www/html/index.html
동일한 설정으로
vm-b1
을 만듭니다. 단, 리전은REGION_B
로 영역은ZONE_B
로 설정합니다. 시작 스크립트 필드에 다음 스크립트를 입력합니다.sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>vm-b1</h1></body></html>' | sudo tee /var/www/html/index.html
동일한 설정으로
vm-b2
을 만듭니다. 단, 리전은REGION_B
로 영역은ZONE_B
로 설정합니다. 시작 스크립트 필드에 다음 스크립트를 입력합니다.sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>vm-b2</h1></body></html>' | sudo tee /var/www/html/index.html
gcloud
영역
ZONE_A
에vm-a1
만들기gcloud compute instances create vm-a1 \ --image-family debian-12 \ --image-project debian-cloud \ --tags tcp-lb \ --zone ZONE_A \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>vm-a1</h1></body></html>' | tee /var/www/html/index.html EOF"
영역
ZONE_A
에vm-a2
만들기gcloud compute instances create vm-a2 \ --image-family debian-12 \ --image-project debian-cloud \ --tags tcp-lb \ --zone ZONE_A \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>vm-a2</h1></body></html>' | tee /var/www/html/index.html EOF"
영역
ZONE_B
에vm-b1
만들기gcloud compute instances create vm-b1 \ --image-family debian-12 \ --image-project debian-cloud \ --tags tcp-lb \ --zone ZONE_B \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>vm-b1</h1></body></html>' | tee /var/www/html/index.html EOF"
영역
ZONE_B
에vm-b2
만들기gcloud compute instances create vm-b2 \ --image-family debian-12 \ --image-project debian-cloud \ --tags tcp-lb \ --zone ZONE_B \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>vm-b2</h1></body></html>' | tee /var/www/html/index.html EOF"
인스턴스 그룹 생성
이 섹션에서는 각 영역에 인스턴스 그룹을 만들고 인스턴스를 추가합니다.
콘솔
Google Cloud 콘솔에서 인스턴스 그룹 페이지로 이동합니다.
인스턴스 그룹 만들기를 클릭합니다.
새 비관리형 인스턴스 그룹을 클릭합니다.
이름을
instance-group-a
로 설정합니다.영역을
ZONE_A
로 설정합니다.포트 매핑에서 포트 추가를 클릭합니다. 부하 분산기는 이름이 지정된 포트를 통해 인스턴스 그룹으로 트래픽을 전송합니다. 이름이 지정된 포트를 만들어 수신 트래픽을 특정 포트 번호로 매핑합니다.
- 포트 이름을
tcp110
으로 설정합니다. - 포트 번호를
110
으로 설정합니다.
- 포트 이름을
VM 인스턴스에서
vm-a1
및vm-a2
를 선택합니다.다른 설정은 그대로 둡니다.
만들기를 클릭합니다.
단계를 반복하되 다음 값을 설정합니다.
- 이름:
instance-group-b
- 리전:
REGION_B
- 영역:
ZONE_B
- 포트 이름:
tcp110
- 포트 번호:
110
- 인스턴스: vm-b1 및 vm-b2.
- 이름:
gcloud
instance-group-a
인스턴스 그룹을 만듭니다.gcloud compute instance-groups unmanaged create instance-group-a \ --zone ZONE_A
인스턴스 그룹에 대해 이름이 지정된 포트를 만듭니다.
gcloud compute instance-groups set-named-ports instance-group-a \ --named-ports tcp110:110 \ --zone ZONE_A
vm-a1
및vm-a2
를instance-group-a
에 추가합니다.gcloud compute instance-groups unmanaged add-instances instance-group-a \ --instances vm-a1,vm-a2 \ --zone ZONE_A
us-ig2
인스턴스 그룹을 만듭니다.gcloud compute instance-groups unmanaged create instance-group-b \ --zone ZONE_B
인스턴스 그룹에 대해 이름이 지정된 포트를 만듭니다.
gcloud compute instance-groups set-named-ports instance-group-b \ --named-ports tcp110:110 \ --zone ZONE_B
instance-group-b에
vm-b1
및vm-b2
를 추가합니다.gcloud compute instance-groups unmanaged add-instances instance-group-b \ --instances vm-b1,vm-b2 \ --zone ZONE_B
이제 리전당 하나의 인스턴스 그룹이 생성됩니다. 각 인스턴스 그룹에는 2개의 VM 인스턴스가 있습니다.
외부 프록시 네트워크 부하 분산기에 대한 방화벽 규칙 만들기
부하 분산기 및 상태 점검기에서 인스턴스로 전송되는 트래픽을 허용하도록 방화벽을 구성합니다. 이 경우 TCP 포트 110이 열립니다. 상태 점검은 동일한 포트를 사용합니다. 부하 분산기와 인스턴스 간의 트래픽이 IPv4를 사용하므로 IPv4 범위만 열려있어야 합니다.
콘솔
Google Cloud 콘솔에서 방화벽 정책 페이지로 이동합니다.
방화벽 규칙 만들기를 클릭합니다.
이름 필드에
allow-tcp-lb-and-health
를 입력합니다.네트워크를 선택합니다.
대상에서 지정된 대상 태그를 선택합니다.
대상 태그를
tcp-lb
로 설정합니다.소스 필터를 IPv4 범위로 설정합니다.
소스 IPv4 범위를
130.211.0.0/22
,35.191.0.0/16
으로 설정합니다.프로토콜 및 포트에서 지정된 프로토콜 및 포트를
tcp:110
으로 설정합니다.만들기를 클릭합니다.
gcloud
gcloud compute firewall-rules create allow-tcp-lb-and-health \ --source-ranges 130.211.0.0/22,35.191.0.0/16 \ --target-tags tcp-lb \ --allow tcp:110
IPv6 상태 점검 방화벽 규칙 만들기
부하 분산 중인 인스턴스에 적용할 수 있고 Google Cloud 상태 점검 시스템(2600:2d00:1:b029::/64
)의 트래픽을 허용하는 인그레스 규칙이 있는지 확인합니다. 이 예시에서는 allow-health-check-ipv6
대상 태그를 사용하여 방화벽 규칙이 적용되는 VM 인스턴스를 식별합니다.
이 방화벽 규칙이 없으면 기본 거부 인그레스 규칙은 백엔드 인스턴스로 들어오는 IPv6 트래픽을 차단합니다.
콘솔
Google Cloud 콘솔에서 방화벽 정책 페이지로 이동합니다.
IPv6 서브넷 트래픽을 허용하려면 방화벽 규칙 만들기를 다시 클릭하고 다음 정보를 입력합니다.
- 이름:
fw-allow-lb-access-ipv6
- 네트워크를 선택합니다.
- 우선순위:
1000
- 트래픽 방향: 인그레스
- 대상: 지정된 대상 태그
- 대상 태그:
allow-health-check-ipv6
- 소스 필터: IPv6 범위
- 소스 IPv6 범위:
2600:2d00:1:b029::/64
,2600:2d00:1:1::/64
- 프로토콜 및 포트: 모두 허용
- 이름:
만들기를 클릭합니다.
gcloud
fw-allow-lb-access-ipv6
방화벽 규칙을 만들어 서브넷과의 통신을 허용합니다.
gcloud compute firewall-rules create fw-allow-lb-access-ipv6 \ --network=NETWORK \ --action=allow \ --direction=ingress \ --target-tags=allow-health-check-ipv6 \ --source-ranges=2600:2d00:1:b029::/64,2600:2d00:1:1::/64 \ --rules=all
부하 분산기 구성
콘솔
구성 시작
Google Cloud 콘솔에서 부하 분산 페이지로 이동합니다.
- 부하 분산기 만들기를 클릭합니다.
- 부하 분산기 유형에 네트워크 부하 분산기(TCP/UDP/SSL)를 선택하고 다음을 클릭합니다.
- 프록시 또는 패스 스루에 프록시 부하 분산기를 선택하고 다음을 클릭합니다.
- 공개 또는 내부에 공개(외부)를 선택하고 다음을 클릭합니다.
- 전역 또는 단일 리전 배포에서 전역 워크로드에 적합을 선택하고 다음을 클릭합니다.
- 부하 분산기 생성에서 전역 외부 프록시 네트워크 부하 분산기를 선택하고 다음을 클릭합니다.
- 구성을 클릭합니다.
기본 구성
이름을 my-tcp-lb
로 설정합니다.
백엔드 구성
- 백엔드 구성을 클릭합니다.
- 백엔드 유형에서 인스턴스 그룹을 선택합니다.
- 프로토콜에서 TCP를 선택합니다.
- IP 주소 선택 정책 목록에서 IPv6 우선 사용을 선택합니다.
- 첫 번째 백엔드 구성:
- 새 백엔드에서 인스턴스 그룹
instance-group-a
을 선택합니다. - 나머지 기본 값을 유지합니다.
- 새 백엔드에서 인스턴스 그룹
- 두 번째 백엔드 구성:
- IP 스택 유형에
IPv4 and IPv6 (dual-stack)
을 선택합니다. - 백엔드 추가를 클릭합니다.
- 인스턴스 그룹
instance-group-b
를 선택합니다. - 포트 번호에서
80
을 삭제하고110
을 추가합니다.
IPv4 및 IPv6 트래픽을 모두 지원하려면 다음 안내를 따르세요.
- IP 스택 유형에
- 상태 점검 구성:
- 상태 점검에서 상태 점검 만들기를 선택합니다.
- 상태 점검 이름을
my-tcp-health-check
로 설정합니다. - 프로토콜에서 TCP를 선택합니다.
- 포트를
110
으로 설정합니다. - 나머지 기본 값을 유지합니다.
- 저장 후 계속을 클릭합니다.
- Google Cloud 콘솔에서 백엔드 구성 옆에 체크표시가 있는지 확인합니다. 없으면 모든 단계를 완료했는지 다시 확인합니다.
프런트엔드 구성
- 프런트엔드 구성을 클릭합니다.
- 첫 번째 전달 규칙 추가:
-
my-tcp-lb-forwarding-rule
의 이름을 입력합니다. - 프로토콜에서 TCP를 선택합니다.
- IP 주소에서 IP 주소 만들기를 선택합니다.
-
tcp-lb-static-ip
의 이름을 입력합니다. - 예약을 클릭합니다.
-
- 포트를
110
으로 설정합니다. - 이 예시에서는 프록시 프로토콜이 Apache HTTP 서버 소프트웨어에서 작동하지 않으므로 프록시 프로토콜을 사용 설정하지 마세요. 자세한 내용은 프록시 프로토콜을 참조하세요.
- 완료를 클릭합니다.
-
Google Cloud 콘솔에서 프런트엔드 구성 옆에 체크표시가 있는지 확인합니다. 없으면 이전 단계를 모두 완료했는지 다시 확인합니다.
검토 및 완료
- 검토 및 완료를 클릭합니다.
- 부하 분산기 구성 설정을 검토합니다.
- 선택사항: 부하 분산기를 만드는 데 사용되는 REST API 요청을 보려면 상응하는 코드를 클릭합니다.
- 만들기를 클릭합니다.
gcloud
- 상태 점검을 만듭니다.
gcloud compute health-checks create tcp my-tcp-health-check --port 110
- 백엔드 서비스를 만듭니다.
gcloud beta compute backend-services create my-tcp-lb \ --load-balancing-scheme EXTERNAL_MANAGED \ --global-health-checks \ --global \ --protocol TCP \ --ip-address-selection-policy=PREFER_IPV6 \ --health-checks my-tcp-health-check \ --timeout 5m \ --port-name tcp110
또는 부하 분산기에서
--protocol SSL
이 포함된 인스턴스로 암호화된 통신을 구성할 수 있습니다. 백엔드 서비스에 인스턴스 그룹을 추가합니다.
gcloud beta compute backend-services add-backend my-tcp-lb \ --global \ --instance-group instance-group-a \ --instance-group-zone ZONE_A \ --balancing-mode UTILIZATION \ --max-utilization 0.8
gcloud beta compute backend-services add-backend my-tcp-lb \ --global \ --instance-group instance-group-b \ --instance-group-zone ZONE_B \ --balancing-mode UTILIZATION \ --max-utilization 0.8
- 대상 TCP 프록시를 구성합니다. 프록시 헤더를 사용 설정하려면
NONE
대신PROXY_V1
로 설정합니다.gcloud beta compute target-tcp-proxies create my-tcp-lb-target-proxy \ --backend-service my-tcp-lb \ --proxy-header NONE
- 전역 고정 IPv4 및 IPv6 주소를 예약합니다.
고객이 이 IP 주소를 사용하여 부하 분산된 서비스에 도달할 수 있습니다.
gcloud compute addresses create tcp-lb-static-ipv4 \ --ip-version=IPV4 \ --global
gcloud compute addresses create tcp-lb-static-ipv6 \ --ip-version=IPV6 \ --global
- 주소 2개에 전역 전달 규칙을 구성합니다.
gcloud beta compute forwarding-rules create my-tcp-lb-ipv4-forwarding-rule \ --load-balancing-scheme EXTERNAL_MANAGED \ --global \ --target-tcp-proxy my-tcp-lb-target-proxy \ --address tcp-lb-static-ipv4 \ --ports 110
부하 분산기 테스트
부하 분산기의 IP 주소를 가져옵니다.
IPv4 주소를 가져오려면 다음 명령어를 실행합니다.
gcloud compute addresses describe tcp-lb-static-ipv4
IPv6 주소를 가져오려면 다음 명령어를 실행합니다.
gcloud compute addresses describe tcp-lb-static-ipv6
다음 명령어를 실행하여 트래픽을 부하 분산기로 보냅니다.
LB_IP_ADDRESS
를 부하 분산기의 IPv4 또는 IPv6 주소로 바꿉니다.curl -m1 LB_IP_ADDRESS:110
예를 들어 할당된 IPv6 주소가
[2001:db8:1:1:1:1:1:1/96]:110
이면 명령어는 다음과 같습니다.curl -m1 http://[2001:db8:1:1:1:1:1:1]:110
부하 분산기에 도달할 수 없는 경우 설정 문제 해결에 설명된 단계를 시도하세요.
추가 구성 옵션
이 섹션에서는 대체 및 추가 구성 옵션을 제공하는 구성 예시를 살펴봅니다. 모든 태스크는 선택사항입니다. 원하는 순서대로 수행할 수 있습니다.
클라이언트 연결 정보를 유지하기 위한 프록시 프로토콜
프록시 네트워크 부하 분산기는 클라이언트의 TCP 연결을 종료하고 인스턴스에 새 연결을 만듭니다. 기본적으로 원래 클라이언트 IP와 포트 정보는 유지되지 않습니다.
원래 연결 정보를 유지하고 인스턴스로 보내려면 PROXY 프로토콜 버전 1을 사용 설정합니다. 이 프로토콜은 요청의 일부로 소스 IP 주소, 대상 IP 주소, 포트 번호가 포함된 추가 헤더를 인스턴스에 보냅니다.
프록시 네트워크 부하 분산기의 백엔드 인스턴스에서 PROXY 프로토콜 헤더를 지원하는 서버를 실행하고 있는지 확인합니다. 서버가 PROXY 프로토콜 헤더를 지원하도록 구성되지 않았으면 백엔드 인스턴스에서 빈 응답을 반환합니다.
사용자 트래픽에 PROXY 프로토콜을 설정한 경우 상태 점검에도 이 프로토콜을 설정할 수 있습니다. 동일한 포트에서 상태를 점검하고 콘텐츠를 제공하는 경우 상태 점검의 --proxy-header
를 부하 분산기 설정에 맞게 설정합니다.
일반적으로 PROXY 프로토콜 헤더는 다음 형식의 사용자가 읽을 수 있는 한 줄 텍스트입니다.
PROXY TCP4 <client IP> <load balancing IP> <source port> <dest port>\r\n
다음 예시에서는 PROXY 프로토콜을 보여줍니다.
PROXY TCP4 192.0.2.1 198.51.100.1 15221 110\r\n
앞의 예시에서 클라이언트 IP는 192.0.2.1
, 부하 분산 IP는 198.51.100.1
, 클라이언트 포트는 15221
, 목적지 포트는 110
입니다.
클라이언트 IP를 모르는 경우 부하 분산기는 다음 형식으로 PROXY 프로토콜 헤더를 생성합니다.
PROXY UNKNOWN\r\n
대상 프록시의 PROXY 프로토콜 헤더 업데이트
이 페이지의 부하 분산기 설정 예시에서는 프록시 네트워크 부하 분산기를 만드는 동안 PROXY 프로토콜 헤더를 사용 설정하는 방법을 보여줍니다. 기존 대상 프록시의 PROXY 프로토콜 헤더를 변경하려면 다음 단계를 수행합니다.
콘솔
Google Cloud 콘솔에서 부하 분산 페이지로 이동합니다.
- 부하 분산기의 편집을 클릭합니다.
- 프런트엔드 구성을 클릭합니다.
- 프록시 프로토콜 필드 값을 켜기로 변경합니다.
- 업데이트를 클릭하여 변경사항을 저장합니다.
gcloud
다음 명령어에서 --proxy-header
필드를 수정하고 요구사항에 따라 NONE
또는 PROXY_V1
로 설정합니다.
gcloud compute target-tcp-proxies update TARGET_PROXY_NAME \ --proxy-header=[NONE | PROXY_V1]
세션 어피니티 구성
구성 예시는 세션 어피니티 없이 백엔드 서비스를 만듭니다.
이 절차에서는 백엔드 서비스가 클라이언트 IP 어피니티 또는 생성된 쿠키 어피니티를 사용하도록 예시 부하 분산기의 백엔드 서비스를 업데이트하는 방법을 보여줍니다.
클라이언트 IP 어피니티가 사용 설정되면 부하 분산기는 클라이언트의 IP 주소 및 부하 분산기의 IP 주소(외부 전달 규칙의 외부 IP 주소)에서 생성된 해시를 기반으로 특정 클라이언트의 요청을 동일한 백엔드 VM에 전달합니다.
Console
클라이언트 IP 세션 어피니티를 사용 설정하려면 다음 안내를 따르세요.
Google Cloud 콘솔에서 부하 분산 페이지로 이동합니다.
백엔드를 클릭합니다.
my-tcp-lb(이 예시에서 만든 백엔드 서비스 이름)를 클릭하고 수정을 클릭합니다.
백엔드 서비스 세부정보 페이지에서 고급 구성을 클릭합니다.
세션 어피니티의 메뉴에서 클라이언트 IP를 선택합니다.
업데이트를 클릭합니다.
gcloud
다음 Google Cloud CLI 명령어를 사용해서 my-tcp-lb
백엔드 서비스를 업데이트하고 클라이언트 IP 세션 어피니티를 지정합니다.
gcloud compute backend-services update my-tcp-lb \ --global \ --session-affinity=CLIENT_IP
API
클라이언트 IP 세션 어피니티를 설정하려면 backendServices/patch
메서드에 PATCH
요청을 실행합니다.
PATCH https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/us-west1/backendServices/my-tcp-lb
{
"sessionAffinity": "CLIENT_IP"
}
연결 드레이닝 사용 설정
백엔드 서비스에서 연결 드레이닝을 사용 설정하면 트래픽을 제공하는 인스턴스가 종료되거나 수동으로 삭제되거나 자동 확장 처리를 통해 삭제되는 경우 사용자에 대한 방해를 최소화할 수 있습니다. 연결 드레이닝에 대한 자세한 내용은 연결 드레이닝 사용 설정 문서를 참조하세요.
다음 단계
- 프록시 네트워크 부하 분산기를 IPv6로 변환
- 외부 프록시 네트워크 부하 분산기 개요
- 프록시 네트워크 부하 분산기 로깅 및 모니터링
- 이중 스택 백엔드로 마이그레이션
- 부하 분산 설정 삭제