오픈소스 Apache Kafka 주제에서 Managed Service for Apache Kafka로 데이터를 이동해야 하는 경우 Dataflow 템플릿을 사용하면 됩니다. Google Cloud 콘솔, REST API 또는 Google Cloud CLI를 사용할 수 있습니다. Kafka 주제의 메시지는 AVRO 또는 JSON 스키마와 인코딩을 사용하여 게시해야 합니다.
이 문서에서는 Google Cloud 콘솔을 사용하여 Kafka to Kafka Dataflow 템플릿을 구성하는 방법을 설명합니다.
Google Cloud 개 제품 사용됨
Kafka to Kafka Dataflow 템플릿은 다음 청구 가능한 Google Cloud 제품을 사용합니다. 가격 계산기를 사용하여 예상 사용량을 기준으로 예상 비용을 산출합니다.
- Dataflow: Dataflow는 완전 관리형 데이터 처리 서비스입니다. Kafka to Kafka Dataflow 템플릿은 Dataflow를 활용하여 외부 Kafka 주제에서 데이터를 읽고 Managed Service for Apache Kafka 주제에 쓰는 파이프라인을 만듭니다. Dataflow의 자동 확장 및 자체 복구 기능을 사용하면 파이프라인이 안정적이고 효율적으로 실행됩니다.
- Cloud Storage: Cloud Storage는 객체 스토리지를 제공합니다. 외부 Kafka 소스에 TLS 인증을 사용하는 경우에만 사용됩니다. TLS 인증서가 포함된 키 저장소 및 신뢰 저장소 파일을 Cloud Storage에 저장하고 Dataflow 파이프라인이 Cloud Storage에서 액세스합니다.
- Secret Manager: Secret Manager는 보안 비밀 및 사용자 인증 정보 관리 서비스입니다.외부 Kafka 소스에 TLS 또는 SASL_PLAIN 인증을 선택한 경우에만 제품이 사용됩니다. 사용자 이름, 비밀번호, 인증서와 같은 인증 사용자 인증 정보를 저장합니다. 이 사용자 인증 정보는 외부 Kafka 클러스터에 안전하게 연결하는 데 사용됩니다.
또한 이 솔루션은 Managed Service for Apache Kafka도 사용합니다.
- Managed Service for Apache Kafka: Apache Kafka를 실행하는 데 도움이 되는 Google Cloud 서비스입니다. 이 솔루션에서는 Managed Service for Apache Kafka가 데이터의 대상으로 사용됩니다. 외부 Kafka 주제에서 Managed Service for Apache Kafka 클러스터 내 주제로 데이터를 스트리밍합니다. Managed Service for Apache Kafka 가격 책정에 대한 자세한 내용은 가격 책정 가이드를 참고하세요.
시작하기 전에
Kafka to Kafka Dataflow 템플릿을 실행하기 전에 다음을 완료해야 합니다.
Managed Service for Apache Kafka 클러스터 및 주제를 만듭니다.
클러스터와 주제를 만드는 한 가지 방법은 Apache Kafka용 관리형 서비스 빠른 시작을 따르는 것입니다.
주제에 Avro 레코드가 포함된 경우 추가 리소스 요구사항은 Kafka 메시지 형식 구성을 참고하세요.
다음 Google Cloud API를 사용 설정합니다.
Dataflow
Secret Manager (외부 Kafka 소스에 SASL_PLAIN 또는 TLS 인증을 사용하는 경우에만 해당)
Cloud Storage (외부 Kafka 소스에 TLS 인증을 사용하는 경우에만 해당)
gcloud services enable dataflow.googleapis.com \ secretmanager.googleapis.com storage.googleapis.com
SASL_PLAIN 인증 리소스 준비
외부 Kafka 소스에 SASL_PLAIN 인증 사용자 인증 정보를 사용하려는 경우 이 섹션의 안내를 따르세요.
Google Cloud 콘솔에서 Secret Manager로 이동합니다.
Kafka 사용자 이름용 보안 비밀과 Kafka 비밀번호용 보안 비밀 등 두 개의 보안 비밀을 만듭니다.
각 보안 비밀에 대해 'kafka-username', 'kafka-password'와 같은 설명적인 이름을 제공합니다.
필수 역할 및 권한을 비롯하여 보안 비밀을 만드는 방법에 대한 자세한 내용은 보안 비밀 만들기를 참고하세요.
TLS 인증 리소스 준비
외부 Kafka 소스에 TLS 인증 사용자 인증 정보를 사용하려는 경우 이 섹션의 안내를 따르세요.
Google Cloud 콘솔에서 Secret Manager로 이동합니다.
키 저장소 파일 (JKS 형식)에 Kafka 클러스터로 클라이언트를 인증하는 데 필요한 TLS 인증서와 비공개 키가 포함되어 있는지 확인합니다.
트러스트 저장소 파일 (JKS 형식)에 Kafka 브로커의 ID를 확인하는 데 필요한 신뢰할 수 있는 인증서가 포함되어 있는지 확인합니다.
키 저장소 및 신뢰 저장소 파일을 Cloud Storage에 업로드합니다.
Cloud Storage에 파일을 업로드하는 방법에 대한 자세한 내용은 파일 시스템에서 객체 업로드를 참고하세요.
TLS 구성에 사용할 보안 비밀 3개를 만듭니다.
트러스트 저장소 비밀번호: 트러스트 저장소 파일에 액세스하는 데 사용되는 비밀번호를 저장합니다.
키 저장소 비밀번호: 키 저장소 파일에 액세스하는 데 사용되는 비밀번호를 저장합니다.
비공개 키 비밀번호: 키 저장소 파일 내의 비공개 키에 액세스하는 데 사용되는 비밀번호를 저장합니다.
각 보안 비밀에 설명적인 이름을 제공합니다.
필수 역할 및 권한을 비롯하여 보안 비밀을 만드는 방법에 대한 자세한 내용은 보안 비밀 만들기를 참고하세요.
Dataflow 작업자 서비스 계정에 관리형 Kafka 클라이언트 역할 부여
Dataflow 작업을 Apache Kafka용 관리형 서비스에 연결하려면 Dataflow 작업자 서비스 계정에 특정 권한을 부여해야 합니다. 이 서비스 계정은 Dataflow 작업의 모든 작업자 VM에 사용되는 ID이며 이러한 VM에서 이루어진 모든 요청은 이 계정을 사용합니다.
Kafka 리소스에 대한 액세스를 허용하려면 Dataflow 작업자 서비스 계정에 roles/managedkafka.client 역할을 부여해야 합니다. 이 역할에는 연결을 설정하는 데 필요한 managedkafka.clusters.connect 권한이 포함되어 있습니다.
작업자 서비스 계정에 대한 자세한 내용은 Google Cloud의 파이프라인 보안 및 권한을 참고하세요.
Dataflow 서비스 계정에 관리형 Kafka 클라이언트 역할을 부여하려면 다음 단계를 따르세요.
콘솔
- Google Cloud 콘솔에서 IAM 페이지로 이동합니다.
IAM으로 이동 - 프로젝트가 Managed Service for Apache Kafka 클라이언트가 액세스할 소비자 프로젝트로 설정되어 있는지 확인합니다.
- 액세스 권한 부여를 클릭합니다.
- 새 페이지의 주 구성원 추가에 사용 중인 Dataflow 작업자 서비스 계정의 이메일 주소를 입력합니다.
- 역할 할당에서 관리형 Kafka 클라이언트 역할을 선택합니다.
- 저장을 클릭합니다.
gcloud CLI
-
Google Cloud 콘솔에서 Cloud Shell을 활성화합니다.
Google Cloud 콘솔 하단에서 Cloud Shell 세션이 시작되고 명령줄 프롬프트가 표시됩니다. Cloud Shell은 Google Cloud CLI가 사전 설치된 셸 환경으로, 현재 프로젝트의 값이 이미 설정되어 있습니다. 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.
-
gcloud projects add-iam-policy-binding명령어를 실행합니다.gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:SERVICE_ACCOUNT_EMAIL \ --role roles/managedkafka.client
다음을 바꿉니다.
-
PROJECT_ID는 프로젝트 ID입니다.
-
SERVICE_ACCOUNT_EMAIL은 Dataflow 작업자 서비스 계정의 이메일 주소입니다.
-
Kafka to Kafka Dataflow 템플릿 실행
콘솔의 클러스터 세부정보 페이지에서 Kafka to Kafka Dataflow 템플릿을 실행할 수 있습니다.
-
Google Cloud 콘솔에서 클러스터 페이지로 이동합니다.
프로젝트에서 생성한 클러스터가 나열됩니다.
- 클러스터 세부정보 페이지를 보려면 클러스터 이름을 클릭합니다.
- 클러스터 세부정보 페이지에서 데이터 가져오기를 클릭합니다.
템플릿 'Kafka to Kafka'를 사용하여 Dataflow 작업 만들기 페이지가 열립니다.
다음 섹션에 포함된 정보에 따라 템플릿의 필드를 구성합니다.
작업 이름 입력
작업 이름 필드에 Dataflow 작업의 이름을 입력합니다.
이름은 프로젝트에서 현재 실행 중인 모든 작업 중에서 고유해야 합니다.
파이프라인의 리전 엔드포인트 선택
리전 엔드포인트 필드에서 리전 간 데이터 전송 요금을 최소화하도록 Kafka 클러스터의 위치로 리전 엔드포인트를 설정합니다.
Dataflow 작업자는 Kafka 클러스터의 리전과 독립적으로 실행할 수 있습니다. 하지만 Kafka 클러스터의 리전 외부에서 작업자를 실행하면 리전 간 이그레스 비용이 발생합니다.
클러스터의 위치를 확인하려면 Managed Service for Apache Kafka 클러스터 나열의 단계를 따르세요.
소스 구성
소스에서 자체 관리형 또는 외부 Kafka를 선택합니다.
Kafka 부트스트랩 서버에 외부 Kafka 클러스터 부트스트랩 서버의 주소를 입력합니다.
소스 Kafka 부트스트랩 서버 및 주제에 외부 Kafka 부트스트랩 서버 및 주제 주소를 입력합니다.
Kafka 소스 인증 모드의 경우 제공된 선택사항 중에서 인증 모드를 선택합니다. 외부 Kafka의 경우 다음 세 가지 옵션이 있습니다.
SASL_PLAIN
TLS
없음
SASL_PLAIN Kafka 소스 인증
이 섹션을 진행하기 전에 SASL_PLAIN 인증 리소스 준비를 참고하세요.
Kafka 소스 인증으로 SASL_PLAIN을 선택한 경우 다음 추가 필드를 입력합니다.
Kafka SASL/PLAIN 사용자 이름의 보안 비밀 버전 ID에 사용자 이름의 버전 ID를 입력합니다.
Kafka SASL/PLAIN 비밀번호의 보안 비밀 버전 ID에 비밀번호의 버전 ID를 입력합니다.
TLS Kafka 소스 인증용
이 섹션을 진행하기 전에 TLS 인증 리소스 준비를 참고하세요.
Kafka 소스 인증으로 TLS를 선택한 경우 다음 추가 필드를 입력합니다.
키 저장소 위치에 Java 키 저장소 (JKS) 파일의 Cloud Storage 경로를 입력합니다. 이 파일에는 파이프라인을 Kafka 클러스터로 인증하는 데 필요한 TLS 인증서와 비공개 키가 포함되어 있습니다. 예: gs://your-bucket/keystore.jks
Truststore 파일 위치 필드에 Java Truststore (JKS) 파일의 Cloud Storage 경로를 입력합니다. 이 파일에는 Kafka 브로커의 ID를 확인하는 데 사용되는 신뢰할 수 있는 인증서가 포함되어 있습니다.
트러스트 저장소 비밀번호의 보안 비밀 버전 ID에 트러스트 저장소 JKS 파일에 액세스하는 데 사용할 비밀번호를 저장하는 Secret Manager 보안 비밀 ID를 입력합니다.
키 저장소 비밀번호의 보안 비밀 버전 ID에 JKS 파일에 액세스하는 비밀번호를 저장하는 Secret Manager 보안 비밀 ID를 제공합니다.
비공개 키 비밀번호의 보안 비밀 버전 ID 필드에 키 저장소 내 비공개 키에 별도의 비밀번호가 있는 경우 해당 비밀번호가 포함된 Secret Manager 보안 비밀 ID를 입력합니다.
Kafka에 오프셋 커밋
이 설정은 파이프라인이 외부 Kafka 소스의 어떤 메시지가 처리되었는지 추적하는 방식을 제어합니다. 이 설정을 사용 설정하면 파이프라인이 메시지를 안정적으로 처리하고 다시 시작할 때 오류를 방지할 수 있습니다.
Kafka는 오프셋을 사용하여 메시지를 추적합니다. 이를 각 메시지 스트림에서 파이프라인의 위치를 기억하는 북마크로 생각하세요. 이 설정을 사용 설정하면 파이프라인이 Kafka에 북마크를 정기적으로 저장합니다. 오류, 업데이트 또는 계획된 유지보수로 인해 파이프라인이 다시 시작되면 저장된 북마크를 사용하여 중단된 지점부터 다시 시작할 수 있습니다. 이렇게 하면 메시지를 누락하거나 동일한 메시지를 실수로 두 번 처리하는 것을 방지할 수 있습니다.
Kafka에 오프셋 커밋을 사용 설정합니다.
소비자 그룹 ID를 제공합니다. Kafka에서 파이프라인을 식별하는 이름입니다.
기본 Kafka 시작 오프셋에서 다음 중 하나를 선택합니다.
Earliest: Kafka 주제의 시작부터 메시지를 처리합니다.
최신: 최신 메시지부터 메시지를 처리합니다.
대상 위치 구성
대상으로 Managed Service for Apache Kafka를 선택합니다.
Kafka 클러스터에서 이미 만든 클러스터를 선택합니다.
기존 주제를 선택하거나 새 주제를 만들 수 있습니다.
Kafka 대상 인증 방법에서 애플리케이션 기본 사용자 인증 정보를 선택합니다.
암호화 구성
기본적으로 저장 데이터와 전송 중 데이터는 모두Google-owned and Google-managed encryption key에 의해 암호화됩니다. 고객 관리 암호화 키(CMEK)가 있는 경우 자체 키를 선택할 수 있습니다. CMEK를 구성하는 방법에 대한 자세한 내용은 메시지 암호화 구성을 참고하세요.
네트워킹 구성
Dataflow 템플릿에서 클러스터의 네트워크와 서브네트워크를 지정해야 합니다. 템플릿의 선택적 매개변수 섹션을 사용하면 Dataflow 작업자의 네트워크를 정의할 수 있습니다.
Kafka to Kafka Dataflow 템플릿은 기본적으로 프로젝트의 기본 네트워크에 Dataflow 작업자를 프로비저닝합니다. 외부 Kafka 클러스터가 Dataflow를 통해 Managed Service for Apache Kafka로 데이터를 전송하도록 하려면 Dataflow 작업자가 클러스터의 네트워크에 액세스할 수 있는지 확인하세요.
Kafka 클러스터가 프로젝트의 기본 네트워크에 있는 서브넷에 연결되어 있지 않은 경우 Kafka 클러스터에 프로젝트의 기본 네트워크를 사용하는 것이 좋습니다.
Dataflow 파이프라인으로 네트워킹을 설정하는 방법에 대한 자세한 내용은 다음을 참고하세요.
Dataflow 네트워킹을 구성하는 데 문제가 있는 경우 Dataflow 네트워킹 문제 해결 가이드를 참고하세요.
선택적 Dataflow 매개변수 구성
Dataflow 작업자에 대한 구성의 영향을 아는 경우에만 선택적 Dataflow 매개변수를 구성하세요. 설정이 잘못되면 성능이나 비용에 영향을 줄 수 있습니다. 각 옵션에 대한 자세한 설명은 선택적 매개변수를 참고하세요.
모니터링
Kafka to Managed Service for Apache Kafka용 Dataflow 템플릿은 콘솔 내에서 로그, 측정항목, 오류를 탐색할 수 있는 모니터링 환경을 제공합니다. 이 모니터링 도구 모음은 Dataflow 사용자 인터페이스의 일부로 제공됩니다.
작업 측정항목 탭을 사용하면 맞춤 대시보드를 만들 수 있습니다. Kafka to Managed Service for Apache Kafka 템플릿의 경우 다음을 모니터링하는 작업 측정항목 대시보드를 설정하는 것이 좋습니다.
처리량: 특정 시점에서 처리되는 데이터의 양입니다. 이는 작업을 통한 데이터 흐름을 모니터링하고 잠재적인 성능 문제를 식별하는 데 유용합니다.
자세한 내용은 Dataflow 처리량 모니터링을 참고하세요.
데이터 최신 상태: 데이터 요소의 타임스탬프와 파이프라인에서 이벤트가 처리되는 시간 간의 차이(초)입니다. 이를 통해 성능 및 데이터 소스 병목 현상 또는 빈번한 재시도를 식별할 수 있습니다.
자세한 내용은 다음을 참고하세요. Dataflow 최신 상태 모니터링
백로그: 처리 대기 중인 바이트 수입니다. 이 정보는 자동 확장 결정에 영향을 미칩니다.
Dataflow 모니터링에 대한 자세한 내용은 Dataflow 모니터링 문서를 참고하세요.
문제 해결
Dataflow 파이프라인에 성능 문제가 발생하면 Dataflow에서 포괄적인 문제 해결 및 진단 도구 세트를 제공합니다.
다음은 두 가지 일반적인 시나리오와 각 문제 해결 가이드입니다.
Dataflow 파이프라인 디버깅에 대한 일반적인 개요는 Dataflow 파이프라인 문제 해결 및 디버깅을 참고하세요.