기타

Kafka Connect의 구성(config) 백업

ipxy 2025. 4. 18. 15:43
728x90

 

✅ 1. Kafka Connect 자체 설정 파일 백업

Kafka Connect는 기본적으로 다음 설정 파일들을 가지고 있습니다 (독립 실행 시 기준):

파일 설명
connect-distributed.properties 분산 모드 설정 (주로 이걸 사용함)
connect-standalone.properties 독립 모드 설정
worker.properties (또는 포함됨) 워커 설정 포함
log4j.properties 로그 설정 파일
커넥터 JARs /usr/share/java/ 또는 ${CONNECT_PLUGIN_PATH} 디렉토리 아래 커스텀 플러그인들
mkdir -p ~/kafka-connect-backup/config
cp /path/to/connect-distributed.properties ~/kafka-connect-backup/config/
cp /path/to/log4j.properties ~/kafka-connect-backup/config/
cp -r /path/to/custom-connectors ~/kafka-connect-backup/plugins/

✅ 2. Kafka Connect 커넥터 설정(등록된 connector config) 백업

Kafka Connect에 등록된 커넥터들은 REST API를 통해 설정되어 있으며, Kafka(내부 토픽)로 저장됩니다. 이건 REST API로 백업해야 합니다.

🔁 모든 커넥터 리스트 가져오기

curl http://localhost:8083/connectors

📥 개별 커넥터 설정 백업

curl http://localhost:8083/connectors/my-connector/config > my-connector-config.json

🛠 모든 커넥터 설정 자동 백업 스크립트

#!/bin/bash

CONNECT_URL="http://localhost:8083"
BACKUP_DIR=~/kafka-connect-backup/connector-configs
mkdir -p $BACKUP_DIR

echo "📦 Kafka Connect 커넥터 설정 백업 시작..."

curl -s $CONNECT_URL/connectors | jq -r '.[]' | while read connector; do
    echo "🔄 백업: $connector"
    curl -s $CONNECT_URL/connectors/$connector/config > "$BACKUP_DIR/$connector.json"
done

echo "✅ Kafka Connect 커넥터 설정 백업 완료 → $BACKUP_DIR"

🔧 jq 유틸리티가 필요합니다 (apt install jq 또는 brew install jq)


✅ 3. Kafka Connect 내부 토픽 백업 (심화)

Kafka Connect는 다음 토픽에 커넥터 상태와 오프셋 정보를 저장합니다:

 

토픽명  설명
connect-configs 커넥터 설정 (복원 가능)
connect-offsets 소스 오프셋
connect-status 상태 정보 (실행 여부 등)

이 토픽들을 Kafka 자체에서 백업하거나 Kafka MirrorMaker, Kafka Exporter, MirrorMaker 2로 옮길 수 있습니다. 혹은 아래처럼 수동 백업도 가능합니다:

# 예: connect-configs 토픽 데이터 가져오기
kafka-console-consumer.sh \
  --bootstrap-server localhost:9092 \
  --topic connect-configs \
  --from-beginning \
  --property print.key=true \
  --property print.value=true > connect-configs.dump

✅ 전체 백업 디렉토리 구조 예시

kafka-connect-backup/
├── config/
│   ├── connect-distributed.properties
│   └── log4j.properties
├── plugins/
│   └── my-custom-connector/
├── connector-configs/
│   ├── mongo-source.json
│   ├── s3-sink.json
│   └── ...
└── connect-topics/
    ├── connect-configs.dump
    ├── connect-offsets.dump
    └── connect-status.dump

✅ 필요 시 Helm 기반 Kafka Connect 백업 (bitnami/kafka or confluent)

Helm 기반이면 다음으로 백업:

helm get values kafka-connect -n kafka > kafka-connect-values.yaml
kubectl get cm -n kafka -l app=kafka-connect -o yaml > kafka-connect-configmaps.yaml
kubectl get secret -n kafka -l app=kafka-connect -o yaml > kafka-connect-secrets.yaml

 

728x90