테스트 진행 관련 |
zookeeper의 version-2를 이동하지 않고, kafka의 data log dir (파티션이 저장되는 경로)을 변경 한 뒤 아래 2가지 테스트. (기존 : /kaf_data , 변경 : /kaf_data_test) 1) 기존 조회되는 topic으로 데이터 produce/consume - 기존의 kafka data log dir에 데이터가 쌓일지, 신규 dir로 데이터가 쌓일지 확인 (version-2의 metadata 정보 기반이면 기존 data log dir로 쌓지 않을까 예상) 2) 신규 topic 생성 및 데이터 produce/consume 후 결과 확인 (dir, zookeeper cli metadata 등) |
확인 된 내용 |
변경된 신규 디렉토리에 기존 디렉토리의 파티션 구성은 동일하게 생성되나 (일반 topic과 consume topic 둘 다 생성됨) 실제 데이터는 0인 파일들이 같이 생성 된다. --> index, timeindex등 파일 사이즈가 0은 아니지만 log dump를 통해 확인 시 NoSuchElementException 에러 발생(데이터없음) |
테스트 결과 |
1) 기존 조회되는 topic으로 데이터 produce/consume - 정상적으로 된다. 각각 파일의 offset들은 0으로 시작한다. (consumer log dump는 캡쳐뜨지 않았다) - 위 예상처럼 기존 디렉토리인 /kaf_data에 쌓이지 않고 신규 디렉토리인 /kaf_data_test에 쌓인다. - 다만 신기하게도, consumer_offsets 파티션은 /kaf_data에서 생성된 파티션 디렉토리 번호와 똑같은 파티션으로 데이터가 생성된다. ** 테스트 시 기존 consumer group id도 동일하게 테스트 해서 그런건지 아닌지는 나중에 다시 테스트 해봐야 할 것 같지만.. 2) 신규 topic 생성 및 데이터 produce/consume 후 결과 확인 (dir, zookeeper cli metadata 등) - 신규 토픽은 신규 디렉토리에 잘 생성 됐다. produce/consume 수행시 특이사항 없었음. - zookeeper cli 확인 시 topic내용은 정상적으로 들어가있다. |
확인 사항
1. kafka의 data log 변경 후 기동 / 확인
zookeeper의 snapshot data인 version-2의 데이터를 유지하고, kafka data dir을 변경했다.
- 기존 : /kaf_data
- 변경 : /kaf_data_test
/kaf_data_test 는 비어있는 신규 디렉토리로 생성 후 kafka server.properties 의 log.Dirs에 위치를 변경해준다.
kafka 기동 후 /kaf_data_test와 kafka-topics.sh 를 통해 확인 결과
/kafka_data_test 디렉토리에 /kaf_data 와 똑같은 파티션들이 전부 생성 되었고, topic list도 동일하게 조회 됐다.
(before after 캡쳐는 못뜸)


zookeeper에서 snapshot을 통해 파티션 정보를 복구 한 것 같으나, index, log 등에 대한 실질적인 데이터 항목은 복구하지 못했다.
결론은 껍데기만 복구 한 것이다.
- index: 기존 디렉토리의 index 파일 크기와 변경된 디렉토리의 index 파일 크기.
index파일 사이즈가 기존파일과 달라 ./kafka-dump-log.sh 로 수행해본 결과,
기존 디렉토리의 index값은 조회가 돠나, 신규파일은 NoSuchElemetExcpetion(존재하지 않는 것을 가져오려 할때 발생) 리턴 됐다.
참고로 변경 전 사용한 디렉토리의 index파일 사이즈의 조정이 있었다. dump log로는 값은 조회가 됐다.
근데 왜인지 모르겠지만 index, timeindex파일은 파일 사이즈가 계속 늘어나는 듯한 느낌이 드는데 이것은 기분탓일까..
- topic partition : 파티션 디렉토리는 복제 됐지만 내부 data는 복제 되지 않았다. (*.log 파일 사이즈 0)
데이터 복제 가능성이 있다고 생각했는데, 기존 produce 된 데이터에 대한 정보는 *.log파일에 남지 않았다.
- consumer group id : 기존 데이터에 대한 consumer group id 조회는 안됐는데, consumer group id 정보에 대한 저장이 별도로 있는지까진 확인 필요할 것 같다.
** 세션이 연결 될 때마다 관리가 되는거라면 디렉토리 변경과 무관하게 아무것도 안떠있는 경우 group 정보는 안나올 것 같다는게 내 판단이다. 이건 디렉토리를 원복 하고 기동했을 때 다시 확인해보도록 한다.

