[구성 참고 사이트 및 기타 출처]
https://abbf.tistory.com/25 내용 참고
[테스트 형상]
구분 | 버전 | 비고 |
OS | CentOS 7.9 (3.10.0-1160.90.1.el7.x86_64) | vm 2대로 구성 server1 : 4c 4g server2 : 4c 4g |
kafka | kafka_2.13-3.6.1 | |
zookeeper | apache-zookeeper-3.8.3 |
** 비고 : 기존 kafka_2.12-3.6.1로 했는데 2.13-3.6.1 로 다시함.
새롭게 진행 하고 싶다면, zookeeper snap shot 저장되는 디렉토리의 "version-2" 디렉토리를 다른 곳으로 옮겨줘야
빈 깡통의 kafka를 볼 수 있음.
처음에 kafka data log의 위치 문제인 줄알았으나(로그 디렉토리 위치는 그대로였음) 데이터를 삭제 하고 재기동 했을 때도 동일하게 조회가 됐었음...
zookeeper 자체의 변경이 없었기 때문에 kafka 신규 버전이었어도 topic list가 기존 데이터로 조회가 되었던거였음.
운영상에서 단순 kafka 의 버전만 업그레이드 하는 경우에 데이터 손실 없이 사용 할 수 있다는 장점은 있을 순 있을 듯..
=====================================================================================
VM 2대(보통 3대로 테스트들 하셨던것 같으나) 를 가지고 테스트 진행 함.
서버1,2의 각 IP들은 /etc/hosts 파일에 master.com 과 slave1.com 으로 매핑
구성 순서 : zookeeper -> kafka 설정
[zookeeper]
1. node 번호 넣는 영역 구성
서버 내 별도 디스크에 파일 생성함.
- server1, 2 /data/ 영역에 zookeeper 디렉토리 생성
# mkdir -p /data/zookeeper
# cd /data/zookeeper
- server1에서 myid 파일에 값 1 저장
# echo 1 > myid
- server2에서 myid 파일에 값 2 저장
# echo 2 > myid
2. zookeeper config 파일 생성
- zookeeper 엔진 conf 영역의 zoo_sample.cfg 파일을 zoo.cfg로 복사.
# cp -a /zookeeper/conf/zoo_sample.cfg /zookeeper/conf/zoo.cfg
아래 영역 수정
server1 | server2 |
# the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. dataDir=/data/zookeeper # the port at which the clients will connect clientPort=2181 server.1=0.0.0.0:2888:3888 server.2=slave1.com:2888:3888 |
# the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. dataDir=/data/zookeeper # the port at which the clients will connect clientPort=2181 server.1=master.com:2888:3888 server.2=0.0.0.0:2888:3888 |
3. 기동
# cd /zookeeper/bin/
# ./zkServer.sh start
4. 중단
# cd /zookeeper/bin/
# ./zkServer.sh stop
5. 상태
# cd /zookeeper/bin/
# ./zkServer.sh status
[kafka]
1.서버 설정 파일 수정
# /kafka/config/server.properties
1) broker.id : zookeeper myid 번호랑 맞춤 (server1 = 1, server 2 = 2)
2) advertised.listeners 를 주석 해제 하라는 내용이 있었으나 오히려 테스트 하다 안되서 주석처리함
대신 listeners 만 주석 해제 (#listeners=PLAINTEXT://:9092)
3) log.dirs : 서버로그는 ~kafka/logs에 남는거 같고, 메타 데이터와 토픽 파티션 경로에 대한 로그를 남기는 곳 으로 보여짐. 로그 영역을 따로 kaf_log 로 별도 지정함.
4) zookeeper.connect
server 1 | # The id of the broker. This must be set to a unique integer for each broker. broker.id=1 # listeners = PLAINTEXT://your.host.name:9092 listeners=PLAINTEXT://:9092 # A comma separated list of directories under which to store log files log.dirs=/kafka/kaf_log # root directory for all kafka znodes. zookeeper.connect=mater.com:2181,slave1.com:2181/data/kafka-data |
server 2 | # The id of the broker. This must be set to a unique integer for each broker. broker.id=1 # listeners = PLAINTEXT://your.host.name:9092 listeners=PLAINTEXT://:9092 # A comma separated list of directories under which to store log files log.dirs=/kafka/kaf_log # root directory for all kafka znodes. zookeeper.connect=slave1.com:2181,master.com:2181/data/kafka-data |
** /data/kafka-data
znode의 디렉토리를 루트노드가 아닌 하위 디렉토리로 설정해 주는 작업 이라고 하는데, 실제 해당 디렉토리에 쌓이는건 없었음...
2. 로그 레벨 수정
/kafka/config/log4j.properties
브로커 로그 상세를 좀 보고싶어서 테스트 하면서 아래만 INFO -> DEBUG 수정 해봤었음.
server2 에서 server1 보다 과도하게 많은 server.log를 찍은게 흠이었는데 사유는 잘모르겠음...
이거 외에 다른 것들도 전부 DEBUG로 변경 해봤으나 무의미한게 너무 많이 찍히는 듯 하여 아래 org.apache.kafka 만 DEBUG로 봄. (위 kafka 를 debug로 바꾸면 너무 많이찍힘..)
# Change the two lines below to adjust the general broker logging level (output to server.log and stdout) log4j.logger.kafka=INFO log4j.logger.org.apache.kafka=DEBUG |
** 결과적으로 DEBUG에서 다시 INFO 로 바꿨다…ㅋㅋㅋ
3. 기동/가용 메모리 수정
/kafka/bin/kafka-server-start.sh
서버 메모리 관련으로 기존 잡혀있던 힙메모리를 1G -> 512m 로만 변경했다.
if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then export KAFKA_HEAP_OPTS="-Xmx512m -Xms512m" fi |
4. 기동
# cd /kafka/bin
# ./kafka-server-start.sh -daemon ../config/server.properties
5. 중단
# cd /kafka/bin
# ./kafka-server-stop.sh
6. 상태
# cd /kafka/logs
# tail -f server.log
[추가/수정]
24.02.05 | kafka | /data/kafka-data | 해당 영역을 zookeeper CLI 로 조회 하였더니 뭔가 디렉토리 형상으로 내용이 확인이 됐다. zookeeper CLI 로 znode를 생성 하였어도 /data/kafka-data 영역은 여전히 ls나 ll로 조회 했을때 아무것도 안나오지만, CLI로 확인 시에는 정상적으로 보여진다. |
24.02.05 | kafka | server.properties | server2 의 server.properties zookeeper.connect의 master.com 포트번호 오타가 있었다. 2181인데 2821 로 잘못 입력했던 것. 3node 구성하면서 한번 더 체크하느라 글을 봤는데, 오기입 되어있어 원래 테스트 하던 VM에서 해당 포트를 다시2 181 로 바꾸고 재 기동 하였으나 kafka가 정상기동이 되지 않았다. (zookeeper의 meta정보와 kafka의 meta정보 사이에서 2821로 계속 통신이 됐었던 것 같아서 그런것 같음) zookeeper의 snapshot 디렉토리(version-2)와, 기존에 kafka의 zookeeper connect 디렉토리였던 /data/kafka-data 디렉토리를 bk로 뜨고 동일이름으로 새로 만들어준 후 zookeeper/kafka 재기동 하였고 정상적으로 뜨는 것을 확인 했다. |
'업무 > kafka zookeeper' 카테고리의 다른 글
[zookeeper] zookeeper snapshot (0) | 2024.02.08 |
---|---|
[GCP][kafka,zookeeper] GCP 3node 구성 진행 (update 24.03.26) (0) | 2024.02.04 |
[kafka] 데이터 producer & consumer test (0) | 2024.01.12 |
[kafka] topic 생성 및 확인 (0) | 2024.01.12 |
[kafka] kafka 구성 및 공부 시 참고 사이트 (0) | 2024.01.12 |