Backend/AWS

[AWS] EC2에 Kafka 서버 띄우기

mirae.kwak 2022. 10. 25. 16:08
728x90

과정

  • EC2 인스턴스 생성
  • kafka 설치 및 실행
    • 로컬 설치 후 실행
    • docker-compose를 사용

 

EC2 인스턴스 생성

 

1. 이미지 선택 후 인스턴스 생성

AWS 프리티어 계정에서 사용 가능한 ubuntu22.04 를 선택하여 인스턴스를 생성한다.

 

2. 보안그룹 설정

인스턴스에 직접 kafka를 설치하여 kafka( 또는 zookeeper와 함께)를 실행할 경우 해당 포트에 대해 인바운드 규칙을 생성해주어야 한다.

 

3. 인스턴스 접속

 

 

 

Kafka 설치 및 실행

 

1. 로컬 설치 및 실행

 

Java 설치 및 버전 확인

- 원하는 자바 버전으로 설치 가능

# 설치
sudo apt update
sudo apt install openjdk-17-jdk

# 버전 확인
java --version

 

Kafka 설치 

# kafka 2.5.0 버전 설치
wget https://archive.apache.org/dist/kafka/2.5.0/kafka_2.12-2.5.0.tgz

# 설치 확인
ls
kafka_2.12-2.5.0.tgz

# 압축 해체
tar xvf kafka_2.12-2.5.0.tgz

 

Kafka heap memory 설정

- kafka 패키지의 기본 힙 메모리 설정이 kafka는 1G, zookeeper는 512M로 설정되어있어서 프리티어 메모리 1G에서는 kafka와 zookeeper를 동시에 실행시 메모리 문제가 발생한다. 따라서 다음의 설정이 필요하다.

# 설정된 옵션 확인
echo $KAFKA_HEAP_OPTS

# 옵션 설정
export KAFKA_HEAP_OPTS="-Xms400m -Xmx400m"

# 설정된 옵션 확인
echo $KAFKA_HEAP_OPTS
-Xms400m -Xmx400m

- 설정한 환경변수는 터미널 종료 시 초기화되기 때문에 .bashrc 파일을 수정해주면 터미널을 재실행했을 때도 설정을 유지할 수 있다.

# .bashrc 파일 수정
sudo vi ~/.bashrc

# 추가 코드
#### KAFKA HEAP OPTS 
export KAFKA_HEAP_OPTS="-Xms400m -Xmx400m"

#### JDK11 PATH 
export JAVA_HOME=/usr/lib/jvm/{설치한 jdk로 변경}
export PATH=$PATH:$JAVA_HOME/bin

# 수정 후 적용
source  ~/.bashrc

 

Kafka 설정 파일 수정

# server.properties 파일 수정
vi config/server.properties

# 포트번호 설정(주석 제거)
listeners=PLAINTEXT://:9092
# 통신을 위해 열어두는 PROTOCOL, IP, PORT를 지정
advertised.listeners=PLAINTEXT://[EC2 퍼블릭 IPv4 주소]:9092

 

Zookeeper 실행

- 백그라운드 실행 시 -daemon을 적어주면 된다.

# kafka 설치 경로로 이동
# cd kafka_2.12-2.5.0
bin/zookeeper-server-start.sh [-daemon] config/zookeeper.properties

# 종료
./bin/zookeeper-server-stop.sh [-daemon] ./config/server.properties

 

Kafka 실행

- 백그라운드 실행 시 -daemon을 적어주면 된다.

# kafka 설치 경로로 이동
# cd kafka_2.12-2.5.0
bin/kafka-server-start.sh [-daemon] config/server.properties

# 종료
./bin/kafka-server-stop.sh [-daemon] ./config/server.properties

 

 

2. docker-compose 실행

 

docker-compose 설치

우분투 버전이 다르긴 하지만 설치는 잘된다.

 

[Docker] Virtual box Ubuntu 20.04에 Docker 설치하기

윈도우 OS를 사용하고 있지만 리눅스 OS에서 Docker를 사용해야하는 일이 생겨 Virtual box를 이용해 Ubuntu 가상머신을 만들었다. 이때 ubuntu 20.04버전을 기준으로 Docker를 설치하는 명령어를 포스트한다

miraekwak.tistory.com

 

docker-compose.yml 작성

version: '2'

services:
  zookeeper:
    image: wurstmeister/zookeeper
    container_name: zookeeper
    ports:
      - "2181:2181"

  kafka:
    image: wurstmeister/kafka:2.12-2.5.0
    container_name: kafka
    depends_on:
      - zookeeper
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://3.34.190.54:9092
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
      KAFKA_ADVERTISED_HOST_NAME: 3.34.190.54
      KAFKA_ADVERTISED_PORT: 9092
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

 

 

Kafka & Zookeeper 관련 명령어

 

실행 중인 jvm 프로세스 확인

jps -m
jps -l

 

Topic 관련

# topic 조회
./bin/kafka-topics.sh --bootstrap-server localhost:9092 --list

# topic 생성
.\bin\kafka-topics.sh --create --topic quickstart-events --bootstrap-server localhost:9092 --partitions 1

 

Producer & Consumer

# producer
.\bin\kafka-console-producer.sh --broker-list localhost:9092 --topic quickstart-events

# consumer
.\bin\kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic quickstart-events --from-beginning

 

 


참고

https://devbksheen.tistory.com/m/entry/Kafka-%EC%98%88%EC%A0%9C-EC2-%EC%83%9D%EC%84%B1-%ED%9B%84-%EC%A0%91%EC%86%8D-Kafka-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%84%A4%EC%A0%95

https://velog.io/@jwpark06/AWS-EC2%EC%97%90-Kafka-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0

 

728x90