티스토리 뷰

kafka with raft(kafka without zookeeper)?

그동안 카프카를 사용할 때 클러스터의 메타데이터와 상태 정보를 관리하기 위해 zookeeper를 설치해 사용하고 있었다. 하지만 아파치는 KIP-500에서 카프카에서 주키퍼를 없애기로 발표했다. 카프카를 위해 주키퍼까지 설치, 관리하는것이 아니라 카프카만 설치하면 된다는 점이 매력적으로 다가왔고, 이를 적용하기로 했다.

 

카프카 설치

0. 카프카를 설치를 위한 사전작업

  1. 카프카 파일 다운을 위한 wget 설치
yum install wget
  1. tar 설치
yum install -y tar
  1. 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

성공

 

'Kafka' 카테고리의 다른 글

카프카 컨슈머 옵션 테스트  (0) 2021.08.15
댓글