지구정복
[Zookeeper] zookeeper 수동설치 본문
PC환경 오라클버추얼박스(5.6.2)에 CentOS 7 리눅스 가상 서버 3대 중 3번 서버에 설치예정
주키퍼 설치
[hadoop@hadoop03 ~]$ wget https://mirror.navercorp.com/apache/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz
[hadoop@hadoop03 ~]$ tar xvfz apache-zookeeper-3.6.3-bin.tar.gz
tar.gz파일을 풀고나서 만들어진 디렉토리를 /usr/local로 옮긴다.
[hadoop@hadoop03 ~]$ su - root
암호:
[root@hadoop03 ~]# mv /home/hadoop/zookeeper-3.4.6 /usr/local
[root@hadoop03 ~]# cd /usr/local
[root@hadoop03 local]# ll
심볼릭링크 지정
[root@hadoop03 local]# ln -s apache-zookeeper-3.6.3-bin/ zookeeper
[root@hadoop03 local]# ll
다음으로 주키퍼 설정파일을 수정한다.
[root@hadoop03 ~]# cd /usr/local/zookeeper/conf
[root@hadoop03 conf]# cp zoo_sample.cfg zoo.cfg
[root@hadoop03 conf]# ll
[root@hadoop03 conf]# vi zoo.cfg
아래 내용을 추가한다. 이때 dataDir은 주키퍼가 데이터를 저장할 위치이면서 주키퍼 서버 id 파일을 저장하는 디렉토리이다.
나는 서버3이 주키퍼서버 1이 되도록 했다. 나의 경우 서버3의 고정 ip주소는 192.168.56.105이다.
server.1=192.168.56.105:2888:3888
tickTime=2000
dataDir=/usr/local/zookeeper/data
clientPort=2181
initLimit=5
syncLimit=2
server.1=192.168.56.105:2888:3888
server.2=192.168.56.104:2888:3888
server.3=192.168.56.103:2888:3888
수정이 끝났으면 각 서버에 해당 주키퍼 디렉토리를 전송한다. 이때 각 서버는 모두 켜져있어야 한다.
그리고 -rp옵션은 하위 디렉토리들까지 모두 전송하는 옵션이다.
각 서버의 /usr/local 디렉토리에 전송한다.
[root@hadoop03 ~]# cd /usr/local
[root@hadoop03 local]# scp -rp zookeeper root@hadoop02:/usr/local
[root@hadoop03 local]# scp -rp zookeeper root@hadoop01:/usr/local
각 서버에서 확인해본다.
hadoop01서버
[root@hadoop01 ~]# cd /usr/local
[root@hadoop01 local]# ll
hadoop02서버
[root@hadoop02 ~]# cd /usr/local
[root@hadoop02 local]# ll
각 서버에 환경변수 설정을 해준다.
[root@hadoop03 ~]# vi /etc/profile
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin
source명령어를 통해 환경변수를 적용시켜준다.
[root@hadoop03 ~]# source /etc/profile
나머지 두 대의 서버도 똑같이 설정한다.
그리고 이제 주키퍼 서버의 id를 설정해주어야 한다. 아까 zoo.cfg파일 수정할 때 server.1, server.2, server.3에서 적은 1 2 3이 주키퍼 서버의 id이다. 이 설정파일은 zoo.cfg에서 설정한 dataDir=/usr/local/zookeeper/data 와 같이 data디렉토리 안에 있어야 한다. 따라서 data디렉토리를 만들고 그 안에 myid 파일을 만든다.
[root@hadoop03 zookeeper]# mkdir /usr/local/zookeeper/data
[root@hadoop03 zookeeper]# vi /usr/local/zookeeper/data/myid
나머지 두 대의 서버도 똑같이 디렉토리를 만들고 2, 3을 적어준다.
이제 실행해보자.
먼저 3개의 서버 모두 사용하기 쉽게 하기 위해 아래처럼 alias를 설정한다.
서버1
[root@hadoop01 conf]# alias zookeeper-start="/usr/local/zookeeper/bin/zkServer.sh start"
[root@hadoop01 conf]# alias zookeeper-status="/usr/local/zookeeper/bin/zkServer.sh status"
[root@hadoop01 conf]# alias zookeeper-stop="/usr/local/zookeeper/bin/zkServer.sh stop"
서버2
[root@hadoop02 conf]# alias zookeeper-start="/usr/local/zookeeper/bin/zkServer.sh start"
[root@hadoop02 conf]# alias zookeeper-status="/usr/local/zookeeper/bin/zkServer.sh status"
[root@hadoop02 conf]# alias zookeeper-stop="/usr/local/zookeeper/bin/zkServer.sh stop"
서버3
[root@hadoop03 conf]# alias zookeeper-start="/usr/local/zookeeper/bin/zkServer.sh start"
[root@hadoop03 conf]# alias zookeeper-status="/usr/local/zookeeper/bin/zkServer.sh status"
[root@hadoop03 conf]# alias zookeeper-stop="/usr/local/zookeeper/bin/zkServer.sh stop"
그리고 3개 서버 모두 주키퍼를 실행한다.
이 중에 하나라도 실행하지 않으면 실행하지 않은 서버에 3888포트로 접속할 수 없다고 에러뜬다.
아래 명령어로 3개 서버 각각에서 모두 실행시킨다.
[root@hadoop01 conf]# zookeeper-start
[root@hadoop02 conf]# zookeeper-start
[root@hadoop03 conf]# zookeeper-start
이제 주키퍼가 자동적으로 리더와 팔로우 노드를 선출한다. 이를 확인해보자.
hadoop01서버가 리더, 나머지 서버가 팔로우가 된 것을 확인할 수 있다.
[root@hadoop01 ~]# zookeeper-status
[root@hadoop02 ~]# zookeeper-status
[root@hadoop03 ~]# zookeeper-status
또한 에러를 확인하는 방법은 /usr/local/zookeeper/log 에서 주키퍼 로그를 확인하든지
아래 명령어로 foreground에서 실행되도록해서 터미널에서 바로 확인할 수 있다.
[root@hadoop03 bin]# /usr/local/zookeeper/bin/zkServer.sh start-foreground
실행하는데 2181 포트가 사용중이라고 뜨고 에러날 경우 먼저 2181포트가 어디서 사용중인지 확인한다.
[root@hadoop03 bin]# netstat -nltp | grep 2181
그리고 해당 프로세스를 죽인다.
[root@hadoop03 bin]# kill -9 5243
그리고 다시 3개 서버 다 시작하고 주키퍼를 실행하면 된다.
중간에 삽질하는 과정이 있었지만 다행히 설치했다.. ㅎ
'데이터 엔지니어링 정복 > Zookeeper' 카테고리의 다른 글
[Zookeeper] Zookeeper 개념 및 구성요소 (0) | 2021.05.07 |
---|