환경 세팅 전 갖추어야할 것
- AWS 계정
- 적당한 성능의 EC2
- 이번 실습은 AWS 프리티어에서 진행하기 위해 EC2 t2.micro (메모리 1GB)에서 진행함

EC2에 Kafka 설치 / 실행하기
1. JDK 17 설치하기
- Kafka를 실행시키려면 JDK 17 이상이 설치되어 있어야 합니다.
sudo apt update
sudo apt install openjdk-17-jdk
java -version # 잘 설치됐는 지 확인
2. Kafka 설치하기
wget https://dlcdn.apache.org/kafka/4.0.0/kafka_2.13-4.0.0.tgz
3. 설치한 파일 압축풀기
tar -xzf kafka_2.13-4.0.0.tgz # 압축 풀기
cd kafka_2.13-4.0.0
4. Kafka를 실행시켰을 때 잡아먹는 메모리 크기 낮추기
- 프리티어인 t2.micro로 진행하기 때문에 Kafka의 메모리를 낮춘다. (필요없다면 하지 않아도 됩니다.)
export KAFKA_HEAP_OPTS="-Xmx400m -Xms400m"
5. swap을 활용해 메모리 늘리기 (만약 비싸게 EC2를 만들어서 충분한 메모리를 확보하였다면 할 필요 없음)
- 스왑 메모리는 메모리를 늘리는 대신 속도가 느려지기 때문에 필요할 때 사용하는 것을 추천
5.1. swap 메모리를 2GB로 설정
sudo dd if=/dev/zero of=/swapfile bs=128M count=16 # 2GB짜리의 파일 생성
sudo chmod 600 /swapfile # 파일에 권한 부여
sudo mkswap /swapfile # 2GB 짜리 파일을 swap 공간의 형태로 전환
sudo swapon /swapfile # swap 활성화
5.2. 시스템 부팅 시마다 자동으로 활성화 되도록 파일시스템 수정
# 시스템 부팅 시마다 자동으로 활성화 되도록 파일시스템 수정
sudo vi /etc/fstab
# 아래 내용을 추가하고 저장하기
/swapfile swap swap defaults 0 0
5.3. swap 메모리가 잘 설정됐는 지 확인하기
free

6. Kafka 설정 수정하기
vi config/server.properties
server.properties
...
# 외부에서 접근할 때 사용하는 주소
advertised.listeners=PLAINTEXT://{EC2 Public IP}:9092,CONTROLLER://{EC2 Public IP}:9093

7. Kafka 서버 시작하기
# 초기 로그 폴더 셋팅 (카프카 첫 실행 때만 이 명령어를 입력하면 됨)
KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)"
bin/kafka-storage.sh format --standalone -t $KAFKA_CLUSTER_ID -c config/server.properties
# 카프카 서버 실행
cd ~/kafka_2.13-4.0.0
bin/kafka-server-start.sh config/server.properties # 포그라운드에서 실행

8. Kafka 서버를 백그라운드에서 실행하기
# 백그라운드에서 실행
bin/kafka-server-start.sh -daemon config/server.properties
# 백그라운드에서 실행되고 있는 kafka 서버의 로그 확인하기
tail -f logs/kafkaServer.out
9. Kafka 서버가 실행 중인지 확인하는 방법
sudo lsof -i:9092 # 9092번 포트에서 실행 중인 프로세스 조회

10. Kafka 서버 멈추기
bin/kafka-server-stop.sh
참고

- kafka 디렉터리 내부에 있는 bin 디렉터리로 들어가보면 다양한 쉘 스크립트 파일(.sh)이 존재한다. 실제 카프카 명령어를 실행시킬 때 이 쉘 스크립트 파일을 활용해서 실행시키는 것이다.
'개발 공부 > kafka' 카테고리의 다른 글
| 5. Kafka 메시지 처리 실패 시 대처 방법 (feat. Spring) (DLT, 재시도) (+실습) (0) | 2025.11.24 |
|---|---|
| 4. Kafka의 Producer, Consumer 서버 만들기 (feat. Spring) (+실습) (0) | 2025.11.23 |
| 3-2. Kafka 토픽 네이밍 규칙 (0) | 2025.11.21 |
| 3-1. Kafka의 핵심 요소와 작동 (Topic, Consumer, Producer, Consumer Group, OffSet, CURRENT OFFSET) (+ 실습) (0) | 2025.11.21 |
| 1. Kafka와 메시지큐 (정의, 형태) (0) | 2025.11.20 |