대상 풀 사용

대상 풀은 외부 패스 스루 네트워크 부하 분산기에서 들어오는 트래픽을 수신하는 백엔드 인스턴스 그룹입니다. 대상 풀의 모든 백엔드 인스턴스는 동일한 Google Cloud 리전에 있어야 합니다. 외부 패스 스루 네트워크 부하 분산기는 백엔드 서비스 또는 대상 풀을 사용하여 백엔드 인스턴스 그룹을 정의할 수 있습니다. 새 외부 패스 스루 네트워크 부하 분산기를 만드는 경우 백엔드 서비스를 사용하는 것이 좋습니다.

이 페이지에서는 대상 풀 백엔드의 구성 옵션을 설명합니다. 외부 패스 스루 네트워크 부하 분산기의 전달 규칙이 대상 풀로 트래픽을 전달하는 경우 부하 분산기는 소스 IP 주소, 소스 포트, 대상 IP 주소, 대상 포트의 해시를 기반으로 대상 풀에서 인스턴스를 선택합니다.

대상 풀에 단일 가상 머신(VM)이 포함되도록 하려면 부하 분산 대신 프로토콜 전달 기능을 사용하는 것이 좋습니다.

대상 풀 속성

대상 풀은 TCPUDP 트래픽을 처리하는 전달 규칙과 함께 작동합니다. 전달 규칙에 사용하려면 먼저 대상 풀을 만들어야 합니다.

대상 풀은 기존 HTTP 상태 확인을 사용합니다.

대상 풀을 구성하는 속성은 다음과 같습니다.

name
대상 풀의 이름입니다. 이름은 이 프로젝트 내에서 고유한 이름으로서 1~63자여야 하며 정규 표현식 [a-z]([-a-z0-9]*[a-z0-9])?와 일치해야 합니다. 다시 말해 첫 문자는 소문자이고 그 다음에 오는 모든 문자는 대시, 소문자, 숫자여야 합니다. 단, 마지막 문자에는 대시를 사용할 수 없습니다.
description
선택사항. 이 대상 풀에 대해 사용자가 정의한 설명입니다.
region

대상 풀 리전의 정규화된 URL입니다. 리전은 백엔드 인스턴스가 있는 리전과 동일해야 합니다. 예를 들면 다음과 같습니다.

'region' : 'https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION'

healthChecks[ ]

선택사항. 이 대상 풀의 상태 점검 목록으로, 선택사항입니다. 특정 대상 풀에 상태 점검 하나만 연결할 수 있습니다. 자세한 내용은 상태 점검을 참조하세요.

instances[ ]

이 대상 풀의 트래픽을 처리할 인스턴스 URL의 목록입니다. 모든 인스턴스는 대상 풀과 동일한 리전에 있어야 하지만, 여러 인스턴스가 단일 리전 내의 여러 영역에 속할 수 있습니다. 예를 들면 다음과 같습니다.

"instances" : [
  "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE",
  "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE-2"
]
sessionAffinity

선택사항. 백엔드 가상 머신 인스턴스를 선택하는 데 사용되는 방법을 제어합니다. 이 값은 대상 풀을 만드는 도중에만 설정할 수 있습니다. 이 값을 설정하고 나면 수정할 수 없습니다. 해시 방법은 다음 5개 값의 하위 집합을 기반으로 백엔드를 선택합니다.

  • 소스/대상 IP
  • 소스/대상 포트
  • 레이어 4 프로토콜(TCP, UDP)

가능한 해시는 다음과 같습니다.

NONE(해시 지정 안 함)(기본값)
5튜플 해싱으로, 소스 IP와 대상 IP, 소스 포트와 대상 포트, 프로토콜을 사용합니다. 각각의 새 연결은 임의의 인스턴스에 배정될 수 있지만 인스턴스가 정상 상태이면 특정 연결의 모든 트래픽은 같은 인스턴스에서 유지됩니다.
CLIENT_IP_PROTO
3튜플 해싱으로, 소스 IP와 대상 IP, 프로토콜을 사용합니다. 클라이언트에서 나오는 모든 연결은 동일 프로토콜이 사용되고 인스턴스가 정상 상태인 경우 동일 인스턴스에 배정됩니다.
CLIENT_IP
2튜플 해싱으로, 소스 IP와 대상 IP를 사용합니다. 클라이언트에서 나오는 모든 연결은 인스턴스가 정상 상태인 동안에 프로토콜에 관계없이 같은 인스턴스에 배정됩니다.

