아파치 주키퍼(Apache ZooKeeper)는 아파치 소프트웨어 재단 프로젝트 중의 한 소프트웨어 프로젝트로서 공개 분산형 구성 서비스, 동기 서비스 및 대용량 분산 시스템을 위한 네이밍 레지스트리를 제공한다. 주키퍼는 하둡의 한 하위 프로젝트이었으나 지금은 독립적인 상위 프로젝트이다.
출처 : 위키백과
위의 설명처럼 메시키 큐를 관리하고 동기 서비스 및 대용량 분산 시스템을 구축하기 위해 Apache Zookeeper 를 사용하는 경우가 있습니다. 이제 설치 및 사용 방법에 대해 알아보겠습니다.
운영환경
CentOS 7.6
Java jdk 설치
먼저 java jdk를 필수로 설치를 합니다.
[root@localhost ~]$ yum install java-1.8.0-openjdk.x86_64
profile 정보를 변경합니다.
[root@localhost ~]$ vim /etc/profile
# profile 파일 안에 아래의 내용을 추가
export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk
source
명령어를 이용해서 변경된 내용 적용합니다.
[root@localhost ~]$ source /etc/profile
Zookeeper 설치
Zookeeper 서버 패키지를 다운로드하고 환경 설정을 합니다.
계정 생성
먼저 계정을 생성합니다. 계정을 생성하는 이유는 Zookeeper를 별도로 관리하기 위함입니다.
[root@localhost ~]$ useradd zookeeper
[root@localhost ~]$ passwd zookeeper
생성된 계정으로 변경합니다.
[root@localhost ~]$ su - zookeeper
다운로드 및 설치
아래의 명령어 순서대로 실행해서 다운로드 한 후 압축을 해제합니다.
[zookeeper@localhost ~]$ cd /home/test
[zookeeper@localhost zookeeper]$ wget http://apache.mirror.cdnetworks.com/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
[zookeeper@localhost zookeeper]$ tar xvfzp zookeeper-3.4.14.tar.gz
[zookeeper@localhost zookeeper]$ ln -s zookeeper-3.4.14 zookeeper
설정 파일 변경
데이터 디렉터리 경로와 서버 설정을 합니다.
[zookeeper@localhost test]$ cd zookeeper/conf
[zookeeper@localhost conf]$ cp zoo_sample.cfg zoo.cfg
[zookeeper@localhost conf]$ vim zoo.cfg
dataDir=/home/test/zookeeper/data #zookeeper 데이터 위치, 원하는 경로에 저장입력
server.1=zoo-1:2888:3888 #멀티 서버 설정 (주키퍼 서버가 한곳이 아닐때)
# server.2=server_host_1:2888:3888
# server.3=server_host_2:2888:3888
myid 생성
반드시 myid 파일을 dataDir 속성에 넣었던 경로에 만들어야 합니다. 호스트마다 아이디를 부여해야 합니다. 위의 설정에서 server.1에만 설정하였기 때문에 {dataDir}/myid
내부에 1
이라는 값이 있어야 합니다. 그리고 이 값은 유일해야 하고 1~255 사이로 설정해야 합니다.
[zookeeper@localhost ~]$ cd /home/test/zookeeper/data
[zookeeper@localhost data]$ touch myid
[zookeeper@localhost data]$ echo 1 > myid
Zookeeper 서버 실행
다음 명령어를 실행하면 이상없이 서버가 실행됩니다.
[zookeeper@localhost ~]$ cd /home/test/zookeeper/bin
[zookeeper@localhost bin]$ ./zkServer.sh start
실행 확인
[zookeeper@localhost bin]$ ./zkCli.sh -server zoo-1:2181
[zookeeper@localhost bin]$ ls /
Zookeeper 서버 중지
[zookeeper@localhost bin]$ ./zkServer.sh stop
추가 설정
추가적으로 프로세스 저장 경로와 로그 저장 경로 변경 및 환경변수 등록을 위한 절차입니다. 변경하지 않아도 됩니다.
폴더 권한 변경
Zookeeper 프로세스 아이디 저장 폴더와 로그 저장 폴더를 생성하고 권한을 변경합니다.
# root 계정으로 전환
[zookeeper@localhost ~]$ su -
[root@localhost ~]$ cd /var/run
[root@localhost run]$ mkdir zookeeper
[root@localhost run]$ chown zookeeper:zookeeper /var/run/zookeeper
[root@localhost run]$ cd ../log
[root@localhost log]$ mkdir zookeeper
[root@localhost log]$ chown zookeeper:zookeeper /var/log/zookeeper
# zookeeper 계정으로 다시 돌아가기
[root@localhost log]$ exit
추가로 위 두개의 폴더에 링크를 생성합니다.
[zookeeper@localhost log]$ cd /home/test/zookeeper
[zookeeper@localhost zookeeper]$ ln -s /var/run/zookeeper/ pids
[zookeeper@localhost zookeeper]$ ln -s /var/log/zookeeper/ logs
환경변수 변경
export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk
export ZOOKEEPER_HOME=/home/test/zookeeper
export ZOOKEEPER_CONF_DIR=$ZOOKEEPER_HOME/conf
export ZOOKEEPER_LOG_DIR=/var/log/zookeeper
export ZOO_LOG_DIR=$ZOOKEEPER_LOG_DIR
export ZOOKEEPER_PID_DIR=/var/run/zookeeper
export ZOOPIDFILE=$ZOOKEEPER_PID_DIR/zookeeper_server.pid
export SERVER_JVMFLAGS=-Xmx1024m
export JAVA=$JAVA_HOME/bin/java
export CLASSPATH=$ZOOKEEPER_CONF_DIR:/usr/share/java/jline.jar:/usr/share/java/log4j-1.2.jar:/usr/share/java/xercesImpl.jar:/usr/share/java/xmlParserAPIs.jar:/usr/share/java/netty.jar:/usr/share/java/slf4j-api.jar:/usr/share/java/slf4j-log4j12.jar:/usr/share/java/zookeeper.jar
서버 재시작
[zookeeper@localhost bin]$ ./zkServer.sh stop
[zookeeper@localhost bin]$ ./zkServer.sh start
방화벽 설정
[root@localhost ~]$ firewall-cmd --permanent --zone=public --add-port=2181/tcp
[root@localhost ~]$ firewall-cmd --permanent --zone=public --add-port=2888/tcp
[root@localhost ~]$ firewall-cmd --permanent --zone=public --add-port=3888/tcp
## 방화벽 재시작
[root@localhost ~]$ firewall-cmd --reload
'DevOps > Linux' 카테고리의 다른 글
[CentOS] NFS 설치 및 설정 방법 (0) | 2022.09.17 |
---|---|
[CentOS] Apache Kafka 설치 및 사용 방법 (0) | 2022.09.17 |
[CentOS] Proxy 서버를 사용한 내부망 yum 사용 방법 (0) | 2022.09.16 |
[CentOS] VNC 설치 및 사용 방법(오프라인 환경) (0) | 2022.09.16 |
[CentOS] 기본 명령어 (0) | 2022.09.15 |
IT 기술과 개발 내용을 포스팅하는 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!