Iyoungman Back-end Developer

카프카 환경설정


카프카 관리를 위한 주키퍼

주키퍼

  • 최근들어 하둡, 나이파이, 에이치베이스 등 분산 애플리케이션이 개발되고 있다.
    분산 애플리케이션 관리를 위한 코디네이션 애플리케이션이 필요한데 대표적으로 주키퍼를 사용한다.
  • 분산되어 있는 각 애플리케이션 정보를 중앙에 집중하고 구성 관리, 그룹 관리, 동기화 등 서비스를 제공한다.

IMG_1167


지노드

  • 상태 정보는 주키퍼의 지노드에 Key-Value 형태로 저장한다.
  • 지노드는 데이터를 저장하기 위한 공간으로 파일, 폴더 개념으로 생각하면 된다.
    따라서 계층형 구조이다.

IMG_1166


앙상블(클러스터)

  • 앙상블로 구성되어 있는 주키퍼는 과반수 방식에 따라 살아 있는 노드 수가 과반수 이상 유지되면 서비스를 유지할 수 있다.

IMG_1164


카프카 설치

  • 카프카 클러스터의 서버 대수는 홀수가 아니어도 상관없다.
  • 주키퍼와 카프카는 동일한 서버가 아닌 별도로 구성하는 것이 좋다.


주키퍼와 카프카

IMG_1165

  • [1] 앙상블 내 3대 서버는 모두 동일한 정보를 갖고있다.
    따라서 카프카 설정 파일내 주키퍼 정보 입력시 주키퍼 앙상블 중 3대 중 하나만 입력해도 사용할 수는 있다.

  • [2] 만약 카프카가 바라보고 있는 1대의 주키퍼 서버가 다운되었다고 해보자.

  • [3] 주키퍼 서버 3대 중 다운된 1대를 제외하고 과반수 이상인 2대의 서버는 살아있다.
    따라서 주키퍼 앙상블은 정상 상태로 유지되고 있다.
    하지만, 카프카 환경설정에서 주키퍼 서버 하나만 입력했기 때문에 카프카 클러스터에는 장애가 발생한다.


  • 따라서 카프카 설정에서 모든 주키퍼 서버 리스트를 입력하는 것이 좋다.
zookeeper.connect=peter-zk001:2181,peter-zk001:2182,peter-zk003:2181


카프카 환경 설정 server.properties 파일의 주요 옵션

https://docs.confluent.io/current/installation/configuration/broker-configs.html


Comments

Content