이 가이드에서는 대상 풀 백엔드에서 리전 백엔드 서비스로 기존 외부 패스 스루 네트워크 부하 분산기를 마이그레이션하는 방법을 안내합니다.
리전 백엔드 서비스로 이동하면 레거시가 아닌 상태 점검(TCP, SSL, HTTP, HTTPS, HTTP/2), 관리형 인스턴스 그룹, 연결 드레이닝, 장애 조치 정책 등의 기능을 활용할 수 있습니다.
Google Cloud 콘솔에서 이 태스크에 대한 단계별 안내를 직접 수행하려면 둘러보기를 클릭합니다.
이 가이드에서는 다음 샘플 대상 풀 기반 외부 패스 스루 네트워크 부하 분산기를 리전 백엔드 서비스를 대신 사용하도록 마이그레이션하는 방법을 안내합니다.
결과적으로 생성되는 백엔드 서비스 기반 외부 패스 스루 네트워크 부하 분산기 배포는 다음과 같습니다.
이 예시에서는 us-central-1a
영역에 2개의 인스턴스가 있고 us-central-1c
영역에 2개의 인스턴스가 있는 기존 대상 풀 기반 외부 패스 스루 네트워크 부하 분산기가 있다고 가정합니다.
이러한 마이그레이션에 필요한 대략적인 단계는 다음과 같습니다.
대상 풀 인스턴스를 인스턴스 그룹으로 분류
백엔드 서비스는 관리형 또는 비관리형 인스턴스 그룹에서만 작동합니다. 단일 대상 풀에 배치할 수 있는 인스턴스 수에는 제한이 없지만 인스턴스 그룹에는 최대 크기가 있습니다. 대상 풀이 이 최대 인스턴스 수를 초과하는 경우 백엔드를 여러 인스턴스 그룹으로 분할해야 합니다.
기존 배포에 백업 대상 풀이 포함되어 있는 경우 해당 인스턴스에 대해 별도의 인스턴스 그룹을 만듭니다. 이 인스턴스 그룹은 장애 조치 그룹으로 구성됩니다.
지역별 백엔드 서비스 만들기
배포에 백업 대상 풀이 포함되어 있으면 백엔드 서비스를 만드는 동안 장애 조치 비율을 지정해야 합니다. 이는 대상 풀 배포에 구성된 장애 조치율과 일치해야 합니다.
이전에 만든 인스턴스 그룹을 백엔드 서비스에 추가
배포에 백업 대상 풀이 포함된 경우 해당 장애 조치 인스턴스 그룹을 백엔드 서비스에 추가할 때
--failover
플래그로 표시하세요.새 백엔드 서비스를 가리키는 전달 규칙 구성
다음 옵션 중 하나를 선택할 수 있습니다.
기존 전달 규칙이 백엔드 서비스를 가리키도록 업데이트합니다(권장).
백엔드 서비스를 가리키는 새 전달 규칙을 만듭니다. 부하 분산기의 프런트엔드에 사용할 새 IP 주소를 만들어야 합니다. 그런 다음 이전 대상 풀 기반 부하 분산기의 IP 주소에서 새 IP 주소로 원활하게 마이그레이션되도록 DNS 설정을 수정합니다.
시작하기 전에
Google Cloud CLI 설치 이 도구에 대한 전체 개요는 gcloud 도구 가이드를 참조하세요. 부하 분산 관련 명령어는 gcloud compute
명령어 그룹에서 확인할 수 있습니다.
이전에 Google Cloud CLI를 실행한 적이 없다면 먼저 gcloud init
를 실행하여 인증하세요.
이 가이드는 bash에 익숙한 개발자를 대상으로 합니다.
마이그레이션할 백엔드 및 전달 규칙 식별
모든 대상 풀을 나열하려면 Cloud Shell에서 다음 명령어를 실행합니다.
gcloud compute target-pools list
마이그레이션할 대상 풀의 이름을 기록해 둡니다. 이 이름을 이후에 TARGET_POOL_NAME으로 참조합니다.
대상 풀 TARGET_POOL_NAME의 모든 VM 인스턴스를 나열하려면 Cloud Shell에서 다음 명령어를 실행합니다.
gcloud compute target-pools describe TARGET_POOL_NAME \ --region=us-central1
VM 인스턴스의 이름을 기록합니다. 이 이름들은 이후에 BACKEND_INSTANCE1, BACKEND_INSTANCE2, BACKEND_INSTANCE3, BACKEND_INSTANCE4로 지칭됩니다.
외부 패스 스루 네트워크 부하 분산기의 전달 규칙을 나열하려면 Cloud Shell에서 다음 명령어를 실행합니다.
gcloud compute forwarding-rules list --filter="target: ( TARGET_POOL_NAME )"
전달 규칙의 이름을 기록해 둡니다. 이 이름을 이후에 FORWARDING_RULE로 참조합니다.
영역별 비관리형 인스턴스 그룹 만들기
백엔드가 있는 각 영역에 영역별 비관리형 인스턴스 그룹을 만듭니다. 설정에 따라 인스턴스를 필요한 수만큼 여러 인스턴스 그룹으로 나눌 수 있습니다. 이 예시에서는 영역마다 하나씩 2개의 인스턴스 그룹만 사용하고 모든 백엔드 VM을 연결된 인스턴스 그룹의 지정된 영역에 배치합니다.
이 예시에서는 인스턴스 그룹을 uc-central1-a
영역에 1개, us-central1-c
영역 1개, 총 두 개를 만듭니다.
인스턴스 그룹 설정
콘솔
- Google Cloud 콘솔에서 인스턴스 그룹 페이지로 이동합니다.
- 인스턴스 그룹 만들기를 클릭합니다.
- 왼쪽 창에서 새 비관리형 인스턴스 그룹을 선택합니다.
- 이름에
ig-us-1
를 입력합니다. - 리전에서
us-central1
을 선택합니다. - 영역에서
us-central1-a
를 선택합니다. - 인스턴스가 있는 위치에 따라 네트워크 및 서브네트워크를 선택합니다. 이 예시에서는 기존 대상 풀 인스턴스가
default
네트워크와 서브네트워크에 있습니다. - 인스턴스 그룹에 인스턴스를 추가하려면 VM 인스턴스 섹션에서BACKEND_INSTANCE1 및 BACKEND_INSTANCE2의 두 인스턴스를 선택합니다.
- 만들기를 클릭합니다.
다음 단계를 반복하여 다음 사양으로 두 번째 인스턴스 그룹을 만듭니다.
- 이름:
ig-us-2
- 리전:
us-central1
- 영역:
us-central1-c
us-central1-c
영역에서 두 인스턴스 BACKEND_INSTANCE3 및 BACKEND_INSTANCE4를 이 인스턴스 그룹에 추가합니다.- 이름:
기존 부하 분산기 배포에 백업 대상 풀도 있으면 이 단계를 반복하여 해당 인스턴스에 대한 별도의 장애 조치 인스턴스 그룹을 만듭니다.
gcloud
gcloud compute instance-groups unmanaged create
명령어를 사용하여us-central1-a
영역에 비관리형 인스턴스 그룹을 만듭니다.gcloud compute instance-groups unmanaged create ig-us-1 \ --zone us-central1-a
us-central1-c
영역에서 두 번째 비관리형 인스턴스 그룹을 만듭니다.gcloud compute instance-groups unmanaged create ig-us-2 \ --zone us-central1-c
ig-us-1
인스턴스 그룹에 인스턴스를 추가합니다.gcloud compute instance-groups unmanaged add-instances ig-us-1 \ --instances BACKEND_INSTANCE_1,BACKEND_INSTANCE_2 \ --zone us-central1-a
ig-us-2
인스턴스 그룹에 인스턴스를 추가합니다.gcloud compute instance-groups unmanaged add-instances ig-us-2 \ --instances BACKEND_INSTANCE_3,BACKEND_INSTANCE_4 \ --zone us-central1-c
기존 부하 분산기 배포에 백업 대상 풀도 있으면 이 단계를 반복하여 해당 인스턴스에 대한 별도의 장애 조치 인스턴스 그룹을 만듭니다.
상태 점검 만들기
상태 점검을 만들어 인스턴스 그룹의 인스턴스 상태를 확인합니다. 기존 대상 풀 기반 외부 패스 스루 네트워크 부하 분산기에는 기존 HTTP 상태 점검이 연결될 가능성이 높습니다.
부하 분산기가 분배할 트래픽의 프로토콜과 일치하는 새 상태 점검을 만들 수 있습니다. 백엔드 서비스 기반 외부 패스 스루 네트워크 부하 분산기는 TCP, SSL, HTTP(S), HTTP/2 상태 점검을 사용할 수 있습니다.
콘솔
- Google Cloud 콘솔에서 상태 점검 페이지로 이동합니다.
- 상태 점검 만들기를 클릭합니다.
- 이름 필드에
network-lb-health-check
를 입력합니다. - 범위를 리전으로 설정합니다.
- 리전에서
us-central1
을 선택합니다. - 프로토콜에서 HTTP를 선택합니다.
- 포트에
80
을 입력합니다. - 만들기를 클릭합니다.
gcloud
이 예시에서는 백엔드 서비스와 함께 사용할 레거시가 아닌 HTTP 상태 점검을 만듭니다.
gcloud compute health-checks create http network-lb-health-check \ --region us-central1 \ --port 80
백엔드 서비스 구성
다음 섹션 중 하나를 사용하여 백엔드 서비스를 만듭니다. 기존 외부 패스 스루 네트워크 부하 분산기에 백업 대상 풀이 있으면 백엔드 서비스를 생성하는 동안 장애 조치율을 구성해야 합니다.
또한 백엔드 서비스에 백엔드를 추가할 때 --failover
플래그를 사용하여 장애 조치 인스턴스 그룹을 지정해야 합니다.
백업 대상 풀이 없는 배포
gcloud
us-central1
리전에서 리전별 백엔드 서비스를 만듭니다.gcloud compute backend-services create network-lb-backend-service \ --region us-central1 \ --health-checks network-lb-health-check \ --health-checks-region us-central1 \ --protocol TCP
두 인스턴스 그룹(
ig-us-1
및ig-us-2
)을 백엔드 서비스에 백엔드로 추가합니다.gcloud compute backend-services add-backend network-lb-backend-service \ --instance-group ig-us-1 \ --instance-group-zone us-central1-a \ --region us-central1
gcloud compute backend-services add-backend network-lb-backend-service \ --instance-group ig-us-2 \ --instance-group-zone us-central1-c \ --region us-central1
백업 대상 풀이 있는 배포
gcloud
us-central1
리전에서 리전별 백엔드 서비스를 만듭니다. 대상 풀에 이전에 구성된 장애 조치율과 일치하도록 백엔드 서비스 장애 조치율을 구성합니다.gcloud compute backend-services create network-lb-backend-service \ --region us-central1 \ --health-check network-lb-health-check \ --failover-ratio 0.5
두 인스턴스 그룹(
ig-us-1
및ig-us-2
)을 백엔드 서비스에 백엔드로 추가합니다.gcloud compute backend-services add-backend network-lb-backend-service \ --instance-group ig-us-1 \ --instance-group-zone us-central1-a \ --region us-central1
gcloud compute backend-services add-backend network-lb-backend-service \ --instance-group ig-us-2 \ --instance-group-zone us-central1-c \ --region us-central1
장애 조치 인스턴스 그룹을 만든 경우 백엔드 서비스에 추가합니다. 이 백엔드를 백엔드 서비스에 추가할 때
--failover
플래그로 표시합니다.gcloud compute backend-services add-backend network-lb-backend-service \ --instance-group FAILOVER_INSTANCE_GROUP \ --instance-group-zone ZONE \ --region us-central1 \ --failover
전달 규칙 구성
새로운 백엔드 서비스로 트래픽을 전달하는 전달 규칙을 구성하는 옵션은 두 가지가 있습니다. 기존 전달 규칙을 업데이트하거나 새 IP 주소로 새 전달 규칙을 만들 수 있습니다.
기존 전달 규칙 업데이트(권장)
기존 전달 규칙이 새 백엔드 서비스를 가리키도록 업데이트하려면 set-target
플래그를 사용합니다.
gcloud compute forwarding-rules set-target FORWARDING_RULE \ --backend-service network-lb-backend-service \ --region us-central1
FORWARDING_RULE
을 기존 전달 규칙의 이름으로 바꿉니다.
새 전달 규칙 만들기
기존 전달 규칙을 업데이트하지 않으려면 새 IP 주소로 새 전달 규칙을 만들 수 있습니다. 주어진 IP 주소에는 한 번에 하나의 전달 규칙만 연결할 수 있으므로 수신 트래픽을 이전 IP 주소에서 새 IP 주소로 마이그레이션하려면 DNS 설정을 수동으로 수정해야 합니다.
다음 명령어를 사용하여 새 IP 주소로 새 전달 규칙을 만듭니다. us-central1
리전에 이미 예약된 IP 주소를 지정하려면 --address
플래그를 사용할 수 있습니다.
gcloud compute forwarding-rules create network-lb-forwarding-rule \ --load-balancing-scheme external \ --region us-central1 \ --ports 80 \ --backend-service network-lb-backend-service
부하 분산기 테스트
부하 분산기를 테스트하여 전달 규칙이 예상대로 수신 트래픽을 전달하는지 확인합니다.
부하 분산기의 외부 IP 주소 조회
gcloud
부하 분산기에서 사용하는 network-lb-forwarding-rule
전달 규칙의 외부 IP 주소를 확인하려면 다음 명령어를 입력합니다.
gcloud compute forwarding-rules describe network-lb-forwarding-rule --region us-central1
nc
명령어를 사용하여 외부 IP 주소에 액세스합니다.
이 예시에서는 세션 어피니티에 기본 해싱 방법을 사용합니다. 따라서 운영체제에서 할당한 소스 포트에 따라 nc
명령어의 요청이 백엔드 VM에 무작위로 배포됩니다.
연결을 테스트하려면 먼저 다음 명령어를 실행하여 Linux에 Netcat을 설치하세요.
$ sudo apt install netcat
모든 백엔드 VM 응답이 나타날 때까지 다음 명령어를 몇 번 반복합니다.
$ nc IP_ADDRESS 80
이전 부하 분산기와 연결된 리소스 삭제
새 외부 패스 스루 네트워크 부하 분산기가 올바르게 작동하는지 확인한 후 이전 대상 풀 리소스를 삭제할 수 있습니다.
- Google Cloud 콘솔에서 부하 분산 페이지로 이동합니다.
- 대상 풀에 연결된 이전 부하 분산기를 선택한 다음 삭제를 클릭합니다.
- 생성된 상태 점검을 선택한 후 부하 분산기 및 선택한 리소스 삭제를 클릭합니다.
다음 단계
- 외부 패스 스루 네트워크 부하 분산기가 백엔드 서비스에서 작동하는 방법은 백엔드 서비스 기반 외부 패스 스루 네트워크 부하 분산기 개요를 참조하세요.
- 백엔드 서비스를 사용하여 외부 패스 스루 네트워크 부하 분산기를 구성하려면 백엔드 서비스로 외부 패스 스루 네트워크 부하 분산기 설정을 참조하세요.
- 대상 풀을 사용하여 외부 패스 스루 네트워크 부하 분산기를 구성하려면 대상 풀로 외부 패스 스루 네트워크 부하 분산기 설정을 참조하세요.