연결 드레이닝 사용 설정

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

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

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

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

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

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

사양

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

  • 연결 드레이닝은 Traffic Director 배포의 일부인 백엔드 서비스에도 사용할 수 있습니다.

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

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

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

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

연결 드레이닝 사용 설정

Console

부하 분산기 업데이트

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

Traffic Director 업데이트

  1. Google Cloud Console에서 Traffic Director 페이지로 이동합니다.
    Traffic Director로 이동
  2. 서비스의 이름을 클릭합니다.
  3. 서비스 하단에서 고급 구성을 클릭합니다.
  4. 연결 드레이닝 제한 시간 필드에 0~3600 사이의 값을 입력합니다. 0으로 설정하면 연결 드레이닝이 중지됩니다.
  5. 저장을 클릭합니다.

gcloud

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

  • 기존 외부 HTTP(S) 부하 분산기, SSL 프록시 부하 분산기, TCP 프록시 부하 분산기 또는 Traffic Director 배포:

    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 프록시 부하 분산기, Traffic Director:

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는 부하 분산기 또는 Traffic Director 배포가 포함된 프로젝트 ID입니다.
  • BACKEND_SERVICE는 부하 분산기 또는 Traffic Director 배포에서 사용되는 백엔드 서비스입니다.
  • CONNECTION_TIMEOUT_SECS는 인스턴스 또는 엔드포인트가 인스턴스 그룹 또는 NEG에서 삭제될 때까지 대기해야 하는 시간(0초~3600초)입니다. 이 제한 시간은 백엔드 서비스에서 참조하는 모든 인스턴스 그룹 또는 NEG에 적용됩니다.

다음 단계

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