aws인스턴스로 Zookeeper ensemble 만들기
카프카 클러스터를 구성하기 위해서 zookeeper ensemble는 우선적으로 설치되어 있어야 한다. 근데 이놈의 주키퍼는 제대로 깔리지가 않는다. 구글링을 해봐도 잘 안되서 내가 어케어케 찾아서 했다. 그럼 그 삽질의 역사를 정리해서 나중에 나도 다시 삽질 안해보고자 한다.
aws 인스턴스 만들기
kafka 용으로 인스턴스를 만들거면 3개를 만들면 된다. ensemble라고 부를려면 최소한 3개는 있어야 한다고 구글에서 그랬다. 걍 하자.ㅣ
인스턴스 이미지는 우분투 18.04 LTS로 했다.
보안 그룹설정은 다음과 같이 해준다.
Java 설치
카프카는 jdk 1.8.0 이상 버전이 필요하다. 자바를 깔자.
우분투에서 root 계정으로 전환한다.
sudo su
명령어 치면 됨.
그 다음
sudo apt-get update
명령어를 한번 쳐준다. 그냥 자바 다운이 안되서 이거 해줘야한다.
그다음
apt-get install openjdk-8-jdk
쳐서 자바 다운로드 받으면됨.
Zookeeper 설치
저장 위치는 /usr/local 에다가 저장해라
cd /usr/local
주키퍼 다운로드 할 링크는 다음과 같다.
https://zookeeper.apache.org/releases.html
여기로 가서 다운 받아라. 나는 LTS버전인 3.6.2 받았다.
주의!!!!!!
여기서 암거나 다운 받으면 안된다.
여기 빨간색 체크 된 곳으로 들어가서 받아야 한다. 왜냐면 아래 Source release 링크는 bin 파일이 아니다. 그래서 나중에 주키퍼 실행 할 때 컴파일이 안되있어서 quoram머시기 클래스를 못찾는다고 에러뜬다. 무조건 위에 빨간색 친 링크로 들어가서 다운 받아라.
요 링크 복사해서
wget 명령어로 다운 받아라.
wget https://downloads.apache.org/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.2-bin.tar.gz
그 다음 압축 풀어주자
tar zxf {다운 받은 파일 이}
꿀팁
심볼릭 링크로 주키퍼 폴더의 이름을 바꿀 수 있다.
ln -s apache-zookeeper-3.6.2-bin zookeeper
ls -la zookeeper
이러면 다음과 같은 출력이 나온다.
lrwxrwxrwx 1 root root {오늘 날짜} zookeeper -> apache-zookeeper-3.6.2-bin
이러면 cd zookeeper 하면 apache-zookeeper-3.6.2-bin 폴더로 가게 된다. 포인터 같다고 이해하면 될 듯
data 디렉토리 설정 및 hosts 설정
주키퍼는 애플리케이션에서 별도의 데이터 디렉토리를 사용한다. 여기서 pid,myid가 저장되어 있음. 나중에 적을 zoo.cfg에서도 이 디렉토리를 참조해서 zookeeper를 돌린다. 스냅샷도 여기 폴더에 저장함. 배경은 대충 이렇다.
먼저 root 이용자의 root 디렉토리로 이동하자
cd /
그다음 data 디렉토리 만들어 주자
mkdir data
myid 설정을 해준다. 해당 인스턴스가 1번째 서버 역할을 하게 되면 1 2번째 서버 역할을 하면 2 3번째 서버 역할을 하면 3 을 해준다.
아래 예시는 1번째 서버를 기준으로 코드 작성을 했다. 2,3번째 서버이면 1 대신 2 or 3을 넣으면 된다.
echo 1 > /data/myid
hosts 설정은 서로 다른 인스턴스 끼리 통신을 하기 위해 설정을 해주는 것이다. 우선 /etc/hosts 파일에 들어가라. hosts 파일은 vim으로 열어주자.
이런 식으로 hosts 설정을 해준다. 여기서 나는 인스턴스 이름을 test-broker01,02,03으로 편의상 만들었다. 이 이름은 기호에 따라 바꿀 수 있다. 해당 인스턴스 본인의 주소는 0.0.0.0으로 지정하고 다른 2 인스턴스의 ip는 적어주면 된다. public ip4를 적어주면 된다.
Zoo.cfg 설정
자 다시 zookeeper 폴더로 돌아가자
cd /usr/local/zookeeper/conf
여기서 vim zoo.cfg 로 zoo.cfg파일을 만든다.
tickTime=2000
dataDir=/data
clientPort=2181
initLimit=20
syncLimit=5
server.1=test-broker01:2888:3888
server.2=test-broker02:2888:3888
server.3=test-broker03:2888:3888
이거 복붙 하면 된다. test-broker는 인스턴스 아이디 다른걸로 했으면 그에 맞게 맞춰주면 된다.
zookeeper 실행
자 이제 끝났다. zookeeper를 실행해보자.
/usr/local/zookeeper/bin/zkServer.sh start
(현재 디렉토리 위치에 따라 명령어가 달라질 수 있지만 bin/zkServer.sh 파일을 작동시키는 건 다 같다.) 이렇게 하면 다음 과 같은 output이 뜨면서 실행이 된다.
그럼 된거다. 클러스터가 제대로 작동하고 있는지 보려면
/usr/local/zookeeper/bin/zkServer.sh status
입력을 하면 3개 인스턴스 중에 2개는 MODE: follower가 뜰거고 하나는 MODE:Leader 가 뜰것이다. 이러면 제대로 구성된 것이다.
끝
수고하셨습니다. zookeeper 설치가 다 완료되었습니다. 이제 Kafka를 깔러 가봅시다.
Leave a comment