5튜플 해싱은 다수의 가상 머신에 걸쳐 트래픽을 적절히 분산합니다. 하지만 소스 포트가 변경될 수 있으므로 동일한 클라이언트에서 발생하는 두 번째 세션이 다른 인스턴스에 도달할 수 있습니다. 동일한 클라이언트에서 발생하는 모든 세션이 동일한 백엔드(백엔드가 정상인 경우)에 도달하게 하려면 CLIENT_IP_PROTO 옵션이나 CLIENT_IP 옵션을 지정하면 됩니다.

일반적으로 3튜플이나 2튜플 메서드를 선택하는 경우 세션 어피니티는 기본 5튜플 메서드보다 양호하지만 전체 트래픽은 균등하게 분산되지 않을 수 있습니다.

조각화된 UDP 패킷: 조각화될 가능성이 있는 UDP 트래픽 부하를 분산한다면 세션 어피니티를 CLIENT_IP_PROTO 또는 CLIENT_IP로 설정합니다. NONE(5튜플 해싱)을 사용하지 않습니다. UDP 조각(첫 번째 조각 제외)에는 포트 번호가 없으며 부하 분산기는 포트가 없는 조각을 삭제할 수 있기 때문입니다. 자세한 내용은 부하 분산 및 조각화된 UDP 패킷을 참조하세요.

backupPool

선택사항. 또 다른 대상 풀 리소스의 정규화된 URL입니다. 백업 풀은 다른 대상 풀이 참조하는 대상 풀입니다. 이 기능을 사용하려면 failoverRatio도 지정해야 합니다. 대상 풀의 정상 가상 머신 비율이 failoverRatio 미만이면 외부 패스 스루 네트워크 부하 분산기가 트래픽을 백업 풀로 보냅니다. 대상 풀당 백업 풀을 하나만 제공할 수 있습니다. 백업 풀은 대상 풀과 동일한 리전에 있어야 합니다. 대상 풀의 정상 인스턴스 비율이 구성된 장애 조치율 미만이면 외부 패스 스루 네트워크 부하 분산기는 다음 규칙을 따라 트래픽을 라우팅합니다.

  1. 대상 풀의 총 인스턴스 대비 정상 인스턴스의 비율이 장애 조치율보다 미만이면 트래픽이 백업 풀의 정상 인스턴스로 전송됩니다.
  2. 대상 풀의 총 인스턴스 대비 정상 인스턴스 비율이 장애 조치율 미만이지만 백업 풀에 남아있는 정상 인스턴스가 없으면 트래픽이 대상 풀의 나머지 정상 인스턴스로 전송됩니다.
  3. 대상 풀이 비어 있지 않고 대상 풀과 백업 풀의 모든 인스턴스가 상태 확인에 실패하면 최후의 수단으로 트래픽이 대상 풀의 모든 인스턴스로 전송됩니다.
  4. 대상 풀이 비어 있고 백업 풀의 모든 인스턴스가 상태 확인에 실패할 경우 최후의 수단으로 백업 풀의 모든 인스턴스에 트래픽이 전송됩니다.

1개 수준의 장애 조치만 지원됩니다. 예를 들어 대상 풀 A에 백업 풀 B가 있고 백업 풀 B에 백업 풀 C가 있으면, 대상 풀 A로 전송되어야 하는 트래픽은 백업 풀 C가 아니라 백업 풀 B로만 전달될 수 있습니다.

failoverRatio

선택사항. 0.01.0사이의 부동 소수점으로, 이 대상 풀이 비정상으로 선언되는 시기를 결정합니다. 예를 들어 이 값을 0.1로 설정한 경우 정상 인스턴스 수가 0.1(10%) 미만이면 이 대상 풀은 비정상으로 선언됩니다. 장애 조치율이 0.0인 경우 풀이 정상으로 간주되려면 백엔드가 최소 한 개 이상 정상 상태여야 합니다. 장애 조치율을 1.0으로 설정한 경우 풀이 정상으로 간주되려면 모든 인스턴스가 정상 상태여야 합니다. backupPool 필드를 정의하는 경우 이 값을 정의해야 합니다.

장애 조치 조건

조건 새 연결이 다음으로 이동합니다.
장애 조치율 !=0, 대상 풀의 정상 VM >= FR 대상 풀
장애 조치율 =0, 대상 풀의 정상 VM > 0 대상 풀
장애 조치율 !=0, 대상 풀의 정상 VM < FR, 백업 풀의 정상 VM이 하나 이상 백업 풀
장애 조치율 =0, 대상 풀의 정상 VM = 0, 백업 풀의 정상 VM이 하나 이상 백업 풀
하나 이상의 VM이 대상 풀에 있고, 대상 풀의 모든 VM이 비정상이며, 백업 풀의 모든 VM이 비정상 대상 풀(최후의 수단)
대상 풀에 VM이 없고 백업 풀의 모든 VM이 비정상 백업 풀(최후의 수단)
대상 풀에 VM이 없고 백업 풀에 VM이 없음 트래픽이 중단됨

