이 페이지에서는 전역 외부 애플리케이션 부하 분산기를 배포하여 온프레미스 또는 다른 퍼블릭 클라우드에 있고 하이브리드 연결을 통해 연결할 수 있는 네트워크 엔드포인트에 트래픽을 부하 분산하는 방법을 보여줍니다.
이 작업을 완료한 후에는 선택적으로 추가적인 서비스(예: Cloud CDN 및 Google Cloud Armor) 및 고급 트래픽 관리 기능 사용을 살펴볼 수 있습니다.
아직 하지 않은 경우 하이브리드 부하 분산을 설정하기 위한 네트워크 요구사항을 이해하려면 하이브리드 연결 NEG 개요를 살펴보세요.
설정 개요
이 페이지의 예시에서는 다음 샘플 배포를 설정합니다.
하이브리드 부하 분산 배포를 설정하기 전에 하이브리드 연결을 구성해야 합니다. 이 문서에는 하이브리드 연결 설정이 포함되어 있지 않습니다.
선택한 하이브리드 연결 제품이 Cloud VPN인지 Cloud Interconnect(Dedicated 또는 Partner)인지에 따라 관련 제품 문서를 사용하여 구성합니다.
권한
하이브리드 부하 분산을 설정하려면 다음 권한이 있어야 합니다.
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 개요에 설명된 동작을 따릅니다.
방화벽 규칙 설정
온프레미스 환경 또는 다른 클라우드 환경에서 다음 방화벽 규칙을 만들어야 합니다.
Google의 상태 점검 프로브에서 엔드포인트로 트래픽을 허용하는 인그레스 허용 방화벽 규칙을 만듭니다. 허용되는 소스 IP 주소 범위는
35.191.0.0/16
에서130.211.0.0/22
사이입니다. 자세한 내용은 프로브 IP 범위 및 방화벽 규칙을 참조하세요.
경로 공지
온프레미스 환경 또는 기타 클라우드 환경에 다음 커스텀 IP 범위를 공지하도록 Cloud Router를 구성하세요.
- Google의 상태 점검 프로브에서 사용되는 범위:
35.191.0.0/16
및130.211.0.0/22
.
Google Cloud 환경 설정
다음 단계에서는 환경 간 하이브리드 연결을 구성하는 데 사용된 것과 동일한 VPC 네트워크(이 절차에서는 NETWORK라고 함)를 사용해야 합니다.
백엔드 서브넷 만들기
이 서브넷은 부하 분산기의 영역별 NEG 백엔드, 프런트엔드, 내부 IP 주소를 만드는 데 사용됩니다.
환경 간 하이브리드 연결을 구성하는 데 사용된 NETWORK 네트워크에 이 서브넷을 만듭니다.
콘솔
IPv4 및 IPv6 트래픽을 모두 지원하려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.
환경 간 하이브리드 연결을 구성하는 데 사용된 네트워크로 이동합니다.
- 수정을 클릭합니다.
- 서브넷 생성 모드에서 커스텀을 선택합니다.
- 저장을 클릭합니다.
선택사항: 이 네트워크에서 서브넷에 내부 IPv6 주소 범위를 구성하려면 다음 단계를 완료합니다.
- VPC 네트워크 ULA 내부 IPv6 범위에서 사용 설정됨을 선택합니다.
내부 IPv6 범위 할당에 대해 자동 또는 수동을 선택합니다.
수동을 선택한 경우
fd20::/20
범위 내에서/48
범위를 입력합니다. 범위가 사용 중인 경우 다른 범위를 제공하라는 메시지가 표시됩니다.
서브넷 탭에서 서브넷 추가를 클릭합니다.
서브넷 추가 패널에서 다음 필드를 구성합니다.
- 이름 필드에 서브넷 이름을 입력합니다.
- 리전 필드에서 리전을 선택합니다.
- IP 주소 범위 필드에 IP 주소 범위를 입력합니다.
- IP 스택 유형에 IPv4 및 IPv6(이중 스택)을 선택합니다.
- IPv6 액세스 유형 필드에서 외부를 선택합니다.
- 추가를 클릭합니다.
IPv4 트래픽을 지원하려면 다음 단계를 수행합니다.
Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.
환경 간 하이브리드 연결을 구성하는 데 사용된 네트워크로 이동합니다.
- 수정을 클릭합니다.
- 서브넷 생성 모드에서 커스텀을 선택합니다.
- 저장을 클릭합니다.
서브넷 탭에서 서브넷 추가를 클릭합니다.
서브넷 추가 패널에서 다음 정보를 입력합니다.
- 이름 필드에 서브넷 이름을 입력합니다.
- 리전 필드에서 리전을 선택합니다.
- IP 주소 범위 필드에 IP 주소 범위를 입력합니다.
- IP 스택 유형 필드에 IPv4(단일 스택)를 선택합니다.
- 추가를 클릭합니다.
gcloud
환경 간 하이브리드 연결을 구성하는 데 사용된 NETWORK 네트워크에 서브넷을 만듭니다.
IPv4 및 IPv6 트래픽 모두의 경우 다음 명령어를 사용합니다.
gcloud compute networks update NETWORK \ [ --enable-ula-internal-ipv6 [ --internal-ipv6-range=ULA_IPV6_RANGE ]] \ --subnet-mode=custom
gcloud compute networks subnets create LB_SUBNET_NAME \ --network=NETWORK \ --range=LB_SUBNET_RANGE \ --region=REGION \ --stack-type=IPV4_IPV6 \ --ipv6-access-type=EXTERNAL
IPv4 트래픽의 경우 다음 명령어를 사용합니다.
gcloud compute networks subnets create LB_SUBNET_NAME \ --network=NETWORK \ --range=LB_SUBNET_RANGE \ --region=REGION
다음을 바꿉니다.
NETWORK
: VPC 네트워크의 이름입니다.LB_SUBNET_NAME
: 서브넷의 이름입니다.REGION
: 리전의 이름입니다.ULA_IPV6_RANGE
: 내부 IPv6 서브넷 범위에 대해 Google에서 사용하는fd20::/20
범위 내의/48
프리픽스입니다.--internal-ipv6-range
플래그를 사용하지 않으면 Google은 네트워크의/48
프리픽스를 선택합니다.
방화벽 규칙 만들기
이 예시에서는 다음과 같은 방화벽 규칙을 만듭니다.
fw-allow-health-check
: 부하 분산되는 Google Cloud 인스턴스에 적용되는 인그레스 규칙으로, 부하 분산기 및 Google Cloud 상태 점검 시스템(130.211.0.0/22
및35.191.0.0/16
)의 트래픽을 허용합니다. 이 예시에서는 대상 태그allow-health-check
를 사용하여 적용할 백엔드 VM을 식별합니다.
콘솔
Google Cloud 콘솔에서 방화벽 정책 페이지로 이동합니다.
방화벽 규칙 만들기를 클릭합니다.
fw-allow-health-check
의 이름을 입력합니다.- 네트워크 섹션에서
NETWORK
를 선택합니다. - 대상에서 지정된 대상 태그를 선택합니다.
allow-health-check
로 대상 태그 필드를 채웁니다.- 소스 필터를 IPv4 범위로 설정합니다.
- 소스 IPv4 범위를
130.211.0.0/22
및35.191.0.0/16
으로 설정합니다. - 프로토콜 및 포트에서 지정된 프로토콜 및 포트를 선택합니다.
- TCP 옆의 체크박스를 선택하고 포트 번호로
80
을 입력합니다.
만들기를 클릭합니다.
IPv6 서브넷 트래픽을 허용하려면 방화벽 규칙 만들기를 다시 클릭하고 다음 정보를 입력합니다.
- 이름:
fw-allow-lb-access-ipv6
- 네트워크:
NETWORK
- 우선순위:
1000
- 트래픽 방향: 인그레스
- 대상: 지정된 대상 태그
- 대상 태그 필드에
allow-health-check-ipv6
을 입력합니다. - 소스 필터: IPv6 범위
- 소스 IPv6 범위:
2600:2d00:1:b029::/64
,2600:2d00:1:1::/64
- 프로토콜 및 포트: 모두 허용
- 이름:
만들기를 클릭합니다.
gcloud
fw-allow-health-check-and-proxy
규칙을 만들어 부하 분산기 및 Google Cloud 상태 점검이 TCP 포트80
에서 백엔드 인스턴스와 통신하도록 허용합니다.NETWORK를 하이브리드 연결을 구성하는 데 사용된 VPC 네트워크의 이름으로 바꿉니다.
gcloud compute firewall-rules create fw-allow-health-check \ --network=NETWORK \ --action=allow \ --direction=ingress \ --target-tags=allow-health-check \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --rules=tcp:80
fw-allow-health-check-ipv6
규칙을 만들어 Google Cloud IPv6 상태 점검을 허용합니다.gcloud compute firewall-rules create fw-allow-health-check-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=tcp,udp,icmp
영역별 NEG 설정
Google Cloud 기반 백엔드의 경우 하이브리드 연결을 구성한 동일한 리전에 여러 영역 NEG를 구성하는 것이 좋습니다.
GCE_VM_IP_PORT
유형 엔드포인트가 하나 이상 있는 영역 NEG는 이중 스택을 지원합니다.
이 예시에서는 REGION 리전에 GCE_VM_IP_PORT
유형의 엔드포인트가 있는 영역별 NEG를 설정합니다. 먼저 GCP_NEG_ZONE 영역에 VM을 만듭니다. 그런 다음 동일한 GCP_NEG_ZONE에 영역별 NEG를 만들고 VM의 네트워크 엔드포인트를 NEG에 추가합니다.
VM 만들기
콘솔
Google Cloud 콘솔의 VM 인스턴스 페이지로 이동합니다.
VM 인스턴스로 이동인스턴스 만들기를 클릭합니다.
이름을
vm-a1
로 설정합니다.리전으로 REGION을 선택합니다.
영역으로 GCP_NEG_ZONE을 선택합니다.
부팅 디스크 섹션에서 부팅 디스크 옵션으로 Debian 운영체제 및 10(Buster) 버전이 선택되어 있는지 확인합니다. 필요한 경우 선택을 클릭하여 이미지를 변경합니다.
고급 옵션을 클릭하고 다음과 같이 변경합니다.
- 네트워킹을 클릭하고 네트워크 태그인
allow-health-check
를 추가합니다. - 네트워크 인터페이스에서 수정
- 네트워크: NETWORK
- 서브넷: LB_SUBNET_NAME
- IP 스택 유형: IPv4 및 IPv6(이중 스택)
을 클릭하고 다음과 같이 변경한 다음 완료를 클릭합니다.
관리를 클릭합니다. 시작 스크립트 필드에 다음 스크립트 콘텐츠를 복사하여 붙여넣습니다. 스크립트 콘텐츠는 4개의 모든 VM에서 동일합니다.
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2
- 네트워킹을 클릭하고 네트워크 태그인
만들기를 클릭합니다.
다음 이름 및 영역 조합을 사용하여 두 번째 VM을 만들려면 다음 단계를 반복합니다.
- 이름:
vm-a2
, 영역: GCP_NEG_ZONE
- 이름:
gcloud
VM 이름과 해당 영역의 조합을 사용하여 다음 명령어를 두 번 실행해 VM을 만듭니다. 스크립트 콘텐츠는 두 VM 모두에서 동일합니다.
vm-a1
의 VM_NAME 및 선택한 GCP_NEG_ZONE 영역vm-a2
의 VM_NAME 및 동일한 GCP_NEG_ZONE 영역IPv4 및 IPv6 트래픽을 모두 지원하려면 다음 명령어를 실행하세요.
gcloud compute instances create VM_NAME \ --zone=GCP_NEG_ZONE \ --image-family=debian-10 \ --image-project=debian-cloud \ --tags=allow-health-check,allow-health-check-ipv6 \ --ipv6-network-tier=PREMIUM \ --stack-type=IPv4_IPv6 \ --subnet=LB_SUBNET_NAME \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2'
영역별 NEG 만들기
콘솔
영역별 네트워크 엔드포인트 그룹을 만들려면 다음 안내를 따르세요.
- Google Cloud 콘솔의 네트워크 엔드포인트 그룹 페이지로 이동합니다.
네트워크 엔드포인트 그룹 페이지로 이동 - 네트워크 엔드포인트 그룹 만들기를 클릭합니다.
- 영역별 NEG의 이름을 입력합니다. 이 절차에서는 GCP_NEG_NAME이라고 합니다.
- 네트워크 엔드포인트 그룹 유형에 네트워크 엔드포인트 그룹(영역)을 선택합니다.
- 네트워크에 NETWORK를 선택합니다.
- 서브넷에 LB_SUBNET_NAME을 선택합니다.
- 영역에 GCP_NEG_ZONE을 선택합니다.
- 기본 포트에
80
을 입력합니다. - 만들기를 클릭합니다.
엔드포인트를 영역별 NEG에 추가합니다.
- Google Cloud 콘솔의 네트워크 엔드포인트 그룹 페이지로 이동합니다.
네트워크 엔드포인트 그룹으로 이동 - 이전 단계에서 만든 네트워크 엔드포인트 그룹의 이름을 클릭합니다(GCP_NEG_NAME). 네트워크 엔드포인트 그룹 세부정보 페이지가 표시됩니다.
- 이 그룹의 네트워크 엔드포인트 섹션에서 네트워크 엔드포인트 추가를 클릭합니다. 네트워크 엔드포인트 추가 페이지가 표시됩니다.
- VM 인스턴스를 선택하여 내부 IP 주소를 네트워크 엔드포인트로 추가합니다. 네트워크 인터페이스 섹션에 VM의 이름, 영역, 서브넷이 표시됩니다.
- IPv4 주소 필드에 새 네트워크 엔드포인트의 IPv4 주소를 입력합니다.
- IPv6 주소 필드에 새 네트워크 엔드포인트의 IPv6 주소를 입력합니다.
- 포트 유형을 선택합니다.
- 기본값을 선택하면 엔드포인트에서 네트워크 엔드포인트 그룹의 모든 엔드포인트에 기본 포트
80
을 사용합니다. Apache 서버가 포트80
에서 요청을 처리하므로 이 예시에 충분합니다. - 커스텀을 선택하면 사용할 엔드포인트의 포트 번호를 입력합니다.
- 기본값을 선택하면 엔드포인트에서 네트워크 엔드포인트 그룹의 모든 엔드포인트에 기본 포트
- 엔드포인트를 추가하려면 네트워크 엔드포인트 추가를 클릭하고 이전 단계를 반복합니다.
- 엔드포인트를 모두 추가한 후 만들기를 클릭합니다.
gcloud
gcloud compute network-endpoint-groups create
명령어를 사용하여 영역별 NEG(GCE_VM_IP_PORT
엔드포인트 포함)를 만듭니다.gcloud compute network-endpoint-groups create GCP_NEG_NAME \ --network-endpoint-type=GCE_VM_IP_PORT \ --zone=GCP_NEG_ZONE \ --network=NETWORK \ --subnet=LB_SUBNET_NAME
NEG를 만드는 동안
--default-port
를 지정하거나 다음 단계에서처럼 엔드포인트마다 포트 번호를 지정할 수 있습니다.GCP_NEG_NAME에 이중 스택 엔드포인트를 추가합니다.
gcloud compute network-endpoint-groups update GCP_NEG_NAME \ --zone=GCP_NEG_ZONE \ --add-endpoint='instance=vm-a1,ip=IPv4_ADDRESS, \ ipv6=IPv6_ADDRESS,port=80' \ --add-endpoint='instance=vm-a2,ip=IPv4_ADDRESS, \ ipv6=IPv6_ADDRESS,port=80'
하이브리드 연결 NEG 설정
NEG를 만들 때 Google Cloud와 온프레미스 또는 기타 클라우드 환경 간의 지리적 거리를 최소화하는 ZONE을 사용합니다. 예를 들어 독일 프랑크푸르트의 온프레미스 환경에서 서비스를 호스팅하는 경우 NEG를 만들 때 europe-west3-a
Google Cloud 영역을 지정할 수 있습니다.
또한 Cloud Interconnect를 사용할 경우 NEG를 만드는 데 사용된 ZONE이 하이브리드 연결 Cloud Interconnect VLAN 연결이 구성된 리전과 동일해야 합니다.
사용 가능한 리전 및 영역은 Compute Engine 문서: 사용 가능한 리전 및 영역을 참조하세요.
콘솔
하이브리드 연결 네트워크 엔드포인트 그룹을 만들려면 다음 안내를 따르세요.
- Google Cloud 콘솔의 네트워크 엔드포인트 그룹 페이지로 이동합니다.
네트워크 엔드포인트 그룹으로 이동 - 네트워크 엔드포인트 그룹 만들기를 클릭합니다.
- 하이브리드 NEG의 이름을 입력합니다. 이 절차에서는 ON_PREM_NEG_NAME이라고 합니다.
- 네트워크 엔드포인트 그룹 유형에 하이브리드 연결 네트워크 엔드포인트 그룹(영역)을 선택합니다.
- 네트워크에 NETWORK를 선택합니다.
- 서브넷에 LB_SUBNET_NAME을 선택합니다.
- 영역에 ON_PREM_NEG_ZONE을 선택합니다.
- 기본 포트를 입력합니다.
- 만들기를 클릭합니다.
엔드포인트를 하이브리드 연결 NEG에 추가합니다.
- Google Cloud 콘솔의 네트워크 엔드포인트 그룹 페이지로 이동합니다.
네트워크 엔드포인트 그룹 페이지로 이동 - 이전 단계에서 만든 네트워크 엔드포인트 그룹의 이름을 클릭합니다(ON_PREM_NEG_NAME). 네트워크 엔드포인트 그룹 세부정보 페이지가 표시됩니다.
- 이 그룹의 네트워크 엔드포인트 섹션에서 네트워크 엔드포인트 추가를 클릭합니다. 네트워크 엔드포인트 추가 페이지가 표시됩니다.
- 새 네트워크 엔드포인트의 IP 주소를 입력합니다.
- 포트 유형을 선택합니다.
- 기본값을 선택하면 엔드포인트에서 네트워크 엔드포인트 그룹의 모든 엔드포인트에 기본 포트를 사용합니다.
- 커스텀을 선택하면 사용할 엔드포인트에 다른 포트 번호를 입력할 수 있습니다.
- 엔드포인트를 추가하려면 네트워크 엔드포인트 추가를 클릭하고 이전 단계를 반복합니다.
- Google Cloud 이외의 엔드포인트를 모두 추가한 후 만들기를 클릭합니다.
gcloud
gcloud compute network-endpoint-groups create
명령어를 사용하여 하이브리드 연결 NEG를 만듭니다.gcloud compute network-endpoint-groups create ON_PREM_NEG_NAME \ --network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \ --zone=ON_PREM_NEG_ZONE \ --network=NETWORK
on-prem-neg
에 엔드포인트를 추가합니다.gcloud compute network-endpoint-groups update ON_PREM_NEG_NAME \ --zone=ON_PREM_NEG_ZONE \ --add-endpoint="ip=ON_PREM_IP_ADDRESS_1,port=PORT_1" \ --add-endpoint="ip=ON_PREM_IP_ADDRESS_2,port=PORT_2"
이 명령어를 사용하여 이전에 온프레미스 또는 클라우드 환경에서 구성한 네트워크 엔드포인트를 추가할 수 있습니다.
--add-endpoint
를 필요한 만큼 반복합니다.
필요한 경우 이 단계를 반복하여 하이브리드 NEG를 여러 개 만들 수 있습니다.
부하 분산기 구성
콘솔
gcloud
- 외부 클라이언트가 트래픽을 전송할 전역 고정 외부 IP 주소를 만듭니다.
gcloud compute addresses create LB_IP_ADDRESS_NAME \ --network-tier=PREMIUM \ --global
- 백엔드의 상태 점검을 만듭니다.
gcloud compute health-checks create http HTTP_HEALTH_CHECK_NAME \ --use-serving-port
- 백엔드 서비스를 만듭니다. 영역 NEG와 하이브리드 연결 NEG 모두 백엔드로 이 백엔드 서비스에 추가합니다.
- 영역별 NEG를 백엔드 서비스에 백엔드로 추가합니다.
gcloud beta compute backend-services add-backend BACKEND_SERVICE \ --global \ --balancing-mode=RATE \ --max-rate-per-endpoint=MAX_REQUEST_RATE_PER_ENDPOINT \ --network-endpoint-group=GCP_NEG_NAME \ --network-endpoint-group-zone=GCP_NEG_ZONE
분산 모드 구성에 대한 자세한 내용은--max-rate-per-endpoint
매개변수에 대한 gcloud CLI 문서를 참조하세요. - 하이브리드 NEG를 백엔드 서비스에 백엔드로 추가합니다.
gcloud compute backend-services add-backend BACKEND_SERVICE \ --global \ --balancing-mode=RATE \ --max-rate-per-endpoint=MAX_REQUEST_RATE_PER_ENDPOINT \ --network-endpoint-group=ON_PREM_NEG_NAME \ --network-endpoint-group-zone=ON_PREM_NEG_ZONE
- 수신되는 요청을 백엔드 서비스로 라우팅하는 URL 맵을 만듭니다.
gcloud beta compute url-maps create URL_MAP_NAME \ --default-service BACKEND_SERVICE
- HTTPS 부하 분산기를 만들려는 경우에만 이 단계를 수행합니다. HTTP 부하 분산기에는 이 작업이 필요하지 않습니다.
HTTPS 부하 분산기를 만들려면 HTTPS 대상 프록시에서 사용할 SSL 인증서 리소스가 있어야 합니다. Google 관리형 SSL 인증서 또는 자체 관리형 SSL 인증서를 사용하여 SSL 인증서 리소스를 만들 수 있습니다. Google Cloud는 이러한 인증서를 자동으로 가져오고 관리하며 갱신하므로 Google 관리형 인증서를 사용하는 것이 좋습니다.
Google 관리형 인증서를 만들려면 도메인이 있어야 합니다. 도메인이 없는 경우 테스트용으로 자체 서명 SSL 인증서를 사용할 수 있습니다.
Google 관리형 SSL 인증서 리소스를 만들려면 다음 안내를 따르세요.gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \ --domains DOMAIN
자체 관리형 SSL 인증서 리소스를 만들려면 다음 안내를 따르세요.gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \ --certificate CRT_FILE_PATH \ --private-key KEY_FILE_PATH
- 대상 HTTP(S) 프록시를 만들어 요청을 URL 맵으로 라우팅합니다.
HTTP 부하 분산기의 경우 HTTP 대상 프록시를 만듭니다.gcloud beta compute target-http-proxies create TARGET_HTTP_PROXY_NAME \ --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \ --url-map=URL_MAP_NAME
HTTPS 부하 분산기의 경우 HTTPS 대상 프록시를 만듭니다. 프록시는 HTTPS 부하 분산을 위해 SSL 인증서를 포함하는 부하 분산기의 일부분이므로 이 단계에서 인증서도 로드합니다.gcloud beta compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \ --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \ --ssl-certificates=SSL_CERTIFICATE_NAME \ --url-map=URL_MAP_NAME
다음을 바꿉니다.
TARGET_HTTP_PROXY_NAME
: 대상 HTTP 프록시의 이름입니다.TARGET_HTTPS_PROXY_NAME
: 대상 HTTPS 프록시의 이름입니다.HTTP_KEEP_ALIVE_TIMEOUT_SEC
: 클라이언트 HTTP 연결 유지 제한 시간을 지정하는 데 사용되는 필드입니다(선택사항). 제한 시간 값은 5~1,200초 사이여야 합니다. 기본값은 610초입니다.SSL_CERTIFICATE_NAME
: SSL 인증서의 이름입니다.URL_MAP_NAME
: URL 맵의 이름입니다.
- 수신되는 요청을 프록시로 라우팅하는 전달 규칙을 만듭니다.
HTTP 부하 분산기의 경우:gcloud beta compute forwarding-rules create HTTP_FORWARDING_RULE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --address=LB_IP_ADDRESS_NAME \ --target-http-proxy=TARGET_HTTP_PROXY_NAME \ --global \ --ports=80
HTTPS 부하 분산기의 경우:gcloud beta compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --address=LB_IP_ADDRESS_NAME \ --target-https-proxy=TARGET_HTTPS_PROXY_NAME \ --global \ --ports=443
gcloud beta compute backend-services create BACKEND_SERVICE \ --health-checks=HTTP_HEALTH_CHECK_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --ip-address-selection-policy=PREFER_IPV6 \ --global
부하 분산기에 도메인 연결
부하 분산기를 만든 후 부하 분산기와 연결된 IP 주소를 확인합니다(예: 30.90.80.100
). 도메인이 부하 분산기를 가리키도록 하려면 도메인 등록 서비스를 사용하여 A
레코드를 만듭니다. SSL 인증서에 여러 도메인을 추가했다면 모두 부하 분산기의 IP 주소를 가리키는 A
레코드를 도메인마다 추가해야 합니다. 예를 들어 www.example.com
및 example.com
의 A
레코드를 만들려면 다음을 사용합니다.
NAME TYPE DATA www A 30.90.80.100 @ A 30.90.80.100
Cloud DNS를 DNS 제공업체로 사용하는 경우 레코드 추가, 수정, 삭제를 참조하세요.
부하 분산기 테스트
부하 분산기를 구성했으므로 부하 분산기의 IP 주소로 트래픽을 전송할 수 있습니다.
Google Cloud 콘솔에서 부하 분산 페이지로 이동합니다.
부하 분산 페이지로 이동방금 만든 부하 분산기를 클릭합니다.
부하 분산기의 IP 주소를 확인합니다.
트래픽을 부하 분산기로 전송합니다.
HTTP 부하 분산기를 만든 경우
http://IP_ADDRESS
로 이동한 뒤 웹브라우저를 사용하여 부하 분산기를 테스트할 수 있습니다.IP_ADDRESS
를 부하 분산기의 IP 주소로 바꿉니다. 엔드포인트를 통해 노출된 서비스로 이동해야 합니다.HTTPS 부하 분산기를 만든 경우 다음과 같이
curl
을 사용하여 부하 분산기를 테스트할 수 있습니다.IP_ADDRESS
를 부하 분산기의 IP 주소로 바꿉니다. 엔드포인트를 통해 노출된 서비스로 이동해야 합니다.curl -k https://IP_ADDRESS
그래도 문제가 해결되지 않고 Google 관리형 인증서를 사용 중인 경우 인증서 리소스가 활성 상태인지 확인합니다. 자세한 내용은 Google 관리형 SSL 인증서 리소스 상태를 참조하세요. 그런 다음 부하 분산기의 IP 주소를 가리키는 도메인을 테스트합니다. 예를 들면 다음과 같습니다.
curl -s https://test.example.com
Google Cloud 이외의 엔드포인트 테스트는 하이브리드 NEG 엔드포인트를 통해 노출한 서비스에 따라 달라집니다.
추가 구성
이 섹션에서는 대체 및 추가 구성 옵션을 제공하는 구성 예시를 살펴봅니다. 모든 태스크는 선택사항입니다. 원하는 순서대로 수행할 수 있습니다.
클라이언트 HTTP 연결 유지 제한 시간 업데이트
이전 단계에서 만든 부하 분산기는 클라이언트 HTTP 연결 유지 제한 시간의 기본값으로 구성되었습니다. 클라이언트 HTTP 연결 유지 제한 시간을 업데이트하려면 다음 안내를 따르세요.
콘솔
Google Cloud 콘솔에서 부하 분산 페이지로 이동합니다.
- 수정할 부하 분산기의 이름을 클릭합니다.
- 수정을 클릭합니다.
- 프런트엔드 구성을 클릭합니다.
- 고급 기능을 펼칩니다. HTTP 연결 유지 제한 시간에 제한 시간 값을 5~1,200초로 입력합니다.
- 업데이트를 클릭합니다.
- 변경사항을 검토하려면 검토 및 완료를 클릭한 다음 업데이트를 클릭합니다.
gcloud
HTTP 부하 분산기의 경우 gcloud compute target-http-proxies update
명령어를 사용하여 대상 HTTP 프록시를 업데이트합니다.
gcloud compute target-http-proxies update TARGET_HTTP_PROXY_NAME \ --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \ --global
HTTPS 부하 분산기의 경우 gcloud compute target-https-proxies update
명령어를 사용하여 대상 HTTPS 프록시를 업데이트합니다.
gcloud compute target-https-proxies update TARGET_HTTPS_PROXY_NAME \ --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \ --global
다음을 바꿉니다.
TARGET_HTTP_PROXY_NAME
: 대상 HTTP 프록시의 이름입니다.TARGET_HTTPS_PROXY_NAME
: 대상 HTTPS 프록시의 이름입니다.HTTP_KEEP_ALIVE_TIMEOUT_SEC
: HTTP 연결 유지 제한 시간 값은 5~1,200초 사이입니다.