카프카 클러스터 만들기
카프카 클러스터 만들기
Kafka Kraft 클러스터 구성 및 설치
설치
- ec2 보안 그룹 모든 트래픽 허용으로 설정
- 카프카 바이너리 파일 다운로드(또는 소스코드 다운 후 빌드)
# java 설치
sudo apt update -y
sudo apt install openjdk-17-jdk -y
# kafka 다운로드 및 압축풀기
wget https://downloads.apache.org/kafka/3.9.0/kafka_2.13-3.9.0.tgz
sudo tar -xvzf kafka_2.13-3.9.0.tgz -C /usr/local/
sudo mv /usr/local/kafka_2.13-3.9.0 /usr/local/kafka
# 방화벽 해제
sudo ufw disable
sudo systemctl stop ufw
sudo systemctl disable ufw
# kafka 디렉터리로 이동
cd /usr/local/kafka
# log directory 생성
sudo mkdir -p logs/kraft-combined-logs
# log 권한 추가
sudo chmod -R 755 /usr/local/kafka/logs/
sudo chown -R $(whoami):$(whoami) /usr/local/kafka/logs/
# kraft config변경
sudo nano config/kraft/server.properties
- 노드1 server.properties(인스턴스 별로 설정)
노드1 server.properties
process.roles=broker,controller
node.id=1
controller.quorum.voters=1@노드1내부IP주소:9093,2@노드2내부IP주소:9093
listeners=PLAINTEXT://노드1내부IP주소:9092,CONTROLLER://노드1내부IP주소:9093
advertised.listeners=PLAINTEXT://노드1내부IP주소:9092
log.dirs=/usr/local/kafka/logs/kraft-combined-logs # 로그디렉터리 수정정
num.partitions=3
offsets.topic.replication.factor=3
transaction.state.log.replication.factor=3
transaction.state.log.min.isr=3
listener.security.protocol.map=PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT
controller.listener.names=CONTROLLER
listener.name.plaintext=PLAINTEXT
- 노드2 server.properties
노드2 server.properties
process.roles=broker,controller
node.id=2
controller.quorum.voters=1@노드1내부IP주소:9093,2@노드2내부IP주소:9093
listeners=PLAINTEXT://노드2내부IP주소:9092,CONTROLLER://노드2내부IP주소:9093
advertised.listeners=PLAINTEXT://노드2내부IP주소:9092
log.dirs=/usr/local/kafka/logs/kraft-combined-logs # 로그 디렉터리 수정
num.partitions=3
offsets.topic.replication.factor=3
transaction.state.log.replication.factor=3
transaction.state.log.min.isr=3
listener.security.protocol.map=PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT
controller.listener.names=CONTROLLER
listener.name.plaintext=PLAINTEXT
- 옵션
sudo nano /etc/hosts
# 다음 정보들을 입력 후 저장
ip주소 kafka_1
ip주소 kafka_2
클러스터 uuid 생성
- 임의의 한대 서버에서 cluster uuid 생성
./bin/kafka-storage.sh random-uuid
# 위에서 생성된 cluster uuid로 카프카 노드별로 스토리지 포맷
sudo ./bin/kafka-storage.sh format -t uuid값 -c ./config/kraft/server.properties
카프카 시작
- VM 다시 시작 시 명령 필요
bin/kafka-server-start.sh -daemon config/kraft/server.properties
메타데이터 퀴럼 상태 확인
./bin/kafka-metadata-quorum.sh --bootstrap-server 노드1주소:9092,노드2주소:9092 describe --status
브로커 상태 확인
./bin/kafka-broker-api-versions.sh --bootstrap-server ip주소:9092
토픽 생성
./bin/kafka-topics.sh --create --bootstrap-server 노드1주소:9092,노드2주소:9092 --replication-factor 2 --partitions 2 --topic real_topic
토픽 목록 확인
./bin/kafka-topics.sh --bootstrap-server 노드1주소:9092,노드2주소:9092 --list
토픽 자세히 확인
./bin/kafka-topics.sh --bootstrap-server 노드1주소:9092,노드2주소:9092 --describe --topic real_topic
check log
tail -f logs/server.log
produce
./bin/kafka-console-producer.sh --bootstrap-server 노드1주소:9092,노드2주소:9092 --topic real_topic
consume
./bin/kafka-console-consumer.sh --bootstrap-server 노드1주소:9092,노드2주소:9092 --topic real_topic --from-beginning
프로듀서 성능테스트
./bin/kafka-producer-perf-test.sh --topic auth --record-size 100 --throughput 1000 --num-records 10000 --producer-props acks=1 bootstrap.servers=192.168.54.7:9092,192.168.55.8:9092
컨슈머 성능 테스트