로컬에서는 잘 되는데 ☘️

[Kafka] Server 설정하기

by youngjun._.

kafka 공식 docs Logo

실습 환경
- 💡 Java10 (Java 8이상 필수)
- 💡 Windows 10
- 💡 Git Bash
- 💡 Kafka 2.6.0

 

Kafka의 개념과 도입 이유는  지난 포스팅 에서 다루었고, 바로 이전 포스팅에서 zookeeper-server를 실행하기 위해 zookeeper.properties를 작성하는 방법을 알아보았다.

 

이번 포스팅에서는 kafka-server를 실행하기 위한 server.properties 코드를 분석해보자.


1. server.properties 코드 분석

이전에 살펴본 것 처럼 kafka를 실행하려면 kafka-server-start.bat 파일에 인자 값으로 server.properties 속성을 주어야했다.

  • kafka-server-start.bat
    • 윈도우 OS에서 kafka 서버 실행 파일
  • server.properties
    • Kafka 관련 설정 파일

설정 파일 내부를 간단히 살펴보자.

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# config/server.properties
 
############################# Server Basics #############################
 
# Broker의 ID로 Cluster내 Broker를 구분하기 위해 사용(Unique 값)
broker.id=0
 
############################# Socket Server Settings #############################
 
# Broker가 사용하는 호스트와 포트를 지정, 형식은 PLAINTEXT://your.host.name:port 을 사용
listeners=PLAINTEXT://:9092
 
# Producer와 Consumer가 접근할 호스트와 포트를 지정, 기본값은 listeners를 사용
advertised.listeners=PLAINTEXT://localhost:9092
 
 
# 네트워크 요청을 처리하는 Thread의 개수, 기본값 3
num.network.threads=3
 
# I/O가 생길때 마다 생성되는 Thread의 개수, 기본값 8
num.io.threads=8
 
# socket 서버가 사용하는 송수신 버퍼 (SO_SNDBUF, SO_RCVBUF) 사이즈, 기본값 102400
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
 
# 서버가 받을 수 있는 최대 요청 사이즈이며, 서버 메모리가 고갈 되는 것 방지
# JAVA의 Heap 보다 작게 설정해야 함, 기본값 104857600
socket.request.max.bytes=104857600
 
############################# Log Basics #############################
 
# 로그 파일을 저장할 디렉터리의 쉼표로 구분할 수 있음
log.dirs=C:/dev/kafka_2.13-2.6.0/logs
 
# 토픽당 파티션의 수를 의미, 
# 입력한 수만큼 병렬처리 가능, 데이터 파일도 그만큼 늘어남
num.partitions=1
 
# 시작 시 log 복구 및 종료 시 flushing에 사용할 데이터 directory당 Thread 개수
# 이 값은 RAID 배열에 데이터 directory에 대해 증가하도록 권장 됨
num.recovery.threads.per.data.dir=1
 
############################# Internal Topic Settings #############################
# 내부 Topic인 "_consumer_offsets", "_transaction_state"에 대한 replication factor
# 개발환경 : 1, 운영할 경우 가용성 보장을 위해 1 이상 권장(3 정도)
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
 
############################# Log Retention Policy #############################
 
# 세그먼트 파일의 삭제 주기, 기본값 hours, 168시간(7일)
# 옵션 [ bytes, ms, minutes, hours ] 
log.retention.hours=168
 
# 토픽별로 수집한 데이터를 보관하는 파일
# 세그먼트 파일의 최대 크기, 기본값 1GB
# 세그먼트 파일의 용량이 차면 새로운 파일을 생성
log.segment.bytes=1073741824
 
# 세그먼트 파일의 삭제 여부를 체크하는 주기, 기본값 5분(보존 정책)
log.retention.check.interval.ms=300000
 
############################# Zookeeper #############################
 
# 주키퍼의 접속 정보
# 쉼표(,)로 많은 연결 서버 포트 설정 가능
# 모든 kafka znode의 Root directory
zookeeper.connect=localhost:2181
 
# 주키퍼 접속 시도 제한시간(time out)
zookeeper.connection.timeout.ms=18000
 
 
############################# Group Coordinator Settings #############################
 
# GroupCoordinator 설정 - 컨슈머 rebalance를 지연시키는 시간
# 개발환경 : 테스트 편리를 위해 0으로 정의
# 운영환경 : 3초의 기본값을 설정하는게 좋음
 group.initial.rebalance.delay.ms=0
cs

더 필요한 설정은 공식문서를 확인하고 추가하면 될 것 같다!


2. Kafka 실행

zookeeper를 실행한 이후에 새로운 터미널을 열어서 Kafka를 실행해주면 변경한 설정들이 적용되고 정상적으로 실행된다.

1
2
# yj_park@yjpark MINGW64 /c/dev/kafka_2.13-2.6.0
$ bin/windows/kafka-server-start.bat config/server.properties
cs

 

실행결과

 

1
2
3
4
5
6
7
8
9
10
11
[2020-11-23 13:46:51,229] INFO Registered kafka:type=kafka.Log4jController MBean (kafka.utils.Log4jControllerRegistration$)
[2020-11-23 13:46:51,618] INFO Setting -D jdk.tls.rejectClientInitiatedRenegotiation=true to disable client-initiated TLS renegotiation (org.apache.zookeeper.common.X509Util)
[2020-11-23 13:46:51,699] INFO starting (kafka.server.KafkaServer)
[2020-11-23 13:46:51,700] INFO Connecting to zookeeper on localhost:2181 (kafka.server.KafkaServer)
[2020-11-23 13:46:51,718] INFO [ZooKeeperClient Kafka server] Initializing a new session to localhost:2181. (kafka.zookeeper.ZooKeeperClient)
# ... 생략
[2020-11-23 13:46:53,517] INFO [SocketServer brokerId=0] Started socket server acceptors and processors (kafka.network.SocketServer)
[2020-11-23 13:46:53,527] INFO Kafka version: 2.6.0 (org.apache.kafka.common.utils.AppInfoParser)
[2020-11-23 13:46:53,527] INFO Kafka commitId: 62abe01bee039651 (org.apache.kafka.common.utils.AppInfoParser)
[2020-11-23 13:46:53,527] INFO Kafka startTimeMs: 1606106813517 (org.apache.kafka.common.utils.AppInfoParser)
[2020-11-23 13:46:53,529] INFO [KafkaServer id=0] started (kafka.server.KafkaServer)
cs

이제 Kafka 기본 환경이 설정됐다!


 

Reference

'BigData > Kafka' 카테고리의 다른 글

로컬에 Docker 기반 Kafka 서버 구축하고 테스트  (0) 2022.08.06
[Kafka] Quick Start  (0) 2020.11.26
[Kafka] ZooKeeper 설정  (1) 2020.11.24
[Kafka] 설치하고 실행해보기  (0) 2020.11.23
Kafka란?  (0) 2020.10.13

블로그의 정보

개발하는만두

youngjun._.

활동하기