기본적으로 Dataflow 스트리밍 작업은 일부 백엔드 리소스를 단일 Compute Engine 영역에서 실행하므로 영역 서비스 중단 중에 데이터가 손실될 수 있습니다. 스트리밍 고가용성은 리전의 여러 영역에 백엔드 상태를 복제하여 Streaming Engine 작업을 리전 리소스로 만듭니다. 스트리밍 고가용성을 사용 설정하면 단일 영역 오류로 인해 스트리밍 작업이 중단되지 않습니다.
지원 및 제한 사항
스트리밍 고가용성에는 다음과 같은 요구사항 및 제한사항이 있습니다.
- Streaming Engine 필요: 작업은 Streaming Engine을 사용하는 스트리밍 파이프라인이어야 합니다.
- 리전 작업자 배치 필요: Compute Engine 작업자는
리전
배치를 사용해야 합니다.
작업에 특정 영역의 작업자만 있고 해당 영역을 사용할 수 없게 되면 백엔드 상태가 복제되더라도 작업자를 사용할 수 없으므로 작업을 처리할 수 없습니다. 따라서 스트리밍 고가용성이 사용 설정된 경우 Dataflow는 특정 작업자 영역 (예:
--workerZone,--worker_zone또는--zone)을 지정하는 작업을 거부합니다. - 작업 생성 시에만 구성됨: 새 작업을 시작할 때만 스트리밍 고가용성을 사용 설정할 수 있습니다. 인플레이스
파이프라인 업데이트를 실행할 때는 스트리밍
고가용성을 사용 설정하거나 사용 중지할 수 없습니다. 실행 중인 파이프라인에서 이
설정을 변경하려면
자동 중지 및 교체
업데이트를 실행하거나
파이프라인을 중지 또는 드레인하고
--update플래그 없이 새 작업을 시작합니다. - 추가 워터마크 지연 시간: 스트리밍 고가용성을 사용 설정하면 데이터가 처리되고 영역 간에 복제된 후에만 작업의 워터마크가 진행됩니다. 워터마크가 영역 간 복제를 기다리므로 몇 초의 추가 워터마크 지연 시간이 발생할 수 있습니다.
- 리소스 기반 결제 필요: 스트리밍 고가용성 작업은 항상 리소스 기반 결제를 사용하며 데이터 처리 결제를 사용하지 않습니다. 작업에서 리소스 기반 결제를 사용하더라도 미리보기 기간에는 스트리밍 고가용성에 대한 추가 요금이 부과되지 않습니다. 자세한 내용은 가격 책정을 참조하세요.
스트리밍 고가용성 사용 설정
새
Dataflow 스트리밍 작업을 시작할 때 스트리밍 고가용성을 사용 설정하려면 requires_high_availability
서비스 옵션을 설정합니다.
Java
--dataflowServiceOptions=requires_high_availability
Python
--dataflow_service_options=requires_high_availability
Go
--dataflow_service_options=requires_high_availability
gcloud
템플릿을 실행할 때
gcloud dataflow jobs run 명령어를 사용하거나 Flex 템플릿을 실행할 때
gcloud dataflow flex-template
run 명령어를 사용하여
--enable-streaming-engine 및 --additional-experiments 플래그를 포함합니다.
--enable-streaming-engine \
--additional-experiments=requires_high_availability
예를 들어 스트리밍 고가용성이 사용 설정된 Flex 템플릿을 실행하려면 다음 단계를 따르세요.
gcloud dataflow flex-template run JOB_NAME \
--project=PROJECT_ID \
--template-file-gcs-location=TEMPLATE_LOCATION \
--region=REGION \
--parameters=KEY_1=VALUE_1,KEY_2=VALUE_2 \
--enable-streaming-engine \
--additional-experiments=requires_high_availability
다음 값을 바꿉니다.
JOB_NAME: Dataflow 작업의 이름PROJECT_ID: Google Cloud 프로젝트 IDTEMPLATE_LOCATION: Flex 템플릿 사양 파일의 Cloud Storage 경로REGION: 작업이 실행되는 리전KEY_1=VALUE_1,KEY_2=VALUE_2: Flex 템플릿의 키-값 매개변수 쌍
콘솔
Google Cloud 콘솔에서 템플릿 또는 Flex 템플릿을 실행할 때 스트리밍 고가용성을 사용 설정하려면 다음 단계를 따르세요.
콘솔 Google Cloud 에서 Dataflow 작업 페이지로 이동합니다.
템플릿에서 작업 만들기 를 클릭합니다.
Dataflow 템플릿 메뉴에서 실행할 템플릿을 선택합니다.
선택적 매개변수 를 펼칩니다.
추가 실험 필드에
requires_high_availability를 입력합니다.작업 실행 을 클릭합니다.
REST
Flex 템플릿을 실행할 때는
RuntimeEnvironment
객체 또는
FlexTemplateRuntimeEnvironment
객체의 additionalExperiments 필드를 사용합니다.
{
"additionalExperiments": ["requires_high_availability"]
}
장애 조치 동작
영역 장애 조치가 드물게 발생하면 작업이 새 기본 상태로 전환되고 다른 영역에 새 보조 복제본을 설정하는 동안 처리량이 몇 초에서 몇 분 정도 감소할 수 있습니다. 장애 조치는 데이터를 삭제하지 않고 자동으로 발생하며 사용자가 취해야 할 조치는 없습니다. 고가용성 모니터링에 설명된 측정항목을 사용하여 장애 조치 이벤트를 추적할 수 있습니다.
소스 및 싱크
Dataflow 작업을 리전 리소스로 구성해도 작업의 소스와 싱크가 자동으로 리전 또는 전역이 되지는 않습니다. 리전 소스와 싱크는 모두 단일 영역에 종속되지 않으므로 스트리밍 고가용성과 잘 작동합니다. 각 소스 또는 싱크의 가용성은 해당 서비스의 구성에 따라 달라집니다.
- Pub/Sub, BigQuery, Google Cloud Managed Service for Apache Kafka와 같은 많은 Google Cloud 소스와 싱크는 기본적으로 리전 또는 전역 가용성을 제공합니다.
- 자체 호스팅 Apache Kafka 또는 Apache Iceberg와 같은 커스텀 또는 자체 관리형 소스와 싱크를 사용하는 경우 리전 가용성을 개별적으로 구성하고 유지해야 합니다.
고가용성 모니터링
dataflow.googleapis.com/job/high_availability_mode 측정항목을 사용하여 Cloud Monitoring에서 작업의 고가용성 상태를 모니터링할 수 있습니다. 이 불리언 게이지 측정항목에는 작업의 현재 상태에 대해 true이고 다른 상태에 대해 false인 status 라벨이 포함됩니다. status 라벨에는 다음과 같은 가능한 값이 있습니다.
Disabled: 이 작업에 스트리밍 고가용성이 사용 설정되어 있지 않습니다.Highly Available: 스트리밍 고가용성이 사용 설정되어 있고 백엔드 상태가 영역 간에 복제됩니다.Establishing High Availability: 백엔드 상태가 일시적으로 복제되지 않지만(예: 영역 오류 후) 새 보조 복제본이 생성되고 있습니다.
스트리밍 고가용성을 사용 설정하면 표준 Dataflow 워터마크 측정항목은 데이터가 처리되고 영역 간에 복제된 후에만 진행됩니다. 측정항목 보기에 대한 자세한 내용은 Monitoring 사용을 참조하세요.
가격 책정
미리보기 기간에는 스트리밍 고가용성 사용에 대한 추가 요금이 부과되지 않습니다.
정식 버전 (GA) 시에는 복제 사용량이 기본 상태 사용량과 동일한 요율로 청구됩니다. 상태 사용량은 Streaming Engine 컴퓨팅 단위의 일부로 계량됩니다.
다음 단계
- Dataflow 리전 및 리전 배치에 대해 자세히 알아보세요.
- Streaming Engine에 대해 자세히 알아보세요.
- Monitoring으로 파이프라인을 모니터링하세요.