개발/Infra

[Infra] 주키퍼를 설치해봅시다.

hojak99 2018. 10. 11. 18:29

주키퍼를 설치해봅시다.

 

큰 목차는 다음과 같습니다.

  1. 주키퍼 설치
  2. 주키퍼 설정
  3. 주키퍼 start
  4. 셋팅 됐는지 확인

 

stable 버전은 3.4.13 인 것 같습니다. 해당 릴리즈 노트를 확인해보면 수정된 사항이 굉장히 많습니다. https://zookeeper.apache.org/doc/r3.4.13/releasenotes.html

 

3.4.13 버전의 주키퍼 다운로드 링크는 다음과 같습니다. 

http://apache.mirror.cdnetworks.com/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz

 

그리고 이제 서버에 접속하도록 하겠습니다.

저는 "AAA", "BBB", "CCC" 에서 작업을 하였습니다. dev 에선 서버 1개만 만들었고, stg 와 prd 에서는 각각 3개 씩 만들었습니다. 주키퍼 서버는 보통 홀수의 개수로 만들어야 한다고 합니다. 이 이유는 한 블로그에서 이렇게 말했습니다.

 데이터가 불일치가 일어나면 데이터 보정이 필요한데 이때 과반수의 룰을 적용하기 때문에 서버를 홀수로 구성하는 것이 데이터 정합성 측면에서 유리하다.

출처: http://over153cm.tistory.com/entry/what-is-ZooKeeper [빅데이터는 넘커]


네. 그렇다고 하네요.

-------------------------------------------



이제 주키퍼를 설치해봅시다.

  1. "wget http://apache.mirror.cdnetworks.com/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
  2. tar -xvf zookeeper - 3.4.13 

이제 zookeeper-3.4.13 이란 폴더가 생겼습니다.

 

zookeeper-3.4.13 폴더에 들어가면 주로 봐야할 폴더는 "conf", "bin" 폴더와 같습니다.

conf 폴더에서 먼저 zookeeper 셋팅을 해봅시다.

conf/zookeeper-sample.cfg 란 파일이 있을텐데 복사를 해줍시다. (cp zookeeper-sample.cfg zoo.cfg) 

 

이제 zoo.cfg 를 보면 dataDir 경로를 설정하는 부분이 나오는데, 저는 그냥 default 값으로 했습니다. default 경로는 /tmp/zookeeper 일 것 입니다. 

그리고 하단에 연결해야 할 다른 서버들 목록을 작성합니다.

 

현재 작업 중인 서버 url 은 "~~~.zk2a.~~~.com" 입니다.

[zoo.cfg]

...

...

...

#server.[seq]=[ip or host]:[다른 서버 연결 port]:[리더 선출 port]

server.1=0.0.0.0:2888:3888

server.2=BBB:2888:3888

server.3=CCC:2888:3888

 

여기서 server.1 을 보면 0.0.0.0:2888:3888 로 해줬는데 기존 주키퍼 서버에서는 해당 부분이 "AAA:2888:3888" 이었습니다. 구글링해도 저렇게 나왔었는데, 저렇게 공개 ip 를 적어주면 나중에 서버를 켰을 때 오류가 발생합니다. 스택오버플로우에서는 0.0.0.0 으로 해줌으러 써 해결을 할 수 있다고 나옵니다. 공개 ip 로 설정을 해주면 port 를 인식하지 못한답니다. (참고 url : https://stackoverflow.com/questions/30940981/zookeeper-error-cannot-open-channel-to-x-at-election-address). 각 서버마다 자신의 공개 ip 대신 로컬 ip 로 변경해줍시다.

 

그리고 server.1, server.2, ... 같이 있는데 이는 구별할 수 있는 시퀀스 넘버 입니다.

 

이제 dataDir 경로로 설정 돼 있는 폴더로 가봅시다.

  1. /tmp/zookeeper (없으면 만들으세요)

 

그리고 "myid" 파일을 만들어서 해당 시퀀스 넘버를 적으세요. 각 서버마다 만들어줘야 합니다. AAA 면 1, BBB 는 2, CCC 는 3

 

각 서버마다 위의 나와있는 일을 해야합니다.

 

 

이제 완료됐습니다. 그리고 이제 서버를 켜야 합니다. 각 서버마다 zookeeper-3.4.13/bin 에 들어가서 "./zkServer.sh start" 를 해줌으로 써 서버를 켜줍시다. stop 으로 끌 수 있어요

이제 한 번 테스트를 해봐야겠죠? 저는 어떤 서버가 leader 서버인지 알고 싶네요

"./zkServer.sh status" 로 하면 leader 인지 follower 인지 다 나옵니다.

 

만약 오류가 발생하면 어떡해야 하나요? 그건 bin 폴더에 zookeeper.out 파일이 있을 거에요. 확인해봅시다.

반응형