kafka clustering 테스트 시 서비스의 연속성에 대해서 고민 했고,

찾다 보니 min.insync.replicas 라는 옵션이 있었다.

옵션 설명이 좀 거지같은데, 테스트 해본 결과

서비스 연속성에 있어 살아있어야 하는 최소 broker 수 로 말하면 좀 쉽게 이해가 될 수 있을 것이다.

즉, 설정된 값 만큼은 broker가 살아있어야 서비스가 된다는 말이다.

 

[ chat gpt 3.5]

User
최소 인-싱크 복제본 이라는게 min.insync.replicas 옵션인거?

ChatGPT
네, 맞습니다. "최소 인-싱크 복제본"은 Kafka의 min.insync.replicas 옵션을 가리킵니다. 이 옵션은 토픽에 대한 최소한의 인-싱크 복제본 수를 지정합니다.

min.insync.replicas 옵션은 특정 토픽에 대해 메시지가 커밋되기 전에 필요한 최소한의 인-싱크 복제본 수를 설정합니다. 이 값은 주로 트랜잭션 로그나 안정적인 메시지 전달을 보장하는 데 사용됩니다. 메시지가 커밋되기 위해서는 이 설정된 최소한의 복제본 수가 메시지를 성공적으로 복제해야 하므로, 데이터의 안정성과 내구성을 유지하는 데 중요한 역할을 합니다.

따라서 min.insync.replicas 옵션은 데이터의 안정성과 내구성을 보장하기 위해 중요한 설정 중 하나입니다. 설정된 값에 따라 토픽의 안정성이 달라지며, 적절한 값을 선택하는 것이 중요합니다.

 

 


★구성 : 서버 3대 clustering, 이하 broker1,2,3 이며 zookeeper 1,2,3은 broker 1,2,3에 떠있는 zookeeper임

★ 서비스 버전 : os - rocky 8 / kafka 3.7.0 / zookeeper (kafka 3.7.0 안의 zookeeper 3.8.3 사용)

★ 모니터링 : kafka-topics.sh, kafka-consumer-groups.sh 로 모니터링

★ 테스트 : 별도 서버에서 produce / consumer api 기동

 

min.insync.replicas=1

더보기
ISR 순 테스트
isr 1,2,3 [broker 1 down]
모니터링 잠깐 에러 났으나 정상화
produce/consume 이슈없음

[zookeeper 1 down]
produce/consume 정상 수행.
offset번호가 살짝 역행(?) 했던 것 같지만 그냥 기분탓이었던걸로.


[broker 3 down]
모니터링 잠깐 에러났으나 정상화
produce/consume 이슈없음

[zookeeper 3 down]
모니터링 에러
------------------------------------------
[2024-04-02 17:02:44,738] WARN [AdminClient clientId=adminclient-1] Connection to node -3 ( broker3/35.224.235.168:9092) could not be e
stablished. Node may not be available. (org.apache.kafka.clients.NetworkClient)
Error while executing topic command : Call(callName=describeConfigs, deadlineMs=1712045025147, tries=2, nextAllowedTryMs=1712045025356
) timed out at 1712045025173 after 2 attempt(s)
[2024-04-02 17:03:45,234] ERROR org.apache.kafka.common.errors.TimeoutException: Call(callName=describeConfigs, deadlineMs=17120450251
47, tries=2, nextAllowedTryMs=1712045025356) timed out at 1712045025173 after 2 attempt(s)
Caused by: org.apache.kafka.common.errors.DisconnectException: Cancelled describeConfigs request with correlation id 8 due to node 2 b
eing disconnected
 (org.apache.kafka.tools.TopicCommand)
--------------------------------------------

★ ★  broker/zookeeper 1,3 down 되었으나 produce/consume 이슈없음 ★ ★

[zookeeper 1 up]
모니터링 정상화

[broker 1 up]
kafka topic data 2번과 동기화 완료

[broker 2 down]
모니터링 잠깐 에러났으나 정상화
produce/consume 이슈없음

[zookeeper 2 down]
produce/consume 이슈없음

★ ★  broker/zookeeper 2,3 down 되었으나 produce/consume 이슈없음 ★ ★

나머지 전체 기동 및 topic data 동기화 확인 완료

 

min.insync.replicas=2

더보기
ISR 순서 테스트
isr 1,3,2 [broker 1 down]
모니터링 잠깐 에러났으나 정상화
produce/consume 이슈없음

[broker 2 down]
consumer groups  offset 값 변동 없음, LAG 인입 없음 (0)

produce는 watch로 10초간 데이터가 들어가는 걸로 보이나, consume API에서 데이터 consume 반응 없음.

broker3의 kafka topic data는 broker 2가 내려간 시점부터 데이터 로그파일 사이즈 증가 안함.



[zookeeper 1 down]
안됨 여전히

[zookeeper 2 down]
모니터링 에러

[broker 1 up]
프로세스 잠깐 떠있다 죽음

[broker 2 up]
프로세스 잠깐 떠있다 죽음

broker 1,2 기동 잠시 되었으나 topic data는 동기화 안됨

[zookeeper 순차 기동 1->2]

데이터 3대 전부 32,33분 이후 변동 없고 produce api는 그냥 계속 돌아가는중

[broker 1 up]
topic data 동기화 및 살아있는 broker(1,3번) 데이터 흐름 확인
produce/consume 정상 확인

★ ★  broker/zookeeper 2개는 떠야 produce/consume 이슈없음 ★ ★


[broker 2 up]
topic data 동기화 확인 완료.

 

 

728x90

+ Recent posts