인프라

카프카 클러스터 구성하기

오늘의 나1 2023. 9. 17. 19:05

클러스터 구성

  • 주키퍼 클러스터 1개 - 주키퍼 서버 3개로 구성됨
  • 카프카 클러스터 1개 - 카프카 서비 3개로 구성됨

할 일

  • 주키퍼/카프커 클러스터 공통 설정: JRE 설치, 호스트명 설정, 아파치 카프카 다운로드 
  • 주키퍼 클러스터에만 설정: 아파치 카프카 주키퍼 클러스터 설정 → 주키퍼 서버 띄우기
  • 카프카 클러스터에만 설정: 아파치 카프카 카프카 클러스터 설정 → 카프카 서버 띄우기

공통으로 할 일

JRE 설치

sudo yum install java-17-amazon-corretto-headless

호스트명 설정 

sudo vi /etc/hosts
# 아래 내용을 추가한다.
[주커퍼1 프라이빗IP] zookeeper1
[주키퍼2 프라이빗IP] zookeeper2
[주키퍼3 프라이빗IP] zookeeper3
[카프카1 프라이빗IP] kafka1
[카프카2 프라이빗IP] kafka2
[카프카3 프라이빗IP] kafka3

아파치 카프카 다운로드 

카프카 다운로드 받아서 /opt/ 폴더 하위로 옮기기

wget https://dlcdn.apache.org/kafka/3.5.0/kafka_2.13-3.5.0.tgz
sudo tar zxvf kafka_2.13-3.5.0.tgz -C /opt/
ls 
ls -l /opt/

카프카 심볼릭 링크 만들기 

sudo ln -s /opt/kafka_2.13-3.5.0/ /opt/kafka
ls -l /opt/

 

주키퍼 클러스터 구성

주키퍼 노드 설정

sudo vi /opt/kafka/config/zookeeper.properties
dataDir=/data/zookeeper
# the port at which the clients will connect
clientPort=2181
# disable the per-ip limit on the number of connections since this is a non-production config
maxClientCnxns=0
# Disable the adminserver by default to avoid port conflicts.
# Set the port to something non-conflicting if choosing to enable this
admin.enableServer=false
# admin.serverPort=8080
# zookeepr nodes address
server.1=zookeeper1:2888:3888
server.2=zookeeper2:2888:3888
server.3=zookeeper3:2888:3888
# etc
tickTime=2000
initLimit=5
syncLimit=2

데이터 디렉토리 생성

sudo mkdir /data/
sudo mkdir /data/zookeeper

주키퍼 노드 ID 설정

각각의 노드의 dataDir/myid 파일에 노드 ID 값을 각각 설정한다.

sudo vi /data/zookeeper/myid
  • 주키퍼 노드 1
1
  • 주키퍼 노드 2
2
  • 주키퍼 노드 3
3

주키퍼 노드 실행

sudo /opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties

 

카프카 클러스터 구성

카프카 브로커 설정

sudo vi /opt/kafka/config/server.properties
  • 브로커1
# 다음 속성값을 수정한다
broker.id=1
advertised.listeners=PLAINTEXT://kafka1:9092
log.dirs=/data/kafka-logs
zookeeper.connect=zookeeper1:2181,zookeeper2:2181,zookeeper3:2181
  • 브로커2
# 다음 속성값을 수정한다
broker.id=2
advertised.listeners=PLAINTEXT://kafka2:9092
log.dirs=/data/kafka-logs
zookeeper.connect=zookeeper1:2181,zookeeper2:2181,zookeeper3:2181
  • 브로커3
# 다음 속성값을 수정한다
broker.id=3
advertised.listeners=PLAINTEXT://kafka3:9092
log.dirs=/data/kafka-logs
zookeeper.connect=zookeeper1:2181,zookeeper2:2181,zookeeper3:2181

카프카 브로커 실행

sudo /opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties

 

카프카 클러스터 구성이 잘 됐는 지 확인

토픽 생성하기

/opt/kafka/bin/kafka-topics.sh --create --topic first-topic --replication-factor 3 --partitions 1 --bootstrap-server kafka1:9092,kafka2:9092,kafka3:9092

생성된 토픽 확인

/opt/kafka/bin/kafka-topics.sh --list --bootstrap-server kafka1:9092,kafka2:9092,kafka3:9092

# 출력되는 값
first-topic

 

출처

 

How To Setup Kafka And Zookeeper Multi-Node Cluster?

Get to know how to set up a Kafka and Zookeeper multi-node cluster for message streaming process through step by step tutorial.

www.agiratech.com

 

Kafka and Zookeeper MultiNode Cluster Setup

Apache Kafka

medium.com

 

'인프라' 카테고리의 다른 글

카프카 101  (0) 2023.10.02
카프카 스키마 레지스트리 구성하기  (0) 2023.09.22
13. 도커 스웜-1  (0) 2021.04.19
10. 도커 스토리지  (0) 2021.04.04
11. Docker Compose  (0) 2021.04.03