kafka 서버 배포하기~~ 프로젝트 진행 중 카프카를 써야할 일이 생겼는데, MSK 를 쓰자니 어마어마한 비용을 감당할 수 없는 코린이는 고냥 인스턴스를 띄워서 돌려버리기로 합니다...
아주아주 간단하니 라이브 배포용이 아니라 잠시 적용하는 거라면 직접 설치해 사용해도 좋을 것 같습니다~!
Apache Kafka
를 사용하려면 자바가 필요하기 때문에 자바를 설치해줍니다!
wget
으로 카프카를 다운로드한 후, tgz 파일의 압축을 풀어줍니다.
폴더명이 길어서 불편하므로 저는 kafka
로 이름을 변경해줬습니다.
sudo apt install openjdk-11-jdk
wget https://dlcdn.apache.org/kafka/3.1.0/kafka_2.13-3.1.0.tgz
tar -zxf kafka_2.13-3.1.0.tgz
mv kafka_2.13-3.1.0.tgz kafka
kafka/config/server.properties
를 수정해줍니다.
초기값에서 listeners=PLAINTEXT://:9092
의 주석을 제거하고, advertised.listeners
을 추가해줍니다.
주소 | 설명 |
---|---|
listeners | 카프카 브로커가 내부적으로 바인딩하는 주소. |
advertised.listeners | 카프카 프로듀서, 컨슈머에게 노출할 주소. 설정하지 않을 경우 디폴트로 listners 설정이 적용됩니다. |
cd kafka/
vi config/server.properties
...
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://{aws ec2 public ip}:9092
...
예시)
zookeeper을 먼저 실행하고, kafka 서버를 실행해줍니다.
cd bin/
./zookeeper-server-start.sh -daemon config/zookeeper.properties
./kafka-server-start.sh -daemon config/server.properties
netstat -an | grep 2181 # 실행 확인
./kafka-topics.sh --create --bootstrap-server {aws ec2 public ip}:9092 --topic {topic-name}
# 발행된 토픽 확인
./kafka-topics.sh --list --bootstrap-server {aws ec2 public ip}:9092
create timeout error
고난과 역경을 이겨내며 설치해뒀더니 발생한 에러입니다.
카프카는 자바 기반의 JVM을 사용하는 애플리케이션이므로 메모리가 할당되는 영역인 힙(heap)이 만들어집니다.
Kafka 2.5.0은 기본값으로 1GB의 힙 메모리를 사용하도록 설정되어 있어, t2.micro에서 실행하기 위해서는 heap size 환경변수를 낮춰주어야합니다.
export KAFKA_HEAP_OPTS="-Xmx100m -Xms100m" # 100MB
[아파치 카프카 입문과 활용] 2. Apache kafka 설치, 실행, CLI
Kafka 설정 listeners vs. advertised.listeners
Kafka 핵심 포인트
Kafka 컨슈밍이 안될때는 advertised.listeners 설정을 확인하라
[Apache Kafka] Ubuntu에 Kafka 설치 방법