주키퍼 튜토리얼 - 독립, 복제모드

gnswp21·2024년 5월 13일

다운로드

안정 릴리스를 다운

https://zookeeper.apache.org/releases.html#download

독립형 운영

독립형 모드는 직관적 서버는 단일 jar파일에 포함되어있다.

주키퍼 시작엔 구성파일이 필요. 아래 파일을 작성한다.

conf/zoo.cfg

tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181

실행

bin/zkServer.sh start

서버에 연결

bin/zkCli.sh -server 127.0.0.1:2181

help 를 치면 쓸 수 있는 명령 나옴

생성 데이터 조회 수정 삭제의 튜토리얼

  • create /zk_test hello
  • get /zk_test
  • set /zk_test bye
  • delete /zk_test

복제 모드

앙상블이라 불리는 주키퍼 그룹

간단하게 znode 트리에 대한 수정이 앙상블의 모든 노드에 복제되도록 보장하는것

이를 위해 zab이라는 프로토콜

  1. 대표 선출
  2. 원자적 브로드캐스트

동일한 애플리케이션에 있는 복제된 서버 그룹을 쿼럼 이라고 하며 , 복제 모드에서는 쿼럼에 있는 모든 서버가 동일한 구성 파일의 복사본을 갖습니다.

최소 3개의 서버가 필요

새 설정 파일 구성

conf/zoo.cfg

tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=zoo1:2888:3888
server.2=zoo2:2888:3888
server.3=zoo3:2888:3888

initLimit 쿼럼의 주키퍼 서버가 리더에 연결해야 하는 시간 제한

syncLimit  서버가 리더로부터 달라진 상태를 얼마나 오래 유지하는지

두 시간 단위 TickTime이고 이는 2000ms 당 1틱, initlimit은 5틱이므로 10초이다.

server.n

  • 주키퍼 서비스를 구성하는 서버 나열
  • zoo → 자산의 서버의 호스트이름을 적자
  • 두개의 포트 번호 추가
    • 2181: 클라이언트 연결
    • 2888: 리더일때 팔로워 연결을 위해 (업데이트 동의할 때 등))
    • 3888: 리더 선출에서 다른 서버와의 연결을 위해

/var/lib/zookeeper/myid

myid 파일을 생선한 뒤에 각 서버의 순서에 맞게 1,2,3을 작성한다.

ex)

  • zoo1 /var/lib/zookeeper/myid
1

실행

노드 1, 2, 3에서 각각 bin/zkServer.sh start

각 노드에서 주키퍼 서버를 실행하면 주키퍼 앙상블이 구성된다.

테스트

노드1에서 bin/zkCli.sh -server 127.0.0.1:2181

독립모드에서 운영하는 것과 같이 cli 작동이 잘 되는 것을 확인할 수 있다.

0개의 댓글