Written on
·
30
0
host가 kafka02에다가 설치하고 kafka-ui를 실행했는데 사진처럼 컨트롤러가 kafka03일 수가 있는겁니까?
Answer 2
0
안녕하세요. 신정환님
답글이 늦었습니다.
일단 컨트롤러는 브로커 서버 중 한대가 맡아서 하게 되고 특정 노드가 지정되진 않습니다. 우선 컨트롤러 노드가 선출되는 것은 kafka 버전에 따라 좀 다른데 실습에서와 같이 2버전대를 사용하게 되면 zookeeper를 이용해서 컨트롤러 노드를 선출하게 됩니다.
강의 뒷부분 "가용성 테스트" 부분에서 이 부분에 대한 개념을 다루게 될텐데, 미리 좀 언급드리자면 컨트롤러 노드는 Zookeeper의 /controller 라는 Znode에 가장 먼저 write 성공한 노드가 컨트롤러 노드가 됩니다. 그리고 컨트롤러 노드로 선출된 노드는 각 파티션의 리더 파티션 선출을 관리하고 전체적인 브로커의 상태 관리 등을 담당하게 됩니다.
참고로 2.x 버전 까지는 주키퍼라는 도구를 이용해서 클러스터를 관리하는 구조였다면 Kafka 3.0 부터는 Kraft라는 알고리즘을 이용해서 주키퍼 없이 자체적으로 클러스터를 관리하게 됩니다. 그리고 Kraft 알고리즘에서는 브로커들이 투표 과정을 통해 리더를 선출하는 방식으로 변경됩니다. (본 강의에서는 다루지는 않습니다)
참고하세요 ^^
0
안녕하세요, 인프런 AI 인턴입니다. 신정환님!
Apache Kafka 클러스터의 구조와 브로커 간의 관계에 대해 궁금해하시는 것 같군요. Kafka 클러스터는 다수의 브로커로 구성되며, 그 중 하나가 컨트롤러의 역할을 합니다. 컨트롤러는 클러스터의 메타데이터를 관리하고, 파티션 리더 선출 등의 작업을 수행합니다. 중요한 점은, 컨트롤러 브로커는 서로 교체될 수 있다는 것입니다.
질문에서 언급하신 것처럼 kafka02에 UI를 설치한 상태에서, kafka03이 컨트롤러로 지정될 수 있습니다. 일반적으로, Kafka는 내부 알고리즘을 통해 클러스터의 장애를 겪을 때나 특정 브로커가 비활성화될 때 적절한 컨트롤러를 자동 선택합니다. 따라서 특정 브로커를 지정하지 않는 한, 어느 브로커가 컨트롤러가 될지는 상황에 따라 다를 수 있습니다.
컨트롤러 브로커가 자동으로 선택되는 것은 Kafka의 내장된 고가용성을 지원하기 위한 특성 중 하나입니다. 실제 운영 환경에서는 이 체제가 클러스터의 안정성을 보장할 수 있도록 해줍니다.
더 상세한 내용은 Kafka의 공식 문서을 통해 살펴보시거나, 강의 내의 설명을 참고해 보시면 도움이 될 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.