khstar
zookeeper 실행하기 및 주의 사항 본문
zookeeper의 설치 방법은 https://mslee89.tistory.com/188 에 잘 나와 있습니다.
참고 하시고요.
전 zookeeper를 실행하는 방법에 대해 글을 적습니다.
zookeeper 실행하기 글을 적는 이유는 하다 보면 저 처럼 단순한 경우 오해를 할수 있기 때문입니다. ;;
우선 서버 두대만 설치했습니다. CentOS7에 설치하면서 /usr/local/zookeeper로 설치를 하였습니다.
환경설정은 zoo.cfg 파일에 작성을 하면 됩니다.
standalone 실행인 경우 아래의 서버 설정을 삭제하거나 주석처리 하시면 됩니다.
#server.1=master:2888:3888
#server.2=slave1:2888:3888
실행방법은 /usr/local/zookeeper/bin의 zkServer.sh start 명령을 주시면 됩니다.
그리고 실행을 확인하기 위하 zkServer.sh status를 실행하면 첨부이미지와 같이 Mode : standalone 이 표시됩니다.
이제 zkCli.sh -server localhost:2181 명령어를 실행하면 로그가 쭉 나오고 첨부이미지와 같이
[zk: localhost:2181(CONNECTED) 0] 프롬프트가 표시 됩니다.
[zk: localhost:2181(CONNECTED) 0] 프롬프트가 표시 됩니다. 프롬프트에서 ls / 명령어를 실행하면 트리가 보입니다.
그런데 MultiNode Mode로 실행하는 경우 위의 zoo.cfg 파일에 각각의 서버 설정을 해주셔야 합니다.
server.1=master:2888:3888
server.2=slave1:2888:3888
여기서 master, slave1은 서버 host명입니다. /etc/hosts 에 host 설정이 되어 있는지 확인하세요.
그리고 master, slave1서버에 모두 zookeeper가 설치되어 있고 같이 설정되어 있어야 합니다.
뭐 이건 위에 링크된 사이트에 따라 설치를 하셨다면 문제 없겠죠.
자 우선 master에서 zkServer.sh start 명령어를 이용해 zookeeper를 실행하고
zkServer.sh status 명령어로 실행 상태를 확인하겠습니다.
zookeeper가 실행되었다고 나옵니다.
그런데 zkServer.sh status를 실행하면 첨부 파일과 같이 Error가 표시 됩니다.
zkCli.sh -server localhost:2181 로 서버에 붙으면 다음과 같은 로그가 계속 출력됩니다. ㅜㅜ
이 문제는 아주~~~ 단순하게도 제가 단순했기 때문입니다. ㅜㅜ
zookeeper는 각 서버 별로 직접 실행해 줘야 합니다. 서버들이 상호 연결이 되면 해결되는 문제였습니다.
앞에서 slave1에서 zkServer.sh start 를 실행합니다.
자 위와 같이 slave1에서 zookeeper를 실행했습니다. 다시 master 서버에서 zkServer.sh status를 확인합니다.
master 서버의 Mode 가 leader로 표시됩니다.
slave1 서버의 Mode는 follower로 표시됩니다.
주의
zookeeper가 multinode로 실행되는 경우 leader와 follower는 zookeeper가 상황에 맞춰서 직접 선택하기 때문에
상황에 따라 변경될수 있습니다. 오류가 아니니 오해하지 마시기 바랍니다.