티스토리 뷰
kafka with raft(kafka without zookeeper)?
그동안 카프카를 사용할 때 클러스터의 메타데이터와 상태 정보를 관리하기 위해 zookeeper를 설치해 사용하고 있었다. 하지만 아파치는 KIP-500에서 카프카에서 주키퍼를 없애기로 발표했다. 카프카를 위해 주키퍼까지 설치, 관리하는것이 아니라 카프카만 설치하면 된다는 점이 매력적으로 다가왔고, 이를 적용하기로 했다.
카프카 설치
0. 카프카를 설치를 위한 사전작업
- 카프카 파일 다운을 위한 wget 설치
yum install wget
- tar 설치
yum install -y tar
- java 설치
https://bamdule.tistory.com/57 참고
1. 카프카 설치
# 파일 다운로드
wget https://downloads.apache.org/kafka/3.3.1/kafka_2.13-3.3.1.tgz
# 카프카 폴더 생성
mkdir kafka
# 압축해제
tar xzf kafka_2.13-3.3.1.tgz
# 폴더명 kafka로 변경
mv kafka_2.13-3.3.1/* kafka/
# 기존 폴더 삭제
rm -R kafka_2.13-3.3.1
- 카프카 설정파일 수정
- server.properties
cd kafka/config/kraft/
# 설정파일 백업
cp server.properties server.properties_org
- 포트 및 ip 설정 수정
- 기본 포트는 9092, 여기서는 19092로 변경해서 사용했다.
- 로그 디렉토리 설정
- 로그 디렉토리를 변경하고 싶은 경우
- 기존에 사용하던 기타 설정
- delete.topic.enable : true 시 토픽 삭제를 가능하게 함
- auto.create.topics.enable : true 시 producer에 의해 메세지를 broker에 전송할 경우 존재하지 않는 topic이라면 해당 topic을 자동 생성
- message.max.bytes : 레코드 배치(단일 요청)의 최대 크기
advertised.port : 클라이언트에 연결하는데 사용되는 apache zookeeper를 게시하는 포트 지정(미지정시 브로커가 사용하는 포트와 동일한 포트로 사용) → 주키퍼 사용시 사용- transactional.id.expiration.ms : 트랜잭션 상태 업데이트를 기다리는 시간(해당 시간이 지날때까지 업데이트 안하면 트랜잭션 id 만료)
delete.topic.enable=true auto.create.topics.enable=true message.max.bytes=104857600 transactional.id.expiration.ms=1209600000
카프카 시작
카프카 클러스터 아이디 생성
cd kafka
./bin/kafka-storage.sh random-uuid
> lTNdXXXXXXXXXXXXXX
시작
./bin/kafka-storage.sh format -t lTNdXXXXXXXXXXXXXX -c ./config/kraft/server.properties
# 카프카 시작 파일 생성
vi kafka-start.sh
./bin/kafka-server-start.sh -daemon ./config/kraft/server.properties
chmod 777 kafak-start.sh
./kafka-start.sh
참고) 카프카 중지 ./bin/kafka-server-stop.sh
방화벽 열기
firewall-cmd --permanent --zone=public --add-port=19092/tcp
firewall-cmd --reload
firewall-cmd --list-all
카프드랍 실행
카프드랍은 카프카를 손쉽게 사용하게 해주는 GUI도구이다. 기존에 카프드랍을 사용하고 있었기 때문에 이것도 띄워주자
서버에서는 java8 버전을 쓰고 있었고, 카프드랍은 java11 이상의 자바가 필요했기 때문에 카프드랍 폴더에 자바11을 넣어놓고 이를 sh 파일을 작성해 실행했다.
# vi kafdrop-start.sh
nohup jdk-11.0.16.1/bin/java --add-opens=java.base/sun.nio.ch=ALL-UNNAMED \\
-jar kafdrop-3.30.0.jar \\
--kafka.brokerConnect=localhost:19092 \\
--server.port=19000 \\
--management.server.port=19000 > /dev/null &
방화벽 열기
firewall-cmd --permanent --zone=public --add-port=19000/tcp
firewall-cmd --reload
firewall-cmd --list-all
성공
참고
- https://adityasridhar.com/posts/how-to-easily-install-kafka-without-zookeeper
- https://psm1782.medium.com/%EB%8F%99%EB%AC%BC%EC%9B%90%EC%9D%84-%ED%83%88%EC%B6%9C%ED%95%9C-%EC%B9%B4%ED%94%84%EC%B9%B4-zookeeper-less-kafka-a71cba58d5d9
- https://velog.io/@joyfulbean/Apache-Kafka-Zookeeper-%EC%A0%9C%EA%B1%B0-%EC%9D%B4%EC%9C%A0
'Kafka' 카테고리의 다른 글
카프카 컨슈머 옵션 테스트 (0) | 2021.08.15 |
---|
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- kafka with raft
- kafka without zookeeper
- 카프카
- 제우스8.5
- docker
- SynchronousQueue
- s3
- 주키퍼 없는 카프카
- 오블완
- 제우스 로그
- 보관주기
- db 두개
- 쓰레드 변수
- 도커
- multiple datasource
- 제우스8
- cleanup policy
- 다중 데이터소스
- 스레드 동기화
- AWS
- 티스토리챌린지
- API Gateway
- jeus8
- 넥서스 보관주기
- cleanup policies
- 넥서스 파일 보관주기
- php
- jeus8.5
- volatile
- 네트워크
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함