[Kafka] Server 설정하기
by youngjun._.
실습 환경
- 💡 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._.