b1HostnameCreate 토픽은 GCP에서 클러스터링 구성 후 produce/consume 이력이 있는 파티션이다.
broker1~3번 중 1번 서버에서 확인 했으며,
해당 파티션 기준으로 /kaf_data(구) 와 /kaf_data_test(신) 의 파일 리스트에 대해 파일화 한 후 sdiff 로 확인해봤다.

consume 파티션에서 가져간 offset (__consume_offsets) 같은 경우,
기존 /kaf_data 디렉토리 사용 시 consumer_group_id 테스트로 consumer_offsets의 40번째 파티션에 데이터가 있지만,
/kaf_data_test 에서는 consumer_offsets 안에 데이터가 없다.

2. topic 신규 생성
토픽은 신규 디렉토리로 정상적으로 생성 완료 되었다.
기존 디렉토리에서는 조회가 되지 않았다.
### 추가 진행 테스트 시 기존 데이터 디렉토리 복구하면 생기지 않을까?

3. data produce & consume
3-1. 기존 데이터에 대해 consume이 가능 여부
→ kafka에서 현재 바라보고 있는 data가 신규 데이터 영역이고, 복제된 파티션 내 로그데이터 정보는 없기 때문에 기존 데이터의 consume은 불가능하다.
3-2. 기존에 생성한 topic에 대해 데이터 produce & consume 가능 여부
1> topic partitions : 데이터는 정상적으로 인입. 전부 offset이 0부터 시작함.
따라서 데이터는 새로운 파일에 새롭게 쓰여짐.
## topic명 : b1HostnameCreate (기존 /kaf_data 디렉토리에서 topic produce/consume 한 디렉토리임)

## 데이터 정상 produce/consume 됨.



☆★☆★
2> consumer partitions : 기존의 같은 consumer_offsets의 파티션에 데이터가 쓰여졌다.
zookeeper의 snapshot의 정보가 어디까지 저장되어있는지는 모르겠으나,
기존 b1HostnameCreate consume 시 사용 되었던 consumer_offsets의 같은 파티션에 데이터가 남아있다.
3-3 항목을 우선적으로 테스트 하느라 현재 각 브로커별 /kaf_data_test 디렉토리에 2개의 consumer_offsets이 있는
상황이긴 하나, b1HostnameCreate 에 대한 consumer_offsets 디렉토리는 아래와 같고, 신규 디렉토리에서 테스트 시
동일한 디렉토리에 데이터가 생성 되는 것을 확인 했다.
기존 (/kaf_data) | 변경 (/kaf_data_test) |
broker1 : __consumer_offsets-40 broker2 : __consumer_offsets-35 broker3 : __consumer_offsets-30 |
broker1 : __consumer_offsets-40 broker2 : __consumer_offsets-35 broker3 : __consumer_offsets-30 |
![]() |
![]() ![]() ![]() |
☆★☆★
3-3. 신규 topic에 대해 데이터 핸들링이 정상적으로 되는지
producer/consumer API로 데이터 테스트 완료 하였고 정상적으로 빠져 ㅣLAG이 0임을 확인 할 수 있다.

zookeeper cli 상에서도 해당 토픽이 znode에 정상적으로 등록 되어있음을 알 수 있다.
version-2를 보존하고 디렉토리를 원복 했을때 NewDirTopic01에 대한 정보가 올라오는지 확인 해보면 될 것 같다.

4. 추가 진행 예정
1) 기존 /kaf_data 로 dir 원복 시 /kaf_data_test 에 생성된 파티션이 동일하게 복구/복제가 되는지 확인
- 대상 파티션명 : NewDirTopic01
2) 데이터 복구 (log, index) 여부 확인 및 data produce&consume 가능 여부 확인
→ 아마 초기 확인처럼 껍데기만 복구가 되어 기존 데이터를 consume 할 순 없을 것 같다는 판단은 든다.
3) /kaf_data_test 에서 b1HostnameCreate produce/consume 테스트 진행 시 consumer group id 변경하면 기존 consumer_offsets 쓰는지 확인 할 것.
'업무 > kafka zookeeper' 카테고리의 다른 글
[zookeeper] snapshot data(version-2) 관련 테스트 (3) (0) | 2024.02.13 |
---|---|
[zookeeper] snapshot data(version-2) 관련 테스트 (2) (0) | 2024.02.10 |
[zookeeper] zookeeper CLI (0) | 2024.02.08 |
[zookeeper] zookeeper snapshot (0) | 2024.02.08 |
[GCP][kafka,zookeeper] GCP 3node 구성 진행 (update 24.03.26) (0) | 2024.02.04 |