[서버 기준 테스트]
# 테스트 방안
- 서버에 대해 한대씩 내리면서 data producer/consume 정상 여부 확인
- 서버를 재기동 하면서 data/snapshot data 동기화 여부 확인
- 서버 down 하면서 data/offset 동기화 여부확인
- 1대 down 했을때와 2대 down 했을 때 차이 확인
- 아래 그림의 외곽 파란색 네모 기준 왼쪽에서 순서대로 1,2,3번 서버로 지칭함.
1) 2번 서버 1대만 shutdown
- 3번 서버에서 모니터링 중이던 consumer group describe 에러 발생, topic describe는 정상
- 1,3번 서버 데이터 정상 produce/consume 확인 완료.
-> kafka data 파일 및 consumer api 에서 data consume 내용 출력 됨. - 2번서버 기동 후 zookeeper 기동. 데이터 동기화 여부 관련 5분정도 대기 --> 동기화 x
- 2번서버 broker 기동 후 kafka data 동기화 여부 확인 완료.
- 2번서버에서 뜨다 죽은 consumer api 기동 및 offset 동기화 확인.
이때가지만 해도 kafka data의 replication-offset-checkpoint 파일과 log파일 비교 할 생각을 못했었는데,
아래 2대 down 테스트 하면서 비교진행.
2) 2,3번 서버 2대 shutdown
- 2,3번서버 shutdown 후 1번 서버에서 모니터링 안뜸
- 현재 살아있는 1번 서버에 대해
0번 파티션에 대해, 파티션 리더 값이 1번서버에 연결인지, 0번 파티션만 지속적으로 topic data는 인입 확인. - produce api가 3개 서버를 보게 되어있어서 그런지 프로세스 end 프린트까지 떨어지는데 시간이 오래걸림
(타임아웃에 의한 종료인지는 모르겠음) - 1번에 떠있는 consumer api가 더 이상 데이터 consume을 하지 않았고
1번 서버의 consume group id 확인 결과 2번 서버로 지정된 topic01-g2로 되어있어, broker id를 1번서버로, group id를 2번으로 변경하여 api 재기동
--> log data 기반으로는 consume 진행 된 것으로 보여지나, api에 출력내용은 없었음.
*** 아래 다시 적었지만 해당 데이터는 shutdown 전에 적재된 consume 데이터로 판단됨
[offset 현황]
- producer
data log 상에는 정상으로 남는데, replication-offset-checkpoint는 동기화 되지 않음.
# kafka-dump-log.sh (옵션 : --files 파일명 --print-data-log) | offset: 494 CreateTime: 1708652155313 keySize: 1 valueSize: 1 sequence: -1 headerKeys: [] key: 8 payload: 8 # cat replication-offset-checkpoint | grep topic topic01 0 475 |
-consumer
producer와 마찬가지로 dump log상에는 진행으로 나오나 replication-offset-checkpoint는 동기화 되지 않음
# kafka-dump-log.sh (옵션 : --files 파일명 --offsets-decoder) | offset: 839 CreateTime: 1708653716073 keySize: 27 valueSize: 24 sequence: 0 headerKeys: [] key: offset_commit::group=topic01-g2,partition=topic01-0 payload: offset=475 # cat replication-offset-checkpoint | grep consumer __consumer_offsets 30 827 |
[2,3번 서버 기동]
2,3번서버 zookeeper만 기동했는데, broker1의 data의 replication-offsets-checkpoint 값이 바뀜
** topic01 의 다른파티션들에 대한 값들도 변경 확인.
broekr1/zookeeper1 up | broker1/zookeeper 1,2,3 up |
# cat replication-offset-checkpoint | sort __consumer_offsets 0 0 __consumer_offsets 6 0 __consumer_offsets 30 827 __consumer_offsets 18 0 __consumer_offsets 21 0 __consumer_offsets 48 0 __consumer_offsets 33 0 __consumer_offsets 24 0 __consumer_offsets 3 0 __consumer_offsets 27 0 __consumer_offsets 42 0 __consumer_offsets 39 0 __consumer_offsets 15 0 __consumer_offsets 12 0 __consumer_offsets 36 0 __consumer_offsets 45 0 __consumer_offsets 9 0 topic01 0 475 topic01 1 391 topic01 2 444 |
# cat replication-offset-checkpoint | sort __consumer_offsets 0 0 __consumer_offsets 6 0 __consumer_offsets 30 857 __consumer_offsets 18 0 __consumer_offsets 21 0 __consumer_offsets 48 0 __consumer_offsets 33 0 __consumer_offsets 24 0 __consumer_offsets 3 0 __consumer_offsets 27 0 __consumer_offsets 42 0 __consumer_offsets 39 0 __consumer_offsets 15 0 __consumer_offsets 12 0 __consumer_offsets 36 0 __consumer_offsets 45 0 __consumer_offsets 9 0 topic01 0 495 topic01 1 395 topic01 2 452 |
zookeeper 2대만 우선 기동 완료 하자 broker1번 server.log 에서 미친듯이 나던 에러가 멈췄다.
broker2,3 기동 전이라서 그런지
- kafka topic 의 파티션 데이터들은 여전히 동기화 안되어 있었고
- replication-offset-checkpoint값도 동기화 이전이었다.
broker2,3 kafka 기동 전 | ||
broker1 | broker2 | broker3 |
[kafka@broker1 kaf_data]$ ls -l topic*/*.log -rw-------. 1 kafka kafka 8504 Feb 23 10:35 topic01-0/00000000000000000000.log -rw-------. 1 kafka kafka 7352 Feb 23 10:18 topic01-1/00000000000000000000.log -rw-------. 1 kafka kafka 7780 Feb 23 10:18 topic01-2/00000000000000000000.log |
[kafka@broker2 kaf_data]$ ls -l topic*/*.log -rw-------. 1 kafka kafka 8019 Feb 23 10:17 topic01-0/00000000000000000000.log -rw-------. 1 kafka kafka 7194 Feb 23 10:17 topic01-1/00000000000000000000.log -rw-------. 1 kafka kafka 7586 Feb 23 10:17 topic01-2/00000000000000000000.log |
[kafka@broker3 kaf_data]$ ls -l topic*/*.log -rw-------. 1 kafka kafka 8213 Feb 23 10:18 topic01-0/00000000000000000000.log -rw-------. 1 kafka kafka 7352 Feb 23 10:18 topic01-1/00000000000000000000.log -rw-------. 1 kafka kafka 7780 Feb 23 10:18 topic01-2/00000000000000000000.log |
__consumer_offsets 0 0 __consumer_offsets 12 0 __consumer_offsets 15 0 __consumer_offsets 18 0 __consumer_offsets 21 0 __consumer_offsets 24 0 __consumer_offsets 27 0 __consumer_offsets 3 0 __consumer_offsets 30 857 __consumer_offsets 33 0 __consumer_offsets 36 0 __consumer_offsets 39 0 __consumer_offsets 42 0 __consumer_offsets 45 0 __consumer_offsets 48 0 __consumer_offsets 6 0 __consumer_offsets 9 0 topic01 0 495 topic01 1 395 topic01 2 452 |
__consumer_offsets 1 0 __consumer_offsets 10 0 __consumer_offsets 13 0 __consumer_offsets 16 0 __consumer_offsets 19 0 __consumer_offsets 22 0 __consumer_offsets 25 0 __consumer_offsets 28 0 __consumer_offsets 31 668 __consumer_offsets 34 0 __consumer_offsets 37 0 __consumer_offsets 4 0 __consumer_offsets 40 0 __consumer_offsets 43 0 __consumer_offsets 46 0 __consumer_offsets 49 0 __consumer_offsets 7 0 topic01 0 475 topic01 1 391 topic01 2 444 |
__consumer_offsets 11 0 __consumer_offsets 14 0 __consumer_offsets 17 0 __consumer_offsets 2 0 __consumer_offsets 20 0 __consumer_offsets 23 0 __consumer_offsets 26 0 __consumer_offsets 29 1607 __consumer_offsets 32 0 __consumer_offsets 35 0 __consumer_offsets 38 0 __consumer_offsets 41 0 __consumer_offsets 44 0 __consumer_offsets 47 0 __consumer_offsets 5 0 __consumer_offsets 8 0 topic01 0 475 topic01 1 391 topic01 2 444 |
broker2,3 kafka 기동 후 | ||
broker1 | broker2 | broker3 |
[kafka@broker1 kaf_data]$ ls -l topic*/*.log -rw-------. 1 kafka kafka 8504 Feb 23 10:35 topic01-0/00000000000000000000.log -rw-------. 1 kafka kafka 7352 Feb 23 10:18 topic01-1/00000000000000000000.log -rw-------. 1 kafka kafka 7780 Feb 23 10:18 topic01-2/00000000000000000000.log |
[kafka@broker2 kaf_data]$ ls -l topic*/*.log -rw-------. 1 kafka kafka 8504 Feb 23 11:25 topic01-0/00000000000000000000.log -rw-------. 1 kafka kafka 7352 Feb 23 11:25 topic01-1/00000000000000000000.log -rw-------. 1 kafka kafka 7780 Feb 23 11:25 topic01-2/00000000000000000000.log |
[kafka@broker3 kaf_data]$ ls -l topic*/*.log -rw-------. 1 kafka kafka 8504 Feb 23 11:25 topic01-0/00000000000000000000.log -rw-------. 1 kafka kafka 7352 Feb 23 10:18 topic01-1/00000000000000000000.log -rw-------. 1 kafka kafka 7780 Feb 23 10:18 topic01-2/00000000000000000000.log |
__consumer_offsets 0 0 __consumer_offsets 12 0 __consumer_offsets 15 0 __consumer_offsets 18 0 __consumer_offsets 21 0 __consumer_offsets 24 0 __consumer_offsets 27 0 __consumer_offsets 3 0 __consumer_offsets 30 857 __consumer_offsets 33 0 __consumer_offsets 36 0 __consumer_offsets 39 0 __consumer_offsets 42 0 __consumer_offsets 45 0 __consumer_offsets 48 0 __consumer_offsets 6 0 __consumer_offsets 9 0 topic01 0 495 topic01 1 395 topic01 2 452 |
__consumer_offsets 1 0 __consumer_offsets 10 0 __consumer_offsets 13 0 __consumer_offsets 16 0 __consumer_offsets 19 0 __consumer_offsets 22 0 __consumer_offsets 25 0 __consumer_offsets 28 0 __consumer_offsets 31 672 __consumer_offsets 34 0 __consumer_offsets 37 0 __consumer_offsets 4 0 __consumer_offsets 40 0 __consumer_offsets 43 0 __consumer_offsets 46 0 __consumer_offsets 49 0 __consumer_offsets 7 0 topic01 0 495 topic01 1 395 topic01 2 452 |
__consumer_offsets 11 0 __consumer_offsets 14 0 __consumer_offsets 17 0 __consumer_offsets 2 0 __consumer_offsets 20 0 __consumer_offsets 23 0 __consumer_offsets 26 0 __consumer_offsets 29 1607 __consumer_offsets 32 0 __consumer_offsets 35 0 __consumer_offsets 38 0 __consumer_offsets 41 0 __consumer_offsets 44 0 __consumer_offsets 47 0 __consumer_offsets 5 0 __consumer_offsets 8 0 topic01 0 495 topic01 1 395 topic01 2 452 |
[추가 모니터링/확인]
topic consumer group 에 대해 describe로 확인 결과
- 기존 partiton leader가 좀 다양했었는데, 전부 1번으로 되어있었고
- consume이 되었다고 생각했던 데이터가 LAG에 남아있다.
consume API를 다시 기동시켜 흘리고 나니 __consumer_offset값이 증가 되었다.
위 분홍색 내용인 consumer offset값이 증가가 된건 기존 producer데이터 인듯 하고,
결론적으로 서버 2대가 shutdown 되고서 producer로 흘려진 값들은 정상적으로 consume이 되지 않은 것이다.
broker1 | broker2 | broker3 |
__consumer_offsets 30 857 | __consumer_offsets 31 672 | __consumer_offsets 29 1607 |
__consumer_offsets 30 881 | __consumer_offsets 31 691 | __consumer_offsets 29 1674 |
'업무 > kafka zookeeper' 카테고리의 다른 글
[zookeeper] snapshot data(version-2) 정리 (update 240402) (0) | 2024.03.21 |
---|---|
[zookeeper] port 접속 현황 이게 맞는거임...? (0) | 2024.03.07 |
[kafka] kafka-consumer-groups.sh 명령어 관련 (0) | 2024.02.21 |
[zookeeper] snapshot data 테스트 관련 총 정리 (0) | 2024.02.13 |
[zookeeper] snapshot data(version-2) 관련 테스트 (3) (0) | 2024.02.13 |