-
[AWS] EC2에 Kafka 서버 띄우기Backend/AWS 2022. 10. 25. 16:08728x90
과정
- 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://velog.io/@jwpark06/AWS-EC2%EC%97%90-Kafka-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0
728x90'Backend > AWS' 카테고리의 다른 글
[AWS] SCP를 통해 로컬에서 서버로 파일/폴더 전송하기 (SSH Key 포함) (0) 2022.11.09 [AWS] AWS EC2에 ELK 세팅하기 (0) 2022.10.31 [AWS] 3-Tier Architecture에서의 Bastion Host 설정과 WEB, WAS, RDS 설정 및 연동 (0) 2022.09.25 [AWS] 3-Tier Architecture 인프라 설계 (0) 2022.09.25 [AWS] AWS 3-Tier Architecture 정리하기 (1) 2022.09.25