Ec2서버에 Docker compose를 이용하여 kafka를 설정해보겠습니다.
1 . Docker-Compose.yml 파일 설정
우선적으로 ec2서버에 docker가 존재하지 않는다면 아래의 포스트를 참고하여 설정해주세요,
2025.03.13 - [가상화/docker] - [Docker] EC2서버에 Docker, Docker-Compose 설치
[Docker] EC2서버에 Docker, Docker-Compose 설치
첫번째로 EC2 서버에 Docker를 설치 해보겠습니다.1. EC2 서버에서 Docker 설치 sudo dnf update sudo dnf install -y docker sudo systemctl enable docker sudo systemctl start docker 2. Docker-Compose 설치 - 최신버전 다운로드아
codejinjinh.tistory.com
내가 원하는 위치에 폴더를 생성하여 docker-compose.yml 를 작성합니다.
저는 /root/kafka 폴더 안에서 생성하겠습니다.
mkdir kafka && cd kafka
vi docker-compose.yml
docker-compose.yml 파일에 아래의 내용을 넣어줍니다.
services:
zookeeper:
image: confluentinc/cp-zookeeper:latest
container_name: zookeeper
restart: always
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
ports:
- "2181:2181"
kafka:
image: confluentinc/cp-kafka:latest
container_name: kafka
restart: always
depends_on:
- zookeeper
ports:
- "9092:9092"
- "29092:29092"
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092,PLAINTEXT_HOST://your-ec2-public-ip:29092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
volumes:
- kafka_data:/var/lib/kafka/data
volumes:
kafka_data:
2 . Docker-Compose.yml 실행하기
현재 docker-compose 파일이 있는 위치에서 실행합니다.
저는 /root/kafka 위치에서 docker-compose.yml 생성하였기 때문에 /root/kafka위치에서 실행하였습니다.
docker-compose up -d
2 . Docker-Compose.yml 실행 종료하기
docker-compose down
Docker 컨테이너가 서버가 재부팅되거나 비정상 종료되었을 때 자동으로 재시작하는 방법
1. docker-compose.yml 파일에서 restart: always 옵션을 추가하면 컨테이너가 자동으로 재시작됩니다.
=> docker-compose/yml
2. systemd 를 사용하여 service 등록하기
먼저 service파일을 생성합니다.
sudo vi /etc/systemd/system/kafka.service
그 안의 kafa.service안의 내용
[Unit]
Description=Kafka & Zookeeper Service
After=network.target docker.service
Requires=docker.service
[Service]
Restart=always
WorkingDirectory=/root/kafka # docker-compose.yml이 있는 경로로 변경
ExecStart=/usr/local/bin/docker-compose up -d
ExecStop=/usr/local/bin/docker-compose down
TimeoutStartSec=0
[Install]
WantedBy=multi-user.target
ExecStart와 ExecStop에는 docker-compose 실행 파일의 정확한 경로를 지정하여야 합니다.
우리가 docker-compose를 설치시 /usr/local/bin/docker-compose로 실행파일위치를 설정하였기 때문에
sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o
/usr/local/bin/docker-compose
만약 모를 경우 실행파일의 위치를 모를경우!!!
which docker-compose
명렁어를 사용하여 위치를 찾습니다.
[root@ip-172-31-9-200 system]# which docker-compose
/usr/local/bin/docker-compose
systemd 설정 적용하기
# systemd 데몬 다시 로드
sudo systemctl daemon-reload
# Kafka 서비스 다시 실행
sudo systemctl restart kafka
# 서비스 상태 확인
sudo systemctl status kafka
status를 통해 확인한 결과 container가 제대로 active되는것을 확인할 수 있고
docker -ps를 통해 container또한 확인할 수 있습니다.
root@ip-172-31-9-200 system]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4a2b2d0090cc confluentinc/cp-kafka:latest "/etc/confluent/dock…" 3 seconds ago Up Less than a second 0.0.0.0:9092->9092/tcp, :::9092->9092/tcp, 0.0.0.0:29092->29092/tcp, :::29092->29092/tcp kafka
b5c8543dd2d3 confluentinc/cp-zookeeper:latest "/etc/confluent/dock…" 3 seconds ago Up 1 second 2888/tcp, 0.0.0.0:2181->2181/tcp, :::2181->2181/tcp, 3888/tcp zookeeper
'Backend' 카테고리의 다른 글
[Backend] Kafka 명령어 (0) | 2025.03.15 |
---|---|
[Backend] kafka - Spring Boot 프로젝트 설정하기 (0) | 2025.03.13 |
[Backend] kafka 알아보기 (0) | 2025.03.13 |
댓글