본문 바로가기
Backend

[Backend] Kafka 설정하기 - Docker container 만들기

by JINJINC 2025. 3. 13.
728x90
반응형

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

 

728x90
반응형

'Backend' 카테고리의 다른 글

[Backend] Kafka 명령어  (0) 2025.03.15
[Backend] kafka - Spring Boot 프로젝트 설정하기  (0) 2025.03.13
[Backend] kafka 알아보기  (0) 2025.03.13

댓글