이 페이지에서는 기존 관리형 인스턴스 그룹(MIG)을 백엔드 서비스 또는 부하 분산기의 대상 풀에 추가하는 방법을 설명합니다.
부하 분산기는 사용자 트래픽을 분산시켜 애플리케이션에서 성능 문제가 발생할 위험을 줄이는 데 도움이 됩니다. Google Cloud Load Balancing에서는 관리형과 비관리형 인스턴스 그룹을 모두 사용하여 트래픽을 처리합니다. 사용 중인 부하 분산기 유형에 따라 인스턴스 그룹을 대상 풀이나 백엔드 서비스에 추가할 수 있습니다.
MIG 백엔드를 사용하여 특정 유형의 부하 분산기를 만드는 방법은 Cloud Load Balancing 문서를 참조하세요.
시작하기 전에
-
아직 인증을 설정하지 않았다면 설정합니다.
인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인하는 프로세스입니다.
로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음과 같이 Compute Engine에 인증하면 됩니다.
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Google Cloud 콘솔에서 부하 분산 페이지로 이동합니다.
- 관리형 인스턴스 그룹을 추가할 백엔드 서비스의 이름을 클릭합니다.
- 수정을 클릭합니다.
- +백엔드 추가를 클릭합니다.
- 추가할 인스턴스 그룹을 선택합니다.
- 변경할 선택적 설정을 수정합니다.
- 변경사항을 저장합니다.
- Google Cloud 콘솔에서 대상 풀 페이지로 이동합니다.
- 인스턴스 그룹을 추가할 대상 풀을 클릭합니다.
- 수정 버튼을 클릭합니다.
- VM 인스턴스 섹션까지 아래로 스크롤하고 인스턴스 그룹 선택을 클릭합니다.
- 드롭다운 메뉴에서 인스턴스 그룹을 선택합니다.
- 변경사항을 저장합니다.
INSTANCE_GROUP
은 인스턴스 그룹의 이름입니다.TARGET_POOL,..
은 이 인스턴스 그룹을 추가할 하나 이상의 대상 풀 이름입니다.PROJECT_ID
는 이 요청의 프로젝트 ID입니다.REGION
은 인스턴스 그룹의 리전입니다.INSTANCE_GROUP
은 인스턴스 그룹의 이름입니다.- 포트 이름이 동일한 모든 포트 간에 트래픽이 분산됩니다.
- 지정된 백엔드 서비스는 한 번에 이름이 지정된 포트 한 개로만 트래픽을 전달할 수 있습니다.
이름이 지정된 포트에 여러 포트 번호를 사용하는 경우 포트는 모두 동일한 애플리케이션에 대한 것이어야 합니다.
예를 들어
http:80,http:8080
은 유효하지만 포트 80은 일반적으로 TLS를 지원하지 않으므로http:80,http:443
은 작동하지 않습니다.- 이름이 지정된 포트가
http-port:80
인instance-group-a
- 이름이 지정된 포트가
http-port:79
인instance-group-b
- Google Cloud 콘솔에서 인스턴스 그룹 페이지로 이동합니다.
- 이름이 지정된 포트를 지정할 인스턴스 그룹의 이름을 클릭합니다. 인스턴스 그룹 속성이 있는 페이지가 열립니다.
- 수정을 클릭하여 이 관리형 인스턴스 그룹을 수정합니다.
- 포트 매핑 섹션에서 포트 추가를 클릭하고 원하는 포트 이름 또는 이 이름에 연결할 포트 번호를 입력합니다. 더 많은 항목이 필요하면 포트 추가를 다시 클릭합니다.
- 저장을 클릭하여 변경사항을 저장하고 관리형 인스턴스 그룹의 인스턴스에 이름이 지정된 포트를 적용합니다.
- 고가용성 앱을 위한 부하 분산 사용 가이드 사용해 보기
- 관리형 인스턴스 그룹에 사용할 수 있는 인스턴스 템플릿 만들기
- 리전 관리형 인스턴스 그룹 만들기
- 관리형 인스턴스 그룹에서 자동 복구를 사용하도록 설정
- 관리형 인스턴스 그룹에서 자동 확장을 사용하도록 설정
REST
로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공하는 사용자 인증 정보를 사용합니다.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
자세한 내용은 Google Cloud 인증 문서의 REST 사용 인증을 참조하세요.
백엔드 서비스에 관리형 인스턴스 그룹 추가
대부분의 부하 분산기 유형을 만들려면 백엔드 서비스가 필요합니다.
백엔드 서비스에는 여러 백엔드가 포함될 수 있습니다. 인스턴스 그룹은 백엔드의 유형입니다. 인스턴스 그룹의 인스턴스는 부하 분산기의 트래픽에 응답합니다. 그러면 백엔드 서비스에는 사용할 수 있는 인스턴스, 처리할 수 있는 트래픽의 양, 현재 처리 중인 트래픽의 양이 인식됩니다. 또한 백엔드 서비스는 상태 확인을 모니터링하고 비정상 인스턴스에 새 연결을 전송하지 않습니다.
관리형 인스턴스 그룹을 백엔드 서비스에 추가하려면 다음 안내를 따르세요.
콘솔
gcloud
다음의
add-backend
명령어를 사용합니다.gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group=INSTANCE_GROUP \ [--instance-group-region=INSTANCE_GROUP_REGION | --instance-group-zone=INSTANCE_GROUP_ZONE] \ --balancing-mode=BALANCING_MODE
분산 모드 지원 여부는 부하 분산기 유형에 따라 다릅니다. 전체 목록은 각 부하 분산기에 사용 가능한 분산 모드를 참조하세요.
관리형 인스턴스 그룹의 분산 모드에 따라 추가 파라미터가 필요합니다. 자세한 내용은 SDK의
add-backend
명령어를 참조하세요.REST
REST API를 사용하여 백엔드 서비스를 추가하려면 backendServices를 참조하세요.
제한사항
리전 MIG를 사용하는 부하 분산은
RATE
및UTILIZATION
분산 모드에서max-rate
대상 용량을 지원하지 않습니다. 각 부하 분산기의 사용 가이드라인에 대해 자세히 알아보려면 분산 모드 및 대상 용량 설정을 참조하세요.대상 풀에 관리형 인스턴스 그룹 추가
대상 풀은 가상 머신 인스턴스를 하나 이상 포함하는 객체입니다. 대상 풀은 외부 패스 스루 네트워크 부하 분산기에 사용됩니다. 여기서 부하 분산기는 사용자 요청을 연결된 대상 풀로 전달합니다. 해당 대상 풀에 속하는 인스턴스가 이러한 요청을 처리하고 응답을 반환합니다. 인스턴스 그룹에서 인스턴스가 추가되거나 삭제될 때 대상 풀이 변경사항으로 자동 업데이트되도록 관리형 인스턴스 그룹을 대상 풀에 추가할 수 있습니다.
대상 풀이 있어야 대상 풀에 관리형 인스턴스 그룹을 추가할 수 있습니다. 자세한 내용은 대상 풀 추가에 대한 설명서를 참조하세요.
대상 풀에 기존 관리형 인스턴스 그룹을 추가하려면 다음 안내를 따르세요. 그러면 관리형 인스턴스 그룹에 속하는 모든 VM 인스턴스가 대상 풀에 추가됩니다.
콘솔
gcloud
set-target-pools
명령어를 사용합니다.gcloud compute instance-groups managed set-target-pools INSTANCE_GROUP \ --target-pools TARGET_POOL,..
각 항목의 의미는 다음과 같습니다.
REST
리전 MIG 또는 영역 MIG에 대해
setTargetPools
메서드를 호출합니다. 예를 들면 다음과 같습니다.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/regionInstanceGroupManagers/INSTANCE_GROUP/setTargetPools
각 항목의 의미는 다음과 같습니다.
이 그룹을 추가할 대상 풀에 대한 URI 목록이 요청 본문에 포함되어야 합니다. 예를 들면 다음과 같습니다.
{ "targetPools": [ "regions/us-central1/targetPools/example-targetpool-1", "regions/us-central1/targetPools/example-targetpool-2" ] }
관리형 인스턴스 그룹에 이름이 지정된 포트 할당
이름이 지정된 포트는 포트 이름과 포트 번호를 나타내는 키-값 쌍입니다. 포트 이름은 서비스 또는 애플리케이션의 이름을 나타냅니다. 포트 번호는 서비스 또는 애플리케이션이 실행되는 포트를 나타냅니다.
Cloud Load Balancing에서는 이름이 지정된 포트를 사용합니다. 프록시 역할을 수행하는 부하 분산기는 백엔드 서비스 구성에서 이름이 지정된 단일 포트를 구독합니다. 포트 이름은 각 인스턴스 그룹 백엔드의 이름이 지정된 포트 매핑에 따라 포트 번호로 변환됩니다.
예를 들어 백엔드 서비스가
http-port
라는 포트를 구독할 수 있습니다. 백엔드 인스턴스 그룹에는http-port:80
이라는 포트가 있을 수 있습니다. 백엔드 인스턴스 그룹은 프로토콜(예: TCP)을 사용하여 포트 80에서 그룹의 VM으로 트래픽을 보내도록 부하 분산기에 지시합니다. 프로토콜은 부하 분산기의 백엔드 서비스에서 정의됩니다.이름이 지정된 포트는 프록시 부하 분산기에 사용되는 간단한 메타데이터이며, Compute Engine에서 네트워크 또는 방화벽 리소스를 제어하지 않습니다.
이름이 지정된 포트의 여러 포트 번호
각 서비스 이름에 여러 포트를 할당할 수 있습니다. 각 포트에 여러 서비스 이름을 할당할 수도 있습니다.
다음 사항에 유의하세요.
인스턴스 그룹 하나에 이름이 지정된 포트를 여러 개 할당할 수 있습니다. 예를 들어 이름이 지정된 포트
http-port
를 구독하고 백엔드 인스턴스 그룹이 2개 있는 예시 백엔드 서비스를 살펴보겠습니다.이 백엔드 서비스는
instance-group-a
에서 VM의 트래픽을 포트 80으로 보내고,instance-group-b
에서 VM의 트래픽을 포트 79로 보냅니다.여러 부하 분산기의 경우 여러 백엔드 서비스에 동일한 인스턴스 그룹을 추가하고 인스턴스 그룹이 각 부하 분산기에서 다른 포트를 제공하는 경우 이름이 지정된 단일 포트에 모든 포트 번호를 추가하지 마세요. 대신 고유한 이름이 지정된 포트를 만들어 각 백엔드 서비스가 제공할 포트 집합에 매핑합니다.
예를 들어 각각 자체 부하 분산기가 있는 3개의 애플리케이션이 있다고 가정합니다. 애플리케이션마다 자체 포트 번호(
app1
: 81,app2
: 82,app3
: 83)가 있습니다. 3개의 백엔드 서비스가 모두 공통 인스턴스 그룹을 사용하고 있다고 가정하고 이 인스턴스 그룹에 이름이 지정된 포트를[app1:81, app2:82, app3:83]
으로 할당합니다.이름이 지정된 포트 및 상태 점검
외부 애플리케이션 부하 분산기 또는 내부 애플리케이션 부하 분산기에서 작동하도록 백엔드 서비스에 포트 번호가 여러 개 있는 이름이 지정된 포트의 경우 상태 점검에 특정 포트 번호 대신
--use-serving-port
플래그가 있어야 합니다. Google Cloud Console에서는 이 옵션을 사용할 수 없습니다.--use-serving-port
를 설정하려면 Google Cloud CLI 또는 API를 사용해야 합니다.예를 들어 인스턴스 그룹이 하나인 동일한 백엔드 서비스의 3개의 다른 포트(81, 82, 83)에서 트래픽을 부하 분산하는 애플리케이션이 있다고 가정해 보겠습니다. 이 인스턴스 그룹의 포트를
[app:81, 82, 83]
으로 할당할 수 있습니다. 이 시나리오의 상태 점검에는--use-serving-port
플래그가 있어야 합니다.자세한 내용은 부하 분산 상태 점검 문서를 참조하세요.
이름이 지정된 포트 및 방화벽 규칙
이름이 지정된 포트는 Google Cloud 방화벽 규칙을 만들거나 수정하지 않습니다. 백엔드 VM에 트래픽을 허용하려면 여전히 필요한 방화벽 규칙을 만들어야 합니다.
이름이 지정된 포트 및 백엔드 서비스
인스턴스 그룹 구성 외에 백엔드 서비스도 구성해야 합니다. 예를 들어 이름이
my-service-name
이고 포트8888
인 인스턴스 그룹에 이름이 지정된 포트를 설정했다고 가정해 보겠습니다.gcloud compute instance-groups set-named-ports my-unmanaged-ig \ --named-ports=my-service-name:8888
그런 다음 백엔드 서비스 구성에서 이름이 지정된 포트를 참조해야 하며 이때 백엔드 서비스의
--port-name
이my-service-name
으로 설정된 포트여야 합니다.gcloud compute backend-services update my-backend-service \ --port-name=my-service-name
이름이 지정된 포트 만들기
콘솔
gcloud
관리형 인스턴스 그룹에 대해
instance-groups managed set-named-ports
명령어를 사용해서 하나 이상의 이름이 지정된 포트를 설정합니다. 비관리형 그룹의 경우instance-groups set-named-ports
명령어를 사용합니다.gcloud compute instance-groups managed set-named-ports INSTANCE_GROUP \ --named-ports PORT_NAME:PORT,PORT_NAME:PORT
예를 들면 다음과 같습니다.
gcloud compute instance-groups managed set-named-ports INSTANCE_GROUP \ --named-ports name1:80,name2:8080
각 서비스 이름에 여러 포트를 할당하거나 각 서비스에 여러 이름을 할당하려면 이름이나 포트마다 항목을 2개 이상 만듭니다. 예를 들어 포트
10
,20
,80
이 동일한 애플리케이션에 사용되는 경우 이러한 모든 포트에name1
을 할당할 수 있습니다. 또한 두 개의 이름name2
및name3
를 포트8080
에 할당할 수 있습니다. 마지막으로 다음 예시와 같이 포트9000
을name4
에 할당할 수 있습니다.gcloud compute instance-groups managed set-named-ports INSTANCE_GROUP \ --named-ports name1:10,name1:20,name1:80,\ name2:8080,name3:8080,\ name4:9000
get-named-ports
명령어를 사용하여 관리형 인스턴스 그룹의 이름이 지정된 포트 할당을 확인합니다.gcloud compute instance-groups managed get-named-ports INSTANCE_GROUP
NAME PORT name1 10 name1 20 name1 80 name2 8080 name3 8080 name4 9000
REST
instanceGroupManagers
API는setNamedPorts
API 메서드를 제공하지 않습니다. 대신instanceGroups
API를 사용하여 이 작업을 수행합니다.instanceGroups
API에 대한 요청을 작성한 후 인스턴스 그룹의 이름을 포함합니다. 특정 그룹에 대한 정보를 가져와 인스턴스 그룹의 현재fingerprint
값을 가져옵니다. 요청 본문에 하나 이상의namedPorts
값 쌍과fingerprint
를 포함합니다.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroups/INSTANCE_GROUP/setNamedPorts { "fingerprint": "42WmSpB8rSM=", "namedPorts": [ { "name": "PORT_NAME", "port": PORT_NUMBER }, { "name": "PORT_NAME", "port": PORT_NUMBER } ] }
예를 들어 포트
10
,20
,80
이 동일한 애플리케이션에 사용되는 경우 이러한 모든 포트에name1
을 할당할 수 있습니다. 또한 두 개의 이름name2
및name3
를 포트8080
에 할당할 수 있습니다. 마지막으로 다음 예시와 같이 포트9000
을name4
에 할당할 수 있습니다.POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroups/example-group/setNamedPorts { "fingerprint": "42WmSpB8rSM=", "namedPorts": [ { "name": "name1", "port": 8080 }, { "name": "name2", "port": 9000 } ] }
각 서비스 이름에 여러 포트를 할당하려면 해당 서비스 이름에 대해 여러 항목을 만듭니다. 예를 들어
name1
에 포트10
,20
,80
을 할당할 수 있습니다. 또한name2
에 포트8080
을 할당합니다.POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroups/example-group/setNamedPorts { "fingerprint": "42WmSpB8rSM=", "namedPorts": [ { "name": "name1", "port": 10 }, { "name": "name1", "port": 20 } { "name": "name1", "port": 80 } { "name": "name2", "port": 8080 } { "name": "name3", "port": 80 } { "name": "name4", "port": 8080 } ] }
관리형 인스턴스 그룹에 이미 할당된 이름이 지정된 포트를 나열하려면 이 그룹을 가리키는
GET
요청을 작성합니다.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP
다음 단계
달리 명시되지 않는 한 이 페이지의 콘텐츠에는 Creative Commons Attribution 4.0 라이선스에 따라 라이선스가 부여되며, 코드 샘플에는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 Google Developers 사이트 정책을 참조하세요. 자바는 Oracle 및/또는 Oracle 계열사의 등록 상표입니다.
최종 업데이트: 2024-11-25(UTC)
-