반응형
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_KRAFT_CLUSTER_ID: "1111111111111111111111"
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_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_KRAFT_CLUSTER_ID: "1111111111111111111111"
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_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_KRAFT_CLUSTER_ID: "1111111111111111111111"
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_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
kafka-ui:
container_name: kafka-ui
image: provectuslabs/kafka-ui
ports:
- "8080:8080"
restart: always
environment:
KAFKA_CLUSTERS_0_NAME: local
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka-1:9091,kafka-2:9092,kafka-3:9093
container 접속
docker exec -it kafka-1 bash
명령어 실행
kafka-topics.sh —bootstrap-server kafka-1:9091 —list
kafka-ui 접속
- URL : http://localhost:8080
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
반응형
'Development > Kafka' 카테고리의 다른 글
[Kafka] 명령어 (0) | 2023.11.20 |
---|---|
[Kafka] 스프링 Kafka 연동 (0) | 2019.03.08 |
[Kafka] ZooKeeper 설치 (0) | 2019.03.07 |