연결 드레이닝은 가상 머신 (VM) 인스턴스가 인스턴스 그룹에서 삭제되거나 엔드포인트가 범위 내 영역에 있는 네트워크 엔드포인트 그룹 (NEG)에서 삭제될 때 진행 중인 기존 요청이 완료될 수 있도록 시간을 제공하는 프로세스입니다.
이 페이지의 정보는 인스턴스 그룹과 범위 내 영역에 있는 다음 유형의 NEG에만 적용됩니다.
연결 드레이닝을 사용 설정하려면 백엔드 서비스에서 연결 드레이닝 제한 시간을 설정합니다. 제한 시간은 0~3,600초여야 합니다.
지정된 제한 시간 동안 삭제된 VM 또는 엔드포인트에 대한 기존 요청에 완료할 시간이 제공됩니다. 부하 분산기는 삭제된 VM 또는 엔드포인트로 새 연결을 전송하지 않습니다. 제한 시간에 도달하면 부하 분산기는 삭제된 VM 또는 엔드포인트로의 모든 트래픽 전송을 중지합니다.
다음을 수행할 때마다 연결 드레이닝이 시작됩니다.
- 인스턴스 그룹에서 VM을 수동으로 삭제하는 경우
resize()
,deleteInstances()
,recreateInstances()
또는abandonInstances()
를 호출하여 관리형 인스턴스 그룹에서 인스턴스를 제거하는 경우- 인스턴스 그룹이 백엔드 서비스에서 삭제되는 경우. 내부 패스 스루 네트워크 부하 분산기에서는 지원되지 않습니다.
- Google Cloud에서 자동 확장의 일부로 인스턴스를 삭제하는 경우
- 관리형 인스턴스 그룹 업데이터를 사용하여 관리형 인스턴스 그룹 업데이트를 수행하는 경우
- 수동으로 영역 NEG에서 엔드포인트를 삭제하는 경우
지정된 제한 시간이 지난 후에 인스턴스가 종료될 때까지 최대 60초가 걸릴 수 있습니다.
같은 인스턴스 그룹 또는 NEG를 공유하는 여러 백엔드 서비스에서 연결 드레이닝을 사용 설정할 경우 가장 큰 시간 제한 시간 값이 사용됩니다. 예를 들어 동일한 인스턴스 그룹 또는 영역 NEG가 백엔드 서비스 두 개의 백엔드라고 가정해 보겠습니다. 여기서 한 백엔드 서비스의 연결 드레이닝 제한 시간은 100초이고 다른 백엔드 서비스의 연결 드레이닝 제한 시간은 200초입니다. 기존 연결은 Google Cloud가 연결을 종료하기 전에 약 200초 여유 시간을 허용하므로 Google Cloud는 효과적인 연결 드레이닝 제한 시간으로 200초를 사용합니다. 백엔드가 관리형 인스턴스 그룹이면 인스턴스를 삭제하는 작업은 최소 200초 이상 지연됩니다.
다음은 연결 드레이닝에 관한 사양 목록입니다.
연결 드레이닝은 다음 부하 분산기에 포함되는 백엔드 서비스에 사용할 수 있습니다.
- 외부 애플리케이션 부하 분산기
- 내부 애플리케이션 부하 분산기
- 외부 프록시 네트워크 부하 분산기
- 내부 프록시 네트워크 부하 분산기
- 내부 패스 스루 네트워크 부하 분산기
- 백엔드 서비스 기반 외부 패스 스루 네트워크 부하 분산기
내부 패스 스루 네트워크 부하 분산기와 외부 패스 스루 네트워크 부하 분산기는 모두 TCP, UDP (미리보기), 기타 비 TCP 프로토콜의 연결 드레이닝을 지원합니다.
연결 드레이닝은 Cloud Service Mesh 배포의 일부인 백엔드 서비스에도 사용 가능합니다.
연결 드레이닝 제한 시간이 설정되고 인스턴스가 인스턴스 그룹에서 삭제되거나 엔드포인트가 영역별 NEG에서 삭제되면 Google Cloud 부하 분산기와 Cloud Service Mesh는 다음과 같은 방식으로 작동합니다.
삭제된 인스턴스 또는 엔드포인트로 새 연결이 전송되지 않습니다.
삭제된 인스턴스 또는 엔드포인트에 대한 기존 연결을 지원하는 활성 세션은 연결 드레이닝 제한 시간이 경과할 때까지 지속될 수 있습니다. 제한 시간이 지나면 Google Cloud는 삭제된 인스턴스 또는 엔드포인트의 기존 연결을 종료합니다.
연결 드레이닝 제한 시간을 설정하지 않거나 0으로 설정하면 Google Cloud는 삭제된 인스턴스 또는 엔드포인트의 기존 연결을 최대한 빨리 종료합니다.
연결 풀링을 사용하는 경우 이전에 설정된 연결을 사용하는 새 요청이 드레이닝되는 VM에서 여전히 수신되고 있으므로 VM이 결국 연결이 끊어지면 연결 오류가 발생할 수 있습니다.
연결 제거를 사용 설정하려면 다음 단계를 완료하세요.
콘솔
부하 분산기 업데이트
- Google Cloud 콘솔의 부하 분산 페이지로 이동합니다.
부하 분산으로 이동 - 부하 분산기의 수정 을 클릭하거나 새 부하 분산기를 만듭니다.
- 백엔드 구성을 클릭합니다.
- 백엔드 서비스 하단에서 고급 구성을 클릭합니다.
- 연결 드레이닝 제한 시간 필드에
0
~3600
사이의 값을 입력합니다.0
으로 설정하면 연결 드레이닝이 중지됩니다.
Cloud Service Mesh 업데이트
- Google Cloud 콘솔에서 Cloud Service Mesh 페이지로 이동합니다.
Cloud Service Mesh로 이동 - 서비스의 이름을 클릭합니다.
- 서비스 하단에서 고급 구성을 클릭합니다.
- 연결 드레이닝 제한 시간 필드에
0
~3600
사이의 값을 입력합니다.0
으로 설정하면 연결 드레이닝이 중지됩니다. - 저장을 클릭합니다.
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에 적용됩니다.
다음 단계
백엔드 서비스에 대한 일반 정보는 백엔드 서비스 개요를 참조하세요.