대상 풀 만들기

콘솔

Google Cloud 콘솔에서는 대상 풀을 만들 수 없습니다. Google Cloud CLI 또는 API를 사용하여 대상 풀을 만들 수 있습니다.

Google Cloud CLI를 사용하여 대상 풀 기반 외부 패스 스루 네트워크 부하 분산기를 만드는 방법은 대상 풀로 외부 패스 스루 네트워크 부하 분산기 설정을 참조하세요.

gcloud

gcloud compute를 사용하여 대상 풀을 만들려면 target-pools create 명령어를 사용합니다.

  gcloud compute target-pools create TARGET_POOL \
      [--backup-pool=BACKUP_POOL] \
      [--description=DESCRIPTION] \
      [--failover-ratio=FAILOVER_RATIO] \
      [--http-health-check=HEALTH_CHECK] \
      [--region=REGION]
      [--session-affinity=SESSION_AFFINITY; default="NONE"]

다음을 바꿉니다.

  • TARGET_POOL: 대상 풀의 이름
  • BACKUP_POOL: 백업 대상 풀의 이름
  • DESCRIPTION: 대상 풀에 대한 설명
  • FAILOVER_RATIO: 0.0~1.0 사이의 값이며 대상 풀이 비정상으로 선언되는 시기를 결정합니다.
  • HEALTH_CHECK: 이 대상 풀의 상태 확인
  • REGION: 대상 풀의 리전
  • SESSION_AFFINITY: 백엔드 가상 머신 인스턴스를 선택하는 데 사용되는 메서드

API

API에 대상 풀을 만들려면 다음 URI에 HTTP POST 요청을 실행합니다.

  https://www.googleapis.com/v1/compute/projects/PROJECT_ID/regions/REGION/targetPools
  {
    "name": name,
    "instances": [
       "https://www.googleapis.com/v1/compute/project/PROJECT_ID/zones/ZONE/instances/INSTANCE",
       "https://www.googleapis.com/v1/compute/project/PROJECT_ID/zones/ZONE/instances/INSTANCE-2",
    ]
  }
 

다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID
  • ZONE: 대상 풀의 인스턴스가 있는 영역
  • INSTANCE, INSTANCE-2: 대상 풀에 추가할 인스턴스

대상 풀에서 인스턴스 추가 또는 제거

콘솔

Google Cloud 콘솔에서는 대상 풀을 수정할 수 없습니다. Google Cloud CLI 또는 API를 사용하여 대상 풀을 수정할 수 있습니다.

gcloud

gcloud compute를 사용하여 대상 풀에 인스턴스를 추가하려면 target-pools add-instances 명령어를 사용합니다.

  gcloud compute target-pools add-instances TARGET_POOL \
      --instances=INSTANCE,[INSTANCE-2,...]

다음을 바꿉니다.

  • TARGET_POOL: 대상 풀의 이름
  • INSTANCE, INSTANCE-2: 대상 풀에 추가할 인스턴스 이름

인스턴스를 제거하려면 target-pools remove-instances 명령어를 사용합니다.

  gcloud compute target-pools remove-instances TARGET_POOL \
      --instances=INSTANCE,[INSTANCE-2,...]

다음을 바꿉니다.

  • TARGET_POOL: 대상 풀의 이름
  • INSTANCE, INSTANCE-2: 대상 풀에서 제거할 인스턴스 이름

API

API에서 다음 URI에 POST 요청을 보냅니다.

  https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/TARGET_POOL/removeInstance
  https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/TARGET_POOL/addInstance

추가하거나 제거할 인스턴스에 대한 정규화된 URI를 요청 본문에 포함해야 합니다.

  {
   "instances": [
      {"instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE"},
      {"instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE-2"}
    ]
  }
 

다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID
  • TARGET_POOL: 업데이트할 대상 풀의 이름
  • REGION: 대상 풀이 있는 리전
  • ZONE: 업데이트된 인스턴스가 있는 영역
  • INSTANCE, INSTANCE-2: 대상 풀에 추가할 인스턴스

자세한 내용은 targetPools.addInstancetargetPools.removeInstance 메서드에 대한 API 참조 문서를 참조하세요.

대상 풀 나열

콘솔

대상 풀 목록을 보려면 부하 분산 고급 메뉴를 사용합니다.

고급 부하 분산 페이지에서 대상 풀 탭으로 이동합니다.
대상 풀로 이동

