지구정복

[Zookeeper] zookeeper 수동설치 본문

데이터 엔지니어링 정복/Zookeeper

[Zookeeper] zookeeper 수동설치

eeaarrtthh 2021. 5. 19. 13:14
728x90
반응형
SMALL

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개 서버 다 시작하고 주키퍼를 실행하면 된다.

 

 

 

중간에 삽질하는 과정이 있었지만 다행히 설치했다.. ㅎ

 

 

 

728x90
반응형
LIST
Comments