티스토리 뷰

728x90
반응형

앞선 포스팅에서 Kafka(Zookeeper) 아키텍처에 대해 살펴보았다.

 

[MSA] Kafka(Zookeeper) 아키텍처

 

이번 포스팅에서는 다음 포스팅에서 다룰 Pub/Sub 개발을 위한 Kafka 메시지 브로커를 구성해 보도록 하자.

Kafka 설치

Kafka는 사실 설치의 개념이 없다. 단순히 압축을 해제하는 것만으로 설치는 완료된다.Kafka는 다음에서 다운로드 받을 수 있다.Kafka : http://kafka.apache.org/

Kafka 디렉토리 구조

Kafka를 관리할 특정 디렉토리에 압축을 해제하면 다음과 같은 구조를 갖는다.

[주요 디렉토리]- bin : Kafka와 Zookeeper를 기동하고 관리하기 위한 bat(windows) or sh(linux/unix) 파일이 위치한다.- config : Kafka와 Zookeeper 설정을 위한 config 파일이 위치한다.

Kafka 구성

1) Zookeeper 설정먼저 Kafka를 기동하기 전 Kafka Broker를 관리하는 Zookeeper를 먼저 구성한다.Zookeeper 설정은 다음 위치에 있다.($KAFKA_HOME/config/zookeeper.properties)

dataDir=C:/temp/zookeeper
clientPort=2181
maxClientCnxns=0
#server.0=kafka1_node:2888:3888
#server.1=kafka2_node:2888:3888
#server.2=kafka3_node:2888:3888

위 설정은 dataDir이라는 실제 데이터 저장소 위치가 가장 중요하며, 멀티 노드 환경일 경우 server.n 형태로 확장해 클러스터 환경을 구성할 수 있다. (현재는 주석처리)2) Zookeeper 기동기동 방법은 다음과 같다.[zookeeper_start.bat]

SET JAVA_HOME=C:\jdk1.8.0_212
SET PATH=%JAVA_HOME%\bin;%PATH%
SET KAFKA_HOME=C:\kafka_2.12-2.1.1
start /b %KAFKA_HOME%\bin\windows\zookeeper-server-start.bat %KAFKA_HOME%\config\zookeeper.properties

start command를 활용하여 zookeeper-server-start.bat을 실행하며, 앞서 구성한 zookeeper.properties 환경파일을 참조하도록 한다.정상 기동되면 아래와 같은 로그를 확인할 수 있다.

...
...
...
[2020-09-29 22:05:05,696] INFO Server environment:java.io.tmpdir=C:\Users\user\AppData\Local\Temp\ (org.apache.zookeeper.server.ZooKeeperServer)
[2020-09-29 22:05:05,696] INFO Server environment:java.compiler=<NA> (org.apache.zookeeper.server.ZooKeeperServer)
[2020-09-29 22:05:05,696] INFO Server environment:os.name=Windows 10 (org.apache.zookeeper.server.ZooKeeperServer)
[2020-09-29 22:05:05,697] INFO Server environment:os.arch=amd64 (org.apache.zookeeper.server.ZooKeeperServer)
[2020-09-29 22:05:05,697] INFO Server environment:os.version=10.0 (org.apache.zookeeper.server.ZooKeeperServer)
[2020-09-29 22:05:05,698] INFO Server environment:user.name=nrson (org.apache.zookeeper.server.ZooKeeperServer)
[2020-09-29 22:05:05,698] INFO Server environment:user.home=C:\Users\user (org.apache.zookeeper.server.ZooKeeperServer)
[2020-09-29 22:05:05,698] INFO Server environment:user.dir=C:\kafka_2.12-2.1.1\bin (org.apache.zookeeper.server.ZooKeeperServer)
[2020-09-29 22:05:05,704] INFO tickTime set to 3000 (org.apache.zookeeper.server.ZooKeeperServer)
[2020-09-29 22:05:05,705] INFO minSessionTimeout set to -1 (org.apache.zookeeper.server.ZooKeeperServer)
[2020-09-29 22:05:05,705] INFO maxSessionTimeout set to -1 (org.apache.zookeeper.server.ZooKeeperServer)
[2020-09-29 22:05:05,715] INFO Using org.apache.zookeeper.server.NIOServerCnxnFactory as server connection factory (org.apache.zookeeper.server.ServerCnxnFactory)
[2020-09-29 22:05:05,716] INFO binding to port 0.0.0.0/0.0.0.0:2181 (org.apache.zookeeper.server.NIOServerCnxnFactory)

3) Kafka 설정Kafka는 다음 설정파일을 구성한다.($KAFKA_HOME/config/server.properties)

...
...
############################# Server Basics #############################

# The id of the broker. This must be set to a unique integer for each broker.
broker.id=0
...
...
#zookeeper.connect=kafka1_node:2181,kafka2_node:2181,kafka3_node:2181
...
...

- broker.id : multi node 클러스터 환경일 경우 broker id를 unique하게 구성해야 한다.- zookeeper.connect : 클러스터 환경에 묶일 zookeeper client를 등록한다.4) Kafka 기동기동 방법은 다음과 같다.[kafka_start.bat]

SET JAVA_HOME=C:\jdk1.8.0_212
SET PATH=%JAVA_HOME%\bin;%PATH%
SET KAFKA_HOME=C:\kafka_2.12-2.1.1
start/b %KAFKA_HOME%\bin\windows\kafka-server-start.bat %KAFKA_HOME%\config\server.properties

start command를 활용하여 kafka-server-start.bat을 실행하며, 앞서 구성한 server.properties 환경파일을 참조하도록 한다.

정상 기동되면 아래와 같은 로그를 확인할 수 있다.

...
...
...
[2020-09-29 22:17:39,742] INFO [TransactionCoordinator id=0] Starting up. (kafka.coordinator.transaction.TransactionCoordinator)
[2020-09-29 22:17:39,743] INFO [TransactionCoordinator id=0] Startup complete. (kafka.coordinator.transaction.TransactionCoordinator)
[2020-09-29 22:17:39,745] INFO [Transaction Marker Channel Manager 0]: Starting (kafka.coordinator.transaction.TransactionMarkerChannelManager)
[2020-09-29 22:17:39,776] INFO [/config/changes-event-process-thread]: Starting (kafka.common.ZkNodeChangeNotificationListener$ChangeEventProcessThread)
[2020-09-29 22:17:39,792] INFO [SocketServer brokerId=0] Started processors for 1 acceptors (kafka.network.SocketServer)
[2020-09-29 22:17:39,797] INFO Kafka version : 2.1.1 (org.apache.kafka.common.utils.AppInfoParser)
[2020-09-29 22:17:39,798] INFO Kafka commitId : 21234bee31165527 (org.apache.kafka.common.utils.AppInfoParser)
[2020-09-29 22:17:39,800] INFO [KafkaServer id=0] started (kafka.server.KafkaServer)

이번 포스팅에서는 Kafka(Zookeeper) 구축 및 기동 방법에 대해 알아보았다.

다음 포스팅에서는 Kafka Publisher와 Subscriber의 메시지를 주고 받는 방법(pub/sub)에 대해 알아보자.

728x90
반응형