본문 바로가기
클라우드/AWS

리눅스, zookeeper 클러스터 구성하기

by 빈스터디 2023. 3. 21.

너무 복잡해서 kafka를 통해 메시지를 주고 받을 수 있게끔 함.

kafka가 죽어버리면.. 방법이 없음

따라서, kafka 클러스터 구성을 한다.

zookeeper도 클러스터 구성을 한다.

 

zookeeper 설치, kafka 설치

원래는 kafka 설치하면 zookeeper가 자동으로 설치되지만 이번에는 따로 설정을 한다.

 

 

1. 가상머신 6대를 준비한다.(각 3대씩)

 

 

2. JDK를 다운받는다.

yum -y install java-1.8.0-openjdk-devel.x86_64

 

 

3. zookeeper stable 버전으로 다운받는다.

wget https://dlcdn.apache.org/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz

 

아래 링크 참고함

https://zookeeper.apache.org/releases.html

 

Apache ZooKeeper

<!-- Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or ag

zookeeper.apache.org

 

 

4. 압축 해제

tar zxvf apache-zookeeper-3.7.1-bin.tar.gz

 

 

5. zookeeper라는 디렉토리에 파일 이동

mv apache-zookeeper-3.7.1-bin /opt/zookeeper

 

 

6. zookeeper가 관리하는 정보를 한 곳에서 저장하여 관리한다. 저장공간이 될 파일을 생성한다.

mkdir -p /data/zookeeper

 

7. zoo_sample.cfg : 사본을 작성해서 쓰도록 복사한다.

cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg

 

8. vi /opt/zookeeper/conf/zoo.cfg에서 데이터 디렉토리를 바꿔주고, 마지막 줄에 주키퍼 서버들을 클러스터링 등록한다. (아래 더보기에 수정할 부분 적혀있음)

더보기

dataDir=/tmp/zookeeper -> dataDir=/data/zookeeper

마지막 줄에 다음 내용 추가
server.1=192.168.100.10:2888:3888
server.2=192.168.100.20:2888:3888
server.3=192.168.100.30:2888:3888

 

server의 아이디 1,2,3 준 거(다른 걸로 바꿔도 됨)

2888, 3888 포트번호를 가지고 클러스터링 구성을 한다. (상태를 주고 받거나, 리더 선정할 때 사용)

 

기본적으로 zookeeper는 2181 포트를 사용한다.

모든 zookeeper가 2888 포트를 쓰고 있지는 않는다. (리더만 2888 포트를 Listen한다.)

active 상태가 된 서버가 리더, 다른 애들이 follower이다.

리더가 죽으면, 다른 애들 중 하나를 다시 리더로 선정한다.

 

 

<zookeeper 각 server 당 다르게 해야 하는 설정>

9. vi /data/zookeeper/myid에서 아까 더보기 안 설정 파일에  'server.' 뒤에 붙는 아이디를 적어준다.

 

 

10. 실행한다. 실행이 잘 안 될 경우, 재시작

/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg

/opt/zookeeper/bin/zkServer.sh restart /opt/zookeeper/conf/zoo.cfg

 

 

11. 아래의 명령어로 확인한다. ERROR라고 뜰 경우, 방화벽을 해제한다.

출력 결과에 Mode: follower 또는 Mode: leader이 있어야 한다.

/opt/zookeeper/bin/zkServer.sh status

or 방화벽 해제 후 다시 진행

systemctl stop firewalld

 

zookeeper3이 leader로 뜨는 것을 확인할 수 있다.

 

- zookeeper1

 

- zookeeper2

 

- zookeeper3

 

 

그리고 leader인 zookeeper3만 2888 포트가 Listen 모드인 것을 확인할 수 있다.