주키퍼는 카프카와 같은 분산 애플리케이션을 사용하게 되면 분산 애플리케이션 관리를 위한 코디네이션 애플리케이션이 추가로 필요한데, 코디네이션 애플리케이션 중 안정적인 코디네이션 서비스로 검증된 "주키퍼" 를 많이 사용하고 있습니다.
쿼럼 유지를 위해 홀수로 구성해야 하고 이를 위해 여러 대의 서버로 구성하는 것을 앙상블(클러스터)라고 합니다.
znode(상태정보 저장)는 Key-Value 형태로 저장되며 저장된 것을 서로 주고받으며 데이터 유지를 합니다.
주키퍼 동작을 위해서는 java 설치가 되어 있어야 하기 때문에 미리 설치가 필요합니다.
$ sudo yum -y install java-1.8.0-openjdk.x86_64
Shell
복사
주키퍼 설정합니다.
앙상블(클러스터) 구성 시에 znode(상태정보) 스냅샷과 트랜잭션 로그들을 저장하기 위한 디렉터리를 별도로
생성해 주는 것이 좋지만 싱글 노드 구성이므로 로컬 파일시스템에 생성합니다.
$ mkdir -p /home/ec2-user/zookeeper/data
Shell
복사
그리고 주키퍼 환경설정 파일인 zoo.cfg 파일을 만들어야 합니다
configuration 항목에 대해서는 아래의 링크에서 확인 가능합니다.
https://zookeeper.apache.org/doc/r3.8.0/zookeeperAdmin.html#sc_configuration
$ vi zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/ec2-user/zookeeper/data
clientPort=2181
server.1=ip-<xxx-xx-xx-xx>.ap-northeast-2.compute.internal:2888:3888
Shell
복사
EC2 Security Group에서 Inbound Rules에 2181 port를 추가해 줘야 합니다.
참고로 2888, 3888 port는 앙상블(클러스터) 연결 및 리더 선출에 해당되는 Port이기 때문에 Standalone
환경에서는 선택 사항입니다.
이제 주키퍼 실행할 수 있습니다.
$ /home/ec2-user/zookeeper/apache-zookeeper-3.8.0-bin/bin/zkServer.sh start
/bin/java
ZooKeeper JMX enabled by default
Using config: /home/ec2-user/zookeeper/apache-zookeeper-3.8.0-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
$ /home/ec2-user/zookeeper/apache-zookeeper-3.8.0-bin/bin/zkServer.sh stop
/bin/java
ZooKeeper JMX enabled by default
Using config: /home/ec2-user/zookeeper/apache-zookeeper-3.8.0-bin/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
$ /home/ec2-user/zookeeper/apache-zookeeper-3.8.0-bin/bin/zkServer.sh status
/bin/java
ZooKeeper JMX enabled by default
Using config: /home/ec2-user/zookeeper/apache-zookeeper-3.8.0-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: standalone
Shell
복사
ZooKeeper Administrator’s Guide