본문 바로가기
Kafka

Kafka Cluster 구성

by 스르나 2022. 1. 14.

구성:

Zookeeper 3개

Kafka 3개

 

1 설치 

Kafka 설치는 아래 페이지 참조

 

Kafka는 Zookeeper와 함께 실행되기 떄문에 위 설치 방법을 따라가면 Zookeeper도 함께 설치함

 

단일 서버라면 위 처럼 한 개만 설치하고, 분산 서버라면 각각 설치할 것

 

kafka

2 Zookeeper 설정

위 kafka_2.12-2.95.0/config 폴더안에 zookeeper.properties 파일이 Zookeeper 설정 파일임

분산 서버라면 각 서버 마다 zookeeper.properties파일 한개를 각각 아래와 같이 server host만 변경하고 나머진 동일하게 수정하여 사용 하고, 단일 서버에서는 zookeeper.properties파일을 여러개 생성(Copy)하여 아래 설명처럼 clientPort,dataDir값을 서로 다르게 변경(host는 동일)해주자

 

단일서버 zookeeper.properties 구성)

z.p

 

#기본으로 tmp폴더로 되어있으니 아래처럼 경로를 바꿔주자
dataDir=/home/admin/zookeeper1/      #/home/admin/zookeeper2/   /home/admin/zookeeper3/
 
# 단일 서버에서는 포트가 중복이 되니 포트를 2181,2182 등으로 각 zookeeper.properties 파일에 바꿔주자
clientPort=2181  #2182 2183
 
maxClientCnxns=0
 
admin.enableServer=false
 
# 아래 설정들은 클러스터 구조에서 사용하는 설정인데 server설정은 각 서버의 ID로 사용하는 것으로 보임
# 분산 서버에서는 자신이 사용할 server는 127.0.0.1로 host를 설정하고, 나머지는 분산 host로 변경
server.1=127.0.0.1:2887:3887
server.2=127.0.0.1:2888:3888
server.3=127.0.0.1:2889:3889
 
 
# 분산예시
# server.1=127.0.0.1:2887:3887 # 자신
# server.2=151.2.3.4:2887:3887 # 분산
# server.3=561.3.1.3:2887:3887 # 분산
 
# Zookeeper 노드, Kafka와의 연결 Timeout 시간 설정
initLimit=10
syncLimit=5

 

아래 server설정은 각 노드들의 아이디 설정인데, 노드들이 아이디를 선정하는 기준은 dataDir 폴더아래 myid라는 파일안에 있는 숫자를 보고 판단한다.

myid파일은 자동 생성되지 않기 때문에 만들어 줘야한다.

myid

myid는 분산서버여도 서로 달라야한다.(myid 파일의 숫자를 보고 자신의 아이디를 선정하기 때문)

myid파일의숫자 ↔ server.숫자 ↔ host:port

 

참고: 첫번째 주키퍼를  실행시키면  server:port connection refuese 에러로그가 발생하는데 이건 기동 실패가 아니라 아직 다른 주키퍼가 실행이 안되어서 그런거임 3개 모두 실행시키면 에러 로그 안나옴

 

 

3 Kafka 설정

 

Kafka 설정은 config/server.properties에 있다.

 

zookeeper.properties파일 과동일하게 분산이라면 각각, 단일서버라면 파일 3개를 만든다.

 

broker.id=0
 
listeners=PLAINTEXT://:9092
 
num.network.threads=3
 
num.io.threads=8
 
socket.send.buffer.bytes=102400
 
socket.receive.buffer.bytes=102400
 
socket.request.max.bytes=104857600
 
log.dirs=/home/admin/kafka/log1
 
num.partitions=3
 
num.recovery.threads.per.data.dir=1
 
offsets.topic.replication.factor=1
 
transaction.state.log.replication.factor=1
 
transaction.state.log.min.isr=1
 
log.retention.hours=24
 
log.segment.bytes=1073741824
 
log.retention.check.interval.ms=300000
 
zookeeper.connect=localhost:2181,localhost:2182,localhost:2183
 
zookeeper.connection.timeout.ms=18000
 
group.initial.rebalance.delay.ms=0

 

설정을 위와 같이 변경한다.

 

클러스터를 위한 설정 

  • broker.id: Kafka들의 노드 아이디 같은 것으로서 서로 다르게 설정
  • listeners: 단일 서버에서는 Kafka마다 port번호만 서로 다르게 변경, 분산은 필요없음
  • log.dirs: 기본으로 tmp 되어있으니 변경, 단일서버는 각자 다른 위치로 변경
  • zookeeper.connect: Zookeeper 노드들을 설정

 

 

4 단일 서버 테스트

 

클러스터 구성이후 토픽 생성, 메세지 생성, 테스트 진행 결과

토픽 생성

topic

9092 Kafka에 토픽 생성 요청이후 다른 Kafka에도 토픽 생성 확인

 

 

메세지 생성

message

 

9092에 메세지 생성후 다른 Kafka에도 메세지 생성 확인

'Kafka' 카테고리의 다른 글

Kafka auto commit  (0) 2021.11.23
Kafka 기초개념 - 전체적인 개념  (0) 2021.07.08