Kafka
1.1 Kafka 카프카 빠르게 시작하기 - AWS EC2 인스턴스에서 카프카 실행
헤옹
2023. 9. 3. 19:12
기본적인 카프카 브로커를 AWS EC2에 구축하고, 이를 이용한 카프카 클라이언트 어플리케이션을 자바로 구현하는 것이 목표 !
카프카 브로커용 인스턴스 생성하기
우선 카프카 브로커 실행용 AWS EC2 인스턴스를 생성한다. 스펙은 아래와 같이 설정했다.
<서버 스펙>
- 인스턴스 개수 : 1개
- AMI : Amazon Linux Kernel 5.10 AMI, SSD Volume Type
- 인스턴스 유형 : t2.micro
- 방화벽 : default vpc
- 키페어 : 새로 생성함
<보안규칙>
인바운드 설정으로 아래 포트 열어줌
- 9092 : 카프카 브로커 기본 포트
- 2181 : 주키퍼 기본 포트
SSH로 인스턴스 접속해보기
Mac 터미널로 생성한 인스턴스에 접속해보자!
# 인스턴스 생성시 발급받아 다운받은 key를 ReadOnly 모드로 변경
~ chmod 400 test-kafka-server-key.pem
# (key)파일 권한 확인하기
~ ll test-kafka-server-key.pem
# ssh로 ec2인스턴스에 접속 ( key 기본user@퍼블릭IP )
~ ssh -i test-kafka-server-key.pem ec2-user@3.37.89.146
인스턴스에 자바 설치하기
카프카 브로커를 실행하기 위해서는 JDK가 필요하기 때문에 yum을 이용해 자바를 설치한다.
# 자바 1.8 설치
[ec2-user@ip-172-31-37-178 ~]$ sudo yum install -y java-1.8.0-openjdk-devel.x86_64
# 자바 버전 확인
[ec2-user@ip-172-31-37-178 ~]$ java -version
openjdk version "1.8.0_382"
OpenJDK Runtime Environment (build 1.8.0_382-b05)
OpenJDK 64-Bit Server VM (build 25.382-b05, mixed mode)
주키퍼, 카프카 브로커 실행
(A) 카프카 바이너리 패키지 다운로드
# 카프카 바이너리 패키지 다운로드
[ec2-user@ip-172-31-37-178 ~]$ wget https://archive.apache.org/dist/kafka/2.5.0/kafka_2.12-2.5.0.tgz
# tar 파일 압축 해제
[ec2-user@ip-172-31-37-178 ~]$ tar xvf kafka_2.12-2.5.0.tgz
# 확인
[ec2-user@ip-172-31-37-178 ~]$ ll
합계 60164
drwxr-xr-x 6 ec2-user ec2-user 89 4월 8 2020 kafka_2.12-2.5.0
-rw-rw-r-- 1 ec2-user ec2-user 61604633 7월 6 2020 kafka_2.12-2.5.0.tgz
카프카 브로커 힙메모리 설정
t2.micro 인스턴스는 1G 메모리를 가지고 있는데 카프카 브로커 + 주키퍼의 default 메모리 설정은 1G를 넘기 때문에 기본 힙 메모리 사이즈를 줄여주어야 한다.
# 힙 메모리 설정 (최대400 시작시400)
export KAFKA_HEAP_OPTS="-Xmx400m -Xms400m"
# 설정 확인
echo $KAFKA_HEAP_OPTS
-Xmx400m -Xms400m
(B) 주키퍼 실행
# 주키퍼 서버를 config설정파일과 함께 실행 (현재 있는 위치에 따라 파일 missing 오류 날 수 있음)
[ec2-user@ip-172-31-37-178 bin]$ ./zookeeper-server-start.sh -daemon ../config/zookeeper.properties
# 잘 실행됐는지 확인
[ec2-user@ip-172-31-37-178 bin]$ jps -vm
[ec2-user@ip-172-31-37-178 bin]$ jobs
(C) 카프카 브로커 실행
# 카프카 브로커 실행
[ec2-user@ip-172-31-37-178 bin]$ ./kafka-server-start.sh ../config/server.properties
# 확인
[ec2-user@ip-172-31-37-178 bin]$ jobs
로컬 PC에서 카프카 브로커와 통신
로컬PC에 카프카 바이너리 패키지 설치
# 카프카 바이너리 패키지 로컬에 설치
~ curl https://archive.apache.org/dist/kafka/2.5.0/kafka_2.12-2.5.0.tgz --output kafka.tgz
# 압축 해제
~ tar -xvf kafka.tgz
# 원격 카프카 정보 확인
cd kafka_2.12-2.5.0
bin/kafka-broker-api-versions.sh --bootstrap-server 3.37.89.146:9092