설치
-
구조

-
설치
'''
리눅스 업데이트
sudo apt update
sudo apt upgrade
포트 및 ip 확인
sudo apt install net-tools
ssh 설치
sudo apt intsll openssh-server
hyper-v 가상스위치 외부 접속 하나 추가 이후 ssh로 접속!(추가 시 서버끄고 추가)
docker 설치(공식 문서 참조)
sudo apt-get install ca-certificates curl gnupg
레파지토리 설정
echo
"deb [arch="
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo 없이 docker 명령(재부팅 필요)
sudo usermod -aG docker $USER
Dockerfile
mkdir kafka && cd kafka
vi Dockerfile
#22버전 활용
FROM ubuntu:22.04
RUN
apt-get update &&
apt-get install wget openjdk-17-jdk curl
EXPOSE 9092
CMD tail -f /dev/null
docker image build
mkdir data
docker build -t ubuntu-dev .
docker run -d -p 9092:9092 -v ~/kafka/data:/home/cleancode --name dev1 ubuntu-dev
docker exec -it dev1 /bin/bash
adduser cleancode
su - cleancode
mkdir kafka && cd kafka
wget https://dlcdn.apache.org/kafka/3.4.0/kafka_2.13-3.4.0.tgz
tar -xzf kafka_2.13-3.4.0.tgz && cd kafka_2.13-3.4.0
#순서 필요
nohup bin/zookeeper-server-start.sh config/zookeeper.properties > zookeeper-server-start-log.txt &
nohup bin/kafka-server-start.sh config/server.properties > kafka-server-start-log.txt &
bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partions 1 --topic input100-topic
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic input100-topic --from-beginning
spring boot로 생산 & 소비 테스트
curl -X POST -H "Content-Type: text/plain" --data "raw body data" http://localhost:8080/message
docker-compose.yml (cluster 3ea)
vi docker-compose.yml
version: '3'
services:
zookeeper-1:
container_name: zookeeper-1
image: confluentinc/cp-zookeeper:latest
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
ports:
- 22181:2181
zookeeper-2:
container_name: zookeeper-2
image: confluentinc/cp-zookeeper:latest
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
ports:
- 32181:2181
zookeeper-3:
container_name: zookeeper-3
image: confluentinc/cp-zookeeper:latest
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
ports:
- 42181:2181
kafka-1:
container_name: kafka-1
image: confluentinc/cp-kafka:latest
depends_on:
- zookeeper-1
- zookeeper-2
- zookeeper-3
ports:
- 29092:29092
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper-1:2181,zookeeper-2:2181,zookeeper-3:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka-1:9092,PLAINTEXT_HOST://localhost:29092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
kafka-2:
container_name: kafka-2
image: confluentinc/cp-kafka:latest
depends_on:
- zookeeper-1
- zookeeper-2
- zookeeper-3
ports:
- 39092:39092
environment:
KAFKA_BROKER_ID: 2
KAFKA_ZOOKEEPER_CONNECT: zookeeper-1:2181,zookeeper-2:2181,zookeeper-3:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka-2:9092,PLAINTEXT_HOST://localhost:39092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
kafka-3:
container_name: kafka-3
image: confluentinc/cp-kafka:latest
depends_on:
- zookeeper-1
- zookeeper-2
- zookeeper-3
ports:
- 49092:49092
environment:
KAFKA_BROKER_ID: 3
KAFKA_ZOOKEEPER_CONNECT: zookeeper-1:2181,zookeeper-2:2181,zookeeper-3:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka-3:9092,PLAINTEXT_HOST://localhost:49092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
카프카1 브로커 찾기
docker ps
카프카1에서 토픽생성
docker exec -it kafka-1 bash
kafka-topics --create --bootstrap-server kafka-1:9092,kafka-2:9092,kafka-3:9092 --replication-factor 1 --partitions 1 --topic input100-topic
'''