주키퍼의 역할
- 카프카를 실행하기 위한 요구사항
- 카프카 클러스터의 토픽과 같은 정보를 보유한다
- 할당과 통지를 코디네이트하여 브로커를 돕는다.
브로커 수준의 옵션
- 구성은 카프카 클라이언트, 토픽, 브로커 작동에 있어 중요한 부분이다
- log.dirs 구성 속성은 항상 셋업에 적합한 로그 위치로 설정해야한다.
- 설정이 잘못된다면?
bin/kafka-topics.sh --create --bootstrap-server localhost:9094 --topic kinaction_one_replica
bin/kafka-topics.sh --describe --bootstrap-server localhost:9094 --topic kinaction_one_replica

- 위 설정에서 0번 브로커를 종료한다면 토픽을 사용할 수 없다
애플리케이션 로그
- 일반적으로 생각하는 로그
- 레코드 로그와는 무관
- config/log4j.properties에 kafka.logs.dir을 수정하면 변경가능
서버 로그
- server.log는 브로커를 종료하는 시작 오류 또는 예외가 있는지 확인하는 위치
- 로그는 한 곳으로 집중되지 않고 브로커에 존재한다
상태관리
- 클러스에서 하나의 브로커만 컨트롤러 역할을 수행한다
- 컨트롤러의 역할은 클러스터를 관리하고 파티션 재할당 같은 관리작업도 수행한다
- 어떤 브로커가 컨트롤러인지 파악하려면 zookeeper-shell.sh를 사용하면 된다.
- get /controller
파티션 리더 레플리카와 그 역할
-
토픽은 파티션으로 구성되며 레플리카를 가질 수 있다.
- 파티션은 브로커의 디스크에 기록된다.
- 레플리카 중 하나가 리더 역할을 담당한다
- 리더는 새로 쓰인 데이터가 있는 유일한 레플리카이기 때문에 팔로워 레플리카의 소스 데이터 역할도 한다
- 팔로워 레플리카는 리더 파티션의 컨슈머 역할을 하며 메시지를 가져온다
-
실패한 브로커가 파티션의 리더 레플리카를 호스팅할 경우 새 리더가 선출된다
-
레플리카는 기본적으로 자체복구 되지 않는다
-
레플리카가 리더에서 복사하는데 너무 뒤처지게 되면 ISR에서 제거된다
데이터 손실
- ISR이 없고 리더 레플리카가 손실된다면?
- unclean.leader.election.enable이 true라면 최신이 아니더라도 시스템이 계속 실행되도록 파티션의 리더를 선택한다.
- 리더가 실패했을 때 살아있는 레플리카중 어느것도 모든 데이터를 갖고 있지 않기 때문에 데이터가 손실될 수 있다
카프카 엿보기
- 컨플루언트 클라우드를 위해 사용할 수 있는 간단한 모니터링 시스템은 그라파나와 프로메테우스가 있다
- 프로메테우스를 사용해 카프카의 메트릭 데이터를 추출하고 저장하고 그라파나로 보내 유용한 그래픽 뷰를 생성한다
- 카프카 익스포터는 JMX 매트릭을 받아 프로메테우스 형식으로 내보낸다
- JMX 메트릭은 JMX_PORT를 설정해 얻을 수 있다
- 이미 브로커가 실행중이라면 다시 시작해야한다