주키퍼를 설치해봅시다.
큰 목차는 다음과 같습니다.
- 주키퍼 설치
- 주키퍼 설정
- 주키퍼 start
- 셋팅 됐는지 확인
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 [빅데이터는 넘커]
네. 그렇다고 하네요.
-------------------------------------------
이제 주키퍼를 설치해봅시다.
- "wget http://apache.mirror.cdnetworks.com/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz"
- 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 경로로 설정 돼 있는 폴더로 가봅시다.
- /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 파일이 있을 거에요. 확인해봅시다.