-
[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-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