기타
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