연결 드레이닝 사용 설정

연결 드레이닝은 VM이 인스턴스 그룹에서 삭제되거나 엔드포인트가 영역 NEG에서 삭제될 때 진행 중인 기존 요청에 완료될 시간을 제공하는 프로세스입니다.

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

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

다음을 수행할 때마다 연결 드레이닝이 시작됩니다.

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

같은 인스턴스 그룹 또는 NEG를 공유하는 여러 백엔드 서비스에서 연결 드레이닝을 사용 설정할 경우 가장 큰 시간 제한 시간 값이 사용됩니다. 예를 들어 동일한 인스턴스 그룹 또는 영역 NEG가 백엔드 서비스 두 개의 백엔드라고 가정해 보겠습니다. 여기서 한 백엔드 서비스의 연결 드레이닝 제한 시간은 100초이고 다른 백엔드 서비스의 연결 드레이닝 제한 시간은 200초입니다. 기존 연결은 Google Cloud가 연결을 종료하기 전에 약 200초 여유 시간을 허용하므로 Google Cloud는 효과적인 연결 드레이닝 제한 시간으로 200초를 사용합니다. 백엔드가 관리형 인스턴스 그룹이면 인스턴스를 삭제하는 작업은 최소 200초 이상 지연됩니다.

사양

  • 연결 드레이닝은 다음 부하 분산기에 포함되는 백엔드 서비스에 사용할 수 있습니다.

  • 연결 드레이닝 제한 시간이 설정되고 인스턴스 그룹에서 인스턴스가 삭제되거나 영역 NEG에서 엔드포인트가 삭제되면 Google Cloud 부하 분산기는 다음과 같은 방식으로 작동합니다.

    • 삭제된 인스턴스 또는 엔드포인트로 새 연결이 전송되지 않습니다.

    • 삭제된 인스턴스 또는 엔드포인트에 대한 기존 연결을 지원하는 활성 TCP 세션은 연결 드레이닝 제한 시간이 경과할 때까지 지속될 수 있습니다.

    • 연결 드레이닝 제한 시간을 설정하지 않으면 Google Cloud는 삭제된 인스턴스 또는 엔드포인트의 기존 연결을 최대한 빨리 종료합니다. 연결 드레이닝 제한 시간을 0으로 설정해도 기존 연결을 최대한 빨리 종료합니다.

연결 드레이닝 사용 설정

Console

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

gcloud

새 백엔드 서비스 또는 기존 백엔드 서비스에서 --connection-draining-timeout 플래그를 사용하여 연결 드레이닝을 사용 설정합니다. 다음 예시에서는 연결 드레이닝 제한 시간을 변경하는 방법을 보여줍니다.

  • 기존 외부 HTTP(S) 부하 분산기, SSL 프록시 부하 분산기 또는 TCP 프록시 부하 분산기의 경우 다음을 실행합니다.

    gcloud compute backend-services update BACKEND_SERVICE \
        --global \
        --connection-draining-timeout=CONNECTION_TIMEOUT_SECS
    
  • 기존 내부 TCP/UDP 부하 분산기 또는 내부 HTTP(S) 부하 분산기의 경우 다음을 실행합니다.

    gcloud compute backend-services update BACKEND_SERVICE \
        --region=REGION \
        --connection-draining-timeout=CONNECTION_TIMEOUT_SECS
    

자리표시자를 유효한 값으로 바꿉니다.

  • BACKEND_SERVICE: 부하 분산기의 백엔드 서비스입니다.
  • CONNECTION_TIMEOUT_SECS: 인스턴스 또는 엔드포인트에 대한 기존 연결이 종료되기 전 대기하는 시간(초)입니다(0~3600초). 0으로 설정하면 연결 드레이닝이 사용 중지됩니다. 연결 드레이닝 제한 시간은 백엔드 서비스의 모든 백엔드에 적용됩니다.

    gcloud compute backend-services edit 명령어를 사용하여 기존 백엔드 서비스를 업데이트할 수도 있습니다.

API

인스턴스 또는 엔드포인트를 만들거나 업데이트할 때 API에서 연결 드레이닝을 사용 설정하려면 요청 본문에 connectionDraining 필드가 포함되도록 해당 API URI에 요청합니다. 다음 예시에서는 기존 백엔드 서비스를 수정하여 해당 속성을 설정하는 방법을 보여줍니다. 다른 필수 속성에 대한 자세한 내용은 각 부하 분산기 문서를 참조하세요.

외부 HTTP(S) 부하 분산기, SSL 프록시 부하 분산기, TCP 프록시 부하 분산기:

PATCH https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices

내부 TCP/UDP 부하 분산기 및 내부 HTTP(S) 부하 분산기:

PATCH https://www.googleapis.com/compute/v1/projects/PROJECT_ID/region/REGION/backendServices

{
   "name": "BACKEND_SERVICE",
   "connectionDraining": {
     "drainingTimeoutSec": CONNECTION_TIMEOUT_SECS
   }
}

각 항목의 의미는 다음과 같습니다.

  • PROJECT_ID는 부하 분산기가 포함된 프로젝트 ID입니다.
  • BACKEND_SERVICE는 부하 분산기에서 사용하는 백엔드 서비스입니다.
  • CONNECTION_TIMEOUT_SECS는 인스턴스 또는 엔드포인트가 인스턴스 그룹 또는 NEG에서 삭제되기 전까지 대기하는 시간(초)입니다(0~3,600초). 이 제한 시간은 백엔드 서비스에 포함되는 모든 인스턴스 그룹 또는 NEG에 적용됩니다.

다음 단계

백엔드 서비스에 대한 일반 정보는 백엔드 서비스 개요를 참조하세요.