프로그래밍 노트/kafka

[kafka] 주키퍼(zookeeper) 설치 및 실행 (환경설정)

깡냉쓰 2021. 6. 30. 23:50
728x90
반응형

주키퍼 설치하기

$ wget http://apache.mirror.cdnetworks.com/zookeeper/stable/apache-zookeeper-3.6.3-bin.tar.gz
$ tar xzvf apache-zookeeper-3.6.3.tar.gz
$ ln -s apache-zookeeper-3.6.3 zookeeper

주키퍼는 애플리케이션에서 별도의 데이터 디렉토리를 사용
이 디렉토리에는 지노드의 복사본인 스냅샷트랜잭션 로그들이 저장

  1. 지노드의 변경사항이 발생하면, 변경사항은 트랜잭션 로그에 추가
  2. 로그가 어느 정도 커지면, 현재 모든 지노드의 상태 스냅샷이 파일시스템에 저장
  3. 스냅샷은 모든 이전 로그들을 대체


중요한 디렉토리이기 때문에 설치 경로와는 다른 경로로 설정하는 것이 바람직하다. 보통 /data 경로로 설정하는 것 같다.

$ mkdir -p /data

이제 앙상블 내 주키퍼 노드를 구분하기 위해 ID를 부여해야 한다.
주키퍼에서는 myid라고 부르며 정수 형태로 만들어 준다. /data 디렉토리 하단에 myid라는 파일을 만들면 끝난다.

$ echo 1 > /data/myid

3대의 서버가 있다고 가정하면, 3대의 서버에 모두 위와 같은 작업을 진행해야 한다.

zookeeper-server1 -> myid : 1
zookeeper-server2 -> myid : 2
zookeeper-server3 -> myid : 3

주키퍼 환경설정

주키퍼 환경설정 파일은 아래의 경로에 존재한다.

${ZOOKEEPER_HOME}/zookeeper/conf/zoo.cfg
혹은
${ZOOKEEPER_HOME}/zookeeper/conf/zoo_sample.cfg

아래와 같이 환경설정을 해준다.(zoo.cfg)

# The number of milliseconds of each tick
tickTime=2000 -(1)
# The number of ticks that the initial
# synchronization phase can take
initLimit=10 -(2)
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5 -(3)
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/data -(4)
# the port at which the clients will connect
clientPort=2181 -(5)
server.1=zookeeper-server1:2888:3888 -(6)
server.2=zookeeper-server2:2888:3888
server.3=zookeeper-server3:2888:3888

(1) - 주키퍼가 사용하는 시간에 대한 기본 측정 단위
(2) - 팔로워가 리더와 초기에 연결하는 시간에 대한 타임 아웃 tick의 수
(3) - 팔로워가 리더와 동기화 하는 시간에 타임 아웃 tick의 수
(4) - 주키퍼의 트랜잭션 로그와 스냅샷이 저장되는 데이터 저장 경로
(5) - 주키퍼 사용 TCP 포트
(6) - 주키퍼 앙상블 구성을 위한 서버 설정, server.myid 형식으로 사용

  • 2888 : 서버 노드끼리 통신을 위해 사용, 3888 리더 선출을 위해 사용

 

주키퍼 실행 및 중지

$ ${ZOOKEEPER_HOME}/bin/zkServer.sh start
$ ${ZOOKEEPER_HOME}/bin/zkServer.sh stop
728x90
반응형