페이지에 대상 풀 목록이 표시됩니다.

gcloud

gcloud compute를 사용하여 기존 대상 풀을 나열하려면 target-pools list 명령어를 사용합니다.

  gcloud compute target-pools list

더 자세한 출력을 얻으려면 describe 명령어를 사용하여 풀 이름을 지정합니다.

API

API에서 다음 URI에 GET 요청을 보냅니다.

  https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools

다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID
  • REGION: 대상 풀이 있는 리전

대상 풀 설명

콘솔

대상 풀에 대한 정보를 가져오려면 부하 분산 고급 메뉴를 사용합니다.

  1. 고급 부하 분산 페이지에서 대상 풀 탭으로 이동합니다.
    대상 풀로 이동
  2. 자세한 정보를 보려면 대상 풀의 이름을 클릭합니다.

gcloud

gcloud compute를 사용하여 단일 대상 풀에 대한 정보를 가져오려면 target-pools describe 명령어를 사용합니다.

  gcloud compute target-pools describe TARGET_POOL

다음을 바꿉니다.

  • TARGET_POOL: 대상 풀의 이름

API

API에서 다음 URI에 비어 있는 GET 요청을 보냅니다.

  https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/TARGET_POOL

다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID
  • TARGET_POOL: 업데이트할 대상 풀의 이름
  • REGION: 대상 풀이 있는 리전

인스턴스의 상태 가져오기

콘솔

대상 풀의 인스턴스 상태를 가져오려면 부하 분산 고급 메뉴를 사용합니다.

  1. 고급 부하 분산 페이지에서 대상 풀 탭으로 이동합니다.
    대상 풀로 이동
  2. 대상 풀의 이름을 클릭합니다.
  3. 대상 풀 세부정보 페이지에 모든 인스턴스와 해당 인스턴스의 상태가 나열됩니다.

gcloud

gcloud compute를 사용하여 대상 풀에 있는 특정 인스턴스나 모든 인스턴스의 현재 상태를 확인하려면 gcloud compute target-pools get-health 명령어를 사용하면 됩니다.

  gcloud compute target-pools get-health TARGET_POOL

다음을 바꿉니다.

  • TARGET_POOL: 대상 풀의 이름

이 명령어는 구성된 상태 확인의 결정에 따라 상태를 정상 또는 비정상으로 반환합니다.

API

API에서 다음 URI로 보내는 HTTP POST 요청을 작성합니다. 이때 요청 본문에 인스턴스를 명시합니다.

  https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/TARGET_POOL/getHealth

  {
    "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE"
  }

다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID
  • TARGET_POOL: 업데이트할 대상 풀의 이름
  • REGION: 대상 풀이 있는 리전
  • ZONE: 인스턴스가 있는 영역
  • INSTANCE: 상태 확인 상태를 확인하는 인스턴스

대상 풀 삭제

대상 풀을 삭제하려면 먼저 대상 풀을 참조하는 전달 규칙이 없는지 확인해야 합니다. 전달 규칙이 대상 풀을 참조하고 있는 경우에는 전달 규칙을 삭제하여 참조를 제거해야 합니다.

콘솔

Google Cloud 콘솔을 사용하여 대상 풀을 삭제하려면 부하 분산 고급 메뉴를 사용합니다.

  1. 고급 부하 분산 페이지에서 대상 풀 탭으로 이동합니다.
    대상 풀로 이동
  2. 대상 풀의 이름을 클릭합니다.
  3. 삭제를 클릭합니다.
  4. 대상 풀 삭제 창에서 삭제를 클릭합니다.

gcloud

gcloud compute를 사용하여 대상 풀을 삭제하려면 target-pools delete 명령어를 사용합니다.

  gcloud compute target-pools delete TARGET_POOL

다음을 바꿉니다.

  • TARGET_POOL: 삭제할 대상 풀의 이름

API

API에서 다음 URI에 비어 있는 DELETE 요청을 보냅니다.

  https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/TARGET_POOL

다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID
  • TARGET_POOL: 업데이트할 대상 풀의 이름
  • REGION: 대상 풀이 있는 리전

대상 풀에서 상태 확인 추가 또는 제거

상태 점검 객체는 임의의 대상 풀에 연결하거나 대상 풀에서 연결 해제할 수 있는 독립형전역 리소스입니다.

대상 풀에 연결된 상태 점검이 없으면 외부 패스 스루 네트워크 부하 분산기는 모든 인스턴스를 정상으로 처리하고 트래픽을 대상 풀의 모든 인스턴스로 전송합니다. 하지만 상태 점검이 없는 대상 풀의 상태를 쿼리하면 상태가 unhealthy로 반환되어 대상 풀에 상태 점검이 없음을 나타냅니다. 인스턴스를 관리하는 데 도움이 되도록 대상 풀에 상태 확인이 연결되어 있는 것이 좋습니다.

외부 패스 스루 네트워크 부하 분산기는 기존 HTTP 상태 점검을 사용하여 대상 풀의 인스턴스 상태를 확인합니다. 외부 패스 스루 네트워크 부하 분산기는 기존 HTTP 상태 점검만 사용할 수 있으며 이전 HTTPS 상태 점검은 사용할 수 없습니다.

콘솔

Google Cloud 콘솔을 사용할 때는 대상 풀 백엔드로 외부 패스 스루 네트워크 부하 분산기를 만드는 동안 기존 HTTP 상태 점검을 만들 수 있습니다.

Google Cloud 콘솔 상태 점검 페이지를 사용하여 독립형 기존 상태 점검을 만들 수 없습니다.

gcloud

gcloud compute를 사용하여 대상 풀에 상태 점검을 추가하려면 target-pools add-health-checks 명령어를 사용합니다.

  gcloud compute target-pools add-health-checks TARGET_POOL \
      --http-health-check=HEALTH_CHECK

다음을 바꿉니다.

  • TARGET_POOL: 대상 풀의 이름
  • HEALTH_CHECK: 이 대상 풀에 사용할 기존 HTTP 상태 확인

상태 점검을 제거하려면 target-pools remove-health-checks 명령어를 사용합니다.

  gcloud compute target-pools remove-health-checks TARGET_POOL \
    --http-health-check=HEALTH_CHECK

다음을 바꿉니다.

  • TARGET_POOL: 대상 풀의 이름
  • HEALTH_CHECK: 이 대상 풀에서 삭제될 기존 HTTP 상태 확인

API

API를 사용하여 상태 확인을 연결하거나 연결 해제하려면 적절한 URI에 HTTP POST 요청을 작성합니다.

  https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/TARGET_POOL/removeHealthCheck
  https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/TARGET_POOL/addHealthCheck

연결하거나 연결 해제할 상태 확인을 요청 본문에 포함해야 합니다.

  {
    "healthCheck": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/httpHealthChecks/HEALTH_CHECK"
  }

다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID
  • TARGET_POOL: 업데이트할 대상 풀의 이름
  • REGION: 대상 풀이 있는 리전
  • HEALTH_CHECK: 대상 풀에 연결하거나 연결 해제할 기존 HTTP 상태 확인

자세한 내용은 targetPools.addHealthChecktargetPools.removeHealthCheck에 대한 API 참조 문서를 참조하세요.

백업 대상 풀 추가 또는 제거

대상 풀을 처음 만들 때 대상 풀이 비정상 상태가 되는 경우 트래픽을 수신할 백업 대상 풀을 적용할 수 있습니다.

이전에 백업 대상 풀을 설정한 적이 없는 경우 기능이 올바르게 작동할 수 있도록 상태 확인도 설정해야 합니다.

콘솔

Google Cloud 콘솔에서는 대상 풀을 수정할 수 없습니다. Google Cloud CLI 또는 API를 사용하여 대상 프록시를 수정할 수 있습니다.

gcloud

gcloud compute를 사용하여 백업 풀 리소스를 업데이트하려면 target-pools set-backup 명령어를 사용합니다.

  gcloud compute target-pools set-backup TARGET_POOL \
      --backup-pool=BACKUP_POOL \
      --failover-ratio=FAILOVER_RATIO

다음을 바꿉니다.

  • TARGET_POOL: 대상 풀의 이름
  • BACKUP_POOL: 백업 대상 풀의 이름
  • FAILOVER_RATIO: 0.0~1.0 사이의 값이며 대상 풀이 비정상으로 선언되는 시기를 결정합니다.

API

API를 통해 백업 풀 업데이트 또는 제거 요청을 하려면 다음 URI로 POST 요청을 전송합니다.

  POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/TARGET_POOL/setBackup?failoverRatio=FAILOVER_RATIO

  {
    "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/BACKUP_POOL"
  }

다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID
  • TARGET_POOL: 업데이트할 대상 풀의 이름
  • REGION: 대상 풀이 있는 리전
  • BACKUP_POOL: 대상 풀과 연결할 백업 풀의 이름
  • FAILOVER_RATIO: 장애 조치율

빈 대상을 정의하거나 장애 조치율을 정의하지 않으면 이 대상 풀에서 백업 풀 동작이 중지됩니다.

다음 단계