이벤트 기반 메시지 채널 - 카프카(Kafka)
이벤트 드리븐 아키택처에서 이벤트를 비동기 호출로 상호 통신하려면 메세지 큐(MQ)가 필요합니다. 대표적인 메세지 큐로는 kafka, RabbitMQ, ActiveMQ 등이 있는데, 이중 가장 익숙하신 큐를 사용하시면 됩니다. 그중 kafka 는 분산 메시징 시스템에 적합하고, 처리속도가 빠릅니다. 이번 시간에는 kafka 를 로컬/클러스터에 설치를 하고, 간단한 메세징 시스템을 사용하는 실습을 하겠습니다.
이번 장에서는 다음과 같은 순서로 진행 합니다.
- Windows 환경에서 카프카 설치 및 실행
- Windows의 Linux 환경에서 카프카 설치 및 실행
- 쿠버네티스에 카프카 설치 및 실행
- 로컬 환경에서 토픽을 생성 하여 해당 토픽에서 메세지를 pub/sub 해보기
- 클러스터 환경에서 토픽을 생성 하여 해당 토픽에서 메세지를 pub/sub 해보기
Windows 환경에서 카프카 설치 및 실행
-
브라우저를 열고 카프카 다운로드 사이트로 접속합니다.
- https://kafka.apache.org/downloads
- 최근 버전의 Scala 2.13 (binary)버전으로 다운로드 합니다.
-
다운로드한 파일을 압축을 풉니다.
- Windows 환경이면, 실행화일의 경로가 길지않도록 C:\ (최상위 경로)에 압축을 해제 합니다.
-
카프카는 분산 환경 코디네이터(Coordinator)인 주키퍼 위에서 작동을 합니다. 주키퍼를 먼저 실행하고, 카프카를 이어서 실행합니다.
- 주키퍼 실행을 위하여 새로운 CMD 창을 엽니다.
- cd 카프카설치 경로/bin/windows
zookeeper-server-start.bat ../../config/zookeeper.properties
- 카프카 실행을 위하여 새로운 CMD 창을 엽니다.
- cd 카프카설치 경로/bin/windows
kafka-server-start.bat ../../config/server.properties
- Trouble Shooting
- Windows 환경에서 카프카 서버 실행 시, 'wmic은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다.
`메시지가 출력되고 서버가 실행되지 않을 때,- 시스템 환경변수(path)에 %SystemRoot%\System32\Wbem 를 추가해 줍니다.
- Windows 커맨드 창에서는 카프카가 간혹 다운되는 현상이 발생 합니다. 이때 카프카를 재시작 하거나,
- 카프카가 정상적으로 실행이 안될 경우에는 kafka 로그를 지워 봅니다.
- C://tmp/kafka_logs 폴더 삭제…!!
- kafka는 JVM 위에서 실행이 됩니다. Java 가 설치되고 JAVA_HOME 환경변수가 설정되어 있어야 합니다.
- Windows 환경에서 카프카 서버 실행 시, 'wmic은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다.
Windows의 Ubuntu 환경에서 카프카 설치 및 실행
-
우분투 bash 를 열고 아래와 같은 명령어를 실행하여 kafka 를 다운받습니다.
curl -o kafka2.5.tgz -l http://mirror.navercorp.com/apache/kafka/2.5.0/kafka_2.13-2.5.0.tgz
- 압축풀기
tar -xvf kafka2.5.tgz
-
카프카는 분산 환경 코디네이터(Coordinator)인 주키퍼 위에서 작동을 합니다. 주키퍼를 먼저 실행하고, 카프카를 이어서 실행합니다.
- 주키퍼 실행
cd kafka_2.13-2.5.0/bin ./zookeeper-server-start.sh ../config/zookeeper.properties
- 우분투 bash 창을 새롭게 엽니다.
- 카프카 실행
cd kafka_2.13-2.5.0/bin ./kafka-server-start.sh ../config/server.properties
-
트러블 슈팅
- kafka 는 JVM 위에서 실행이 됩니다. java 가 꼭 설치되어있고, JAVA_HOME 환경변수가 설정되어 있어야 합니다.