일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 명명규칙
- Java
- array
- 배열
- 기본형호출
- 변수유효범위
- println()
- 참조형호출
- 사용자입력Switch문
- 삼항 연산자
- 자바
- 산술 쉬프트 연산자
- while문
- 문자열
- 순환문
- 단순if
- 비교연산자
- 안드로이드스튜디오
- 다중if
- 논리 쉬프트 연산자
- 증감연산자
- 비정방행렬
- 대입 연산자
- 다차원배열
- for문
- print()
- 타입변환
- 비트논리연산자
- 콘솔출력문
- dowhile문
- Today
- Total
신입개발자
Kafka broker, controller 분리 본문
broker : 토픽의 데이터 저장하고, 프로듀서로부터 메시지 받아 저장하고, 컨슈머에게 메시지 전달하는 역할
controller : 파티션 리더와 복제를 관리하는 역할
※ controller 를 나중에 추가하면 발생하는 에러
[2023-07-31 09:42:47,913] ERROR [SharedServer id=4] Got exception while starting SharedServer (kafka.server.SharedServer)
java.lang.IllegalStateException: Configured voter set: [4, 5, 6, 7, 8] is different from the voter set read from the state file: [4, 5, 6]. Check if the quorum configuration is up to date, or wipe out the local state file if necessary
at org.apache.kafka.raft.QuorumState.initialize(QuorumState.java:132)
at org.apache.kafka.raft.KafkaRaftClient.initialize(KafkaRaftClient.java:370)
at kafka.raft.KafkaRaftManager.buildRaftClient(RaftManager.scala:248)
at kafka.raft.KafkaRaftManager.<init>(RaftManager.scala:174)
at kafka.server.SharedServer.start(SharedServer.scala:247)
at kafka.server.SharedServer.startForController(SharedServer.scala:129)
at kafka.server.ControllerServer.startup(ControllerServer.scala:197)
at kafka.server.KafkaRaftServer.$anonfun$startup$1(KafkaRaftServer.scala:95)
at kafka.server.KafkaRaftServer.$anonfun$startup$1$adapted(KafkaRaftServer.scala:95)
at scala.Option.foreach(Option.scala:437)
at kafka.server.KafkaRaftServer.startup(KafkaRaftServer.scala:95)
at kafka.Kafka$.main(Kafka.scala:113)
at kafka.Kafka.main(Kafka.scala)
현재는 kraft 에서 컨트롤러를 추가했을 때 발생하는 에러
[해결 방법]
- Default : 브로커 3대, 컨트롤러 3대 / 컨슈머가 2개고 파티션 할당 전략이 RoundRobin경우
- ACKS : ALL (-1)
[브로커 1대만 죽었을 때]
메세지 송수신이 원활하다. 모두 들어온다.
[브로커 2대 죽었을 때]
메세지 송수신이 원활하다. ( 브로커를 죽었다 재시작하면 LAG에 수가 높게 증가해있음)
모두 들어온다.
[브로커 모두 죽었을 때]
브로커가 모두 죽었을 때는 메세지 송수신이 불가
메세지 모두 들어온다.
- ACKS : 0
[브로커 1대만 죽었을 때]
메세지가 모두 들어온다.
[브로커 2대 죽었을 때]
메세지가 모두 들어온다.
[브로커 모두 죽었을 때]
메세지 누수 발생
- ACKS : 1
[브로커 1대만 죽었을 때]
메세지가 모두 들어온다.
[브로커 2대 죽었을 때]
메세지가 모두 들어온다.
[브로커 모두 죽었을 때]
메세지가 모두 들어온다.
- 컨트롤러 3대일 때
[컨트롤러가 한대 죽었을 때]
파티션도 추가되고 토픽도 생성됨
[컨트롤러가 두대 죽었을 때]
파티션 추가 안됨 timeout
[컨트롤러가 세대 죽었을 때]
파티션 추가 안됨 timeout
- 컨트롤러 5대일 때
2대까지는 모두 잘 돌아감
3대 망가짐
토픽 만들때
400 Bad Request
Call(callName=createTopics, deadlineMs=1690778366044, tries=2, nextAllowedTryMs=1690778366149) timed out at 1690778366049 after 2 attempt(s)
파티션 추가할 때
500 Internal Server Error
Timed out waiting to send the call. Call: createPartitions
'개인 개발 공부' 카테고리의 다른 글
Grafana 모니터링 화면 (0) | 2023.08.31 |
---|---|
Kafka 백업/이관/업그레이드 과정 정리 (0) | 2023.08.31 |
Kafka 고가용성 테스트 (0) | 2023.08.31 |
Kafka Consumer (0) | 2023.08.31 |
Kafka Stream (0) | 2023.08.31 |