이벤트 기반 메시지 채널 - 카프카(Kafka)

이벤트 드리븐 아키택처에서 이벤트를 비동기 호출로 상호 통신하려면 메세지 큐(MQ)가 필요합니다. 대표적인 메세지 큐로는 kafka, RabbitMQ, ActiveMQ 등이 있는데, 이중 가장 익숙하신 큐를 사용하시면 됩니다. 그중 kafka 는 분산 메시징 시스템에 적합하고, 처리속도가 빠릅니다. 이번 시간에는 kafka 를 로컬/클러스터에 설치를 하고, 간단한 메세징 시스템을 사용하는 실습을 하겠습니다.

이번 장에서는 다음과 같은 순서로 진행 합니다.

  • Windows 환경에서 카프카 설치 및 실행
  • Windows의 Linux 환경에서 카프카 설치 및 실행
  • 쿠버네티스에 카프카 설치 및 실행
  • 로컬 환경에서 토픽을 생성 하여 해당 토픽에서 메세지를 pub/sub 해보기
  • 클러스터 환경에서 토픽을 생성 하여 해당 토픽에서 메세지를 pub/sub 해보기

Windows 환경에서 카프카 설치 및 실행

  1. 브라우저를 열고 카프카 다운로드 사이트로 접속합니다.

  2. 다운로드한 파일을 압축을 풉니다.

    • Windows 환경이면, 실행화일의 경로가 길지않도록 C:\ (최상위 경로)에 압축을 해제 합니다.
  3. 카프카는 분산 환경 코디네이터(Coordinator)인 주키퍼 위에서 작동을 합니다. 주키퍼를 먼저 실행하고, 카프카를 이어서 실행합니다.

    • 주키퍼 실행을 위하여 새로운 CMD 창을 엽니다.
    • cd 카프카설치 경로/bin/windows
    zookeeper-server-start.bat ../../config/zookeeper.properties
    
    • 카프카 실행을 위하여 새로운 CMD 창을 엽니다.
    • cd 카프카설치 경로/bin/windows
    kafka-server-start.bat ../../config/server.properties
    
  1. Trouble Shooting
    • Windows 환경에서 카프카 서버 실행 시, 'wmic은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다.
      `메시지가 출력되고 서버가 실행되지 않을 때,
      • 시스템 환경변수(path)에 %SystemRoot%\System32\Wbem 를 추가해 줍니다.
    • Windows 커맨드 창에서는 카프카가 간혹 다운되는 현상이 발생 합니다. 이때 카프카를 재시작 하거나,
    • 카프카가 정상적으로 실행이 안될 경우에는 kafka 로그를 지워 봅니다.
    • C://tmp/kafka_logs 폴더 삭제…!!
    • kafka는 JVM 위에서 실행이 됩니다. Java 가 설치되고 JAVA_HOME 환경변수가 설정되어 있어야 합니다.

Windows의 Ubuntu 환경에서 카프카 설치 및 실행

  1. 우분투 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
    
  2. 카프카는 분산 환경 코디네이터(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
    
  3. 트러블 슈팅

    • kafka 는 JVM 위에서 실행이 됩니다. java 가 꼭 설치되어있고, JAVA_HOME 환경변수가 설정되어 있어야 합니다.

*MSA School의 모든 콘텐츠에 대한 권리는 MSA School에 있으며, 무단 복제 및 배포를 금합니다. 영리 목적의 사용은 허용되지 않으며, 개인적 용도로 복제할 경우 반드시 출처를 표기해야 합니다.
© uEngine. All Rights Reserved. | 주소 : 서울특별시 서초구 신반포로45길 18 502호(잠원동, 주일빌딩)
사업자등록번호 : 211-87-95355 | 전화번호 : 02-567-8301 | 대표이사 : 장진영
*MSA School의 모든 콘텐츠에 대한 권리는 MSA School에 있으며, 무단 복제 및 배포를 금합니다.
영리 목적의 사용은 허용되지 않으며, 개인적 용도로 복제할 경우 반드시 출처를 표기해야 합니다.
© uEngine. All Rights Reserved.
주소 : 서울특별시 서초구 신반포로45길 18 502호(잠원동, 주일빌딩)
사업자등록번호 : 211-87-95355
전화번호 : 02-567-8301
대표이사 : 장진영