연결 드레이닝 사용 설정

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

이 페이지의 정보는 인스턴스 그룹과 범위 내 영역에 있는 다음 유형의 NEG에만 적용됩니다.

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

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

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

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

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

다음은 연결 드레이닝에 대한 사양 목록입니다.

연결 드레이닝을 사용 설정하려면 다음 단계를 완료합니다.

콘솔

부하 분산기 업데이트

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

Cloud Service Mesh 업데이트

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

gcloud

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

  • 기존 전역 또는 리전 간 부하 분산기의 경우:

    gcloud compute backend-services update BACKEND_SERVICE \
        --global \
        --connection-draining-timeout=CONNECTION_TIMEOUT_SECS
    
  • 기존 리전 부하 분산기의 경우:

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

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

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

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

API

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

기존 전역 또는 리전 간 부하 분산기의 경우:

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

기존 리전 부하 분산기의 경우:

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

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

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

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

다음 단계

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