반응형

Linux에 설치하기

들어가기 전

  • 이 예제에서는 서버 3대를 하나의 클러스터로 구성
  • 자바가 먼저 설치되어있어야함
  • [공통]이 제목 앞에 붙으면 모든 서버가 공통으로 필요한 항목
  • [개별]이 제목 앞에 붙으면 각 서버에 개별적으로 필요한 항목

[공통] hosts 설정

  • sudo vi /etc/hosts
192.168.56.201  zookeeper01.example.com
192.168.56.202  zookeeper02.example.com
192.168.56.203  zookeeper03.example.com
192.168.56.211  kafka01.example.com
192.168.56.212  kafka02.example.com
192.168.56.213  kafka03.example.com

[공통] cloud.cfg 파일 수정

  • ubuntu 18.04.1 버전부터는 이 설정을 해주어야 호스트명이 유지가됨
sudo vi /etc/cloud/cloud.cfg
# 아래 내용 수정 후 저장
preserve_hostname: true

[공통] 자바 설치

[공통] Kafka 설치 스크립트

mkdir -p /home/ubuntu/app \
&& cd /home/ubuntu/app \
&& wget http://apache.mirror.cdnetworks.com/kafka/2.1.1/kafka\_2.11-2.1.1.tgz \
&& tar xvfz kafka*.tgz \
&& rm kafka*.tgz \
&& ln -s /home/ubuntu/app/kafka* kafka

[공통] data 디렉토리 생성

  • 디렉토리는 하나만 있어도 되지만 학습 목적을 위해 분산 저장 목적으로 두 개를 생성 후 설정
cd /home/ubuntu && mkdir -p data1 data2

[공통] server.properties 파일 수정

  • 주의 : 복수 설정값 넣을 때 , 다음에 공백이 있으면 안됨
vi /home/ubuntu/app/kafka/config/server.properties
# 아래 내용 수정 후 저장
log.dirs=/home/ubuntu/data1,/home/ubuntu/data2
zookeeper.connect=zookeeper01.example.com:2181,zookeeper02.example.com:2181,zookeeper03.example.com:2181/test-znode

[개별] server.properties 파일 수정

  • 각 서버별로 다른 정수값 설정
vi /home/ubuntu/app/kafka/config/server.properties
# 아래 내용 수정 후 저장
broker.id=1

[개별] hostname 설정

  • hostname을 도메인과 동일하게 설정하지 않으면 producer, consumer에서 접근시 오류 발생
  • 각 서버에서 아래 명령어로 hostname 설정 후 서버 재시작
sudo hostnamectl set-hostname kafka01.example.com
sudo hostnamectl set-hostname kafka02.example.com
sudo hostnamectl set-hostname kafka03.example.com

[공통] Kafka 실행

  • Kafka 실행 전 ZooKeeper 서버가 실행되어있어야함
/home/ubuntu/app/kafka/bin/kafka-server-start.sh /home/ubuntu/app/kafka/config/server.properties

Docker로 설치하기

docker-compose.yml

version: "3.3"
services:
  kafka-1:
    container_name: kafka-1
    hostname: kafka-1
    image: bitnami/kafka:3.3.2
    ports:
      - "9091:9091"
    environment:
      KAFKA_CFG_NODE_ID: 1
      KAFKA_CFG_PROCESS_ROLES: controller,broker
      KAFKA_CFG_CONTROLLER_QUORUM_VOTERS: 1@kafka-1:9999,2@kafka-2:9999,3@kafka-3:9999
      KAFKA_KRAFT_CLUSTER_ID: "1111111111111111111111"
      KAFKA_CFG_LISTENERS: PLAINTEXT://:9091,CONTROLLER://:9999
      KAFKA_CFG_ADVERTISED_LISTENERS: PLAINTEXT://:9091
      KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT
      KAFKA_CFG_CONTROLLER_LISTENER_NAMES: CONTROLLER
      KAFKA_CFG_INTER_BROKER_LISTENER_NAME: PLAINTEXT

  kafka-2:
    container_name: kafka-2
    hostname: kafka-2
    image: bitnami/kafka:3.3.2
    ports:
      - "9092:9092"
    environment:
      KAFKA_CFG_NODE_ID: 2
      KAFKA_CFG_PROCESS_ROLES: controller,broker
      KAFKA_CFG_CONTROLLER_QUORUM_VOTERS: 1@kafka-1:9999,2@kafka-2:9999,3@kafka-3:9999
      KAFKA_KRAFT_CLUSTER_ID: "1111111111111111111111"
      KAFKA_CFG_LISTENERS: PLAINTEXT://:9092,CONTROLLER://:9999
      KAFKA_CFG_ADVERTISED_LISTENERS: PLAINTEXT://:9092
      KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT
      KAFKA_CFG_CONTROLLER_LISTENER_NAMES: CONTROLLER
      KAFKA_CFG_INTER_BROKER_LISTENER_NAME: PLAINTEXT

  kafka-3:
    container_name: kafka-3
    hostname: kafka-3
    image: bitnami/kafka:3.3.2
    ports:
      - "9093:9093"
    environment:
      KAFKA_CFG_NODE_ID: 3
      KAFKA_CFG_PROCESS_ROLES: controller,broker
      KAFKA_CFG_CONTROLLER_QUORUM_VOTERS: 1@kafka-1:9999,2@kafka-2:9999,3@kafka-3:9999
      KAFKA_KRAFT_CLUSTER_ID: "1111111111111111111111"
      KAFKA_CFG_LISTENERS: PLAINTEXT://:9093,CONTROLLER://:9999
      KAFKA_CFG_ADVERTISED_LISTENERS: PLAINTEXT://:9093
      KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT
      KAFKA_CFG_CONTROLLER_LISTENER_NAMES: CONTROLLER
      KAFKA_CFG_INTER_BROKER_LISTENER_NAME: PLAINTEXT
sudo vi /etc/hosts
127.0.0.1       kafka-1
127.0.0.1       kafka-2
127.0.0.1       kafka-3
kafka-topics.sh —bootstrap-server kafka-2:9092 —list
반응형

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

[Kafka] 명령어  (0) 2023.11.20
[Kafka] 스프링 Kafka 연동  (0) 2019.03.08
[Kafka] ZooKeeper 설치  (0) 2019.03.07

+ Recent posts