연결 드레이닝 사용 설정

연결 드레이닝은 VM이 인스턴스 그룹에서 삭제될 때 기존의 진행 중인 요청에 완료될 수 있는 시간을 부여하는 프로세스입니다.

연결 드레이닝을 사용 설정하려면 백엔드 서비스에서 연결 드레이닝 제한 시간을 설정합니다. 제한 시간은 1초에서 3,600초 사이여야 합니다.

지정된 제한 시간 동안 삭제된 VM에 대한 기존 요청에 완료할 시간이 제공됩니다. 부하 분산기는 삭제된 VM에 새로운 요청을 보내지 않습니다. 제한 시간에 도달하면 VM에 남아있는 모든 연결이 닫힙니다.

인스턴스가 인스턴스 그룹에서 삭제될 때마다 연결 드레이닝이 트리거됩니다. 구체적인 시나리오는 다음과 같습니다.

지정된 제한 시간이 지난 후에 인스턴스가 종료될 때까지 최대 60초가 걸릴 수 있습니다.

동일 인스턴스 그룹을 공유하는 여러 백엔드 서비스에서 연결 드레이닝을 사용 설정할 경우 가장 큰 시간 제한 값이 사용됩니다. 예를 들어 백엔드 서비스 A가 연결 제한 시간을 100초로 설정하고, 백엔드 서비스 B가 연결 제한 시간을 200초로 설정할 경우, 시스템은 200초 동안 기다린 후 공유 인스턴스 그룹에서 인스턴스를 종료합니다.

제한사항

연결 드레이닝 사용 설정

콘솔

  1. Google Cloud Platform Console의 부하 분산 페이지로 이동합니다.
    부하 분산 페이지로 이동
  2. 부하 분산기에 대해 수정 버튼을 클릭하거나 새 부하 분산기를 만듭니다.
  3. 백엔드 구성을 클릭합니다.
  4. 백엔드 서비스 하단에서 고급 구성을 클릭합니다.
  5. 연결 드레이닝 제한 시간 필드에 0~3600 사이의 값을 입력합니다. 0으로 설정하면 연결 드레이닝이 중지됩니다.

gcloud

--connection-draining-timeout 플래그를 사용하여 신규 또는 기존 백엔드 서비스에서 연결 드레이닝을 사용 설정합니다. 예를 들어 백엔드 서비스를 업데이트할 때는 요청에 다음 플래그를 제공합니다.

gcloud compute backend-services update [BACKEND_SERVICE] \
    --connection-draining-timeout [CONNECTION_TIMEOUT_SECS]

각 매개변수는 다음과 같습니다.

  • [BACKEND_SERVICE]는 이 요청의 백엔드 서비스입니다.
  • [CONNECTION_TIMEOUT_SECS]는 인스턴스가 종료될 때까지 대기해야 하는 시간으로, 0~3600초(포함)입니다. 0으로 설정하면 연결 드레이닝이 중지됩니다. 이 제한 시간은 백엔드 서비스에 속하는 모든 인스턴스 그룹에 적용됩니다.

backend-services edit 하위 명령어를 사용하여 인스턴스를 업데이트하는 경우 리소스 본문에 connectionDraining을 추가합니다.

# You can edit the resource below. Lines beginning with "#" are
# ignored.
#
# If you introduce a syntactic error, you will be given the
# opportunity to edit the file again. You can abort by closing this
# file without saving it.
#
# At the bottom of this file, you will find an example resource.
#
# Only fields that can be modified are shown. The original resource
# with all of its fields is reproduced in the comment section at the
# bottom of this document.

description: ''
healthChecks:
- https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/healthChecks/[HEALTH_CHECK]
port: 80
portName: [PORT_NAME]
protocol: [PROTOCOL]
timeoutSec: 30
connectionDraining:
  drainingTimeoutSec: [CONNECTION_TIMEOUT_SEC]

API

인스턴스를 만들거나 업데이트할 때 API에서 연결 드레이닝을 사용 설정하려면 해당 API URI에 요청을 수행하고 요청 본문에 connectionDraining 필드를 포함합니다. 예를 들어 새로운 백엔드 서비스를 만들려면 다음 URI로 POST 요청을 수행합니다.

HTTP(S) 또는 SSL 프록시 부하 분산의 경우 다음을 사용하세요.

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/backendServices

내부 부하 분산의 경우 다음을 사용하세요.

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/region/[REGION]/backendServices

{  "healthChecks": [
     "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/healthChecks/[HEALTH_CHECK_NAME]"
    ],
   "name": "[BACKEND_SERVICE]",
   "port": 80,
   "portName": "[PORT_NAME]",
   "protocol": "[PROTOCOL]",
   "timeoutSec": 30,
   "connectionDraining": {
     "drainingTimeoutSec": [CONNECTION_TIMEOUT_SECS]
   }
}

각 매개변수는 다음과 같습니다.

  • [PROJECT_ID]는 이 요청의 프로젝트 ID입니다.
  • [BACKEND_SERVICE]는 이 요청의 백엔드 서비스입니다.
  • [CONNECTION_TIMEOUT_SECS]는 인스턴스 그룹에서 인스턴스가 삭제될 때까지 대기해야 하는 시간으로, 1~3600초(포함)입니다. 이 제한 시간은 백엔드 서비스에 속하는 모든 인스턴스 그룹에 적용됩니다.

다음 단계

백엔드 서비스에 대한 일반적인 내용은 백엔드 서비스를 참조하세요.

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...