본문 바로가기
Kafka

[Kafka] Kafka Stream 에제 2 - FavoriteColor

1. EC2 설정 및 실행

Kafka는 항상 켜져 있어야하므로, EC2에 설치

  • AMI: Ubuntu 20.04
  • 인스턴스: t2.micro (무조건 프리티어..)

Kafka는 9092(default) 포트를 사용하므로, inbound 규칙 추가

  • port: 9092 / source: anywhere(0.0.0.0/0, ::/0)

2. Java 설치

Apache Kafka는 Java를 지원하는 모든 플랫폼에서 실행할 수 있다. Ubuntu에서 Kafka를 설정하려면 먼저 java 설치

sudo apt update 
sudo apt-get install openjdk-8-jdk

현재 활성 Java 버전 확인

java --version

openjdk 11.0.10 2021-01-19
OpenJDK Runtime Environment (build 11.0.10+9-Ubuntu-0ubuntu1.20.04)
OpenJDK 64-Bit Server VM (build 11.0.10+9-Ubuntu-0ubuntu1.20.04, mixed mode, sharing)

3. Kafka 2.7.0 설치 및 실행

2.7.0 설치 (2021년 3월 16일 최신 버전)

wget http://www-us.apache.org/dist/kafka/2.7.0/kafka_2.13-2.7.0.tgz

아카이브 파일 추출

tar xzf kafka_2.13-2.7.0.tgz
mv kafka_2.13-2.7.0 /usr/local/kafka # 폴더 이동

Kafka 실행 최소 Heap size 설정 제거 (t2.micro 메모리 크기 때문에 어쩔 수 없다...)

export KAFKA_HEAP_OPTS="-Xmx400m -Xms400m" (설정)

echo $KAFKA_HEAP_OPTS (echo를 통해 확인 가능)

.bashrc 에 kafka 등록

# 맨 밑에 추가
export KAFKA_HOME=/usr/local/kafka
PATH=$PATH:$KAFKA_HOME/bin

config/server.properties 설정 변경

nano config/server.properties

broker.id = 0 (여러개의 클러스터를 구성한다면 겹치지 않게)
listeners=PLAINTEXT://:9092 (주석 제거)
advertised.listeners=PLAINTEXT://{EC2 public IP}:9092 (EC2 public ip 로 변경) 
옵션 설명
broker.id 정수로 된 브로커 번호. 클러스터 내 고유번호로 지정
listeners kafka 통신에 사용되는 host:port
advertised.listeners kafka client가 접속할 host:port
log.dirs 메시지를 저장할 디스크 디렉토리. 세그먼트가 저장됨
log.segment.bytes 메시지가 저장되는 파일의 크기 단위
log.retention.ms 메시지를 얼마나 보존할지 지정. 닫힌 세그먼트를 처리
zookeeper.connect 브로커의 메타데이터를 저장하는 주키퍼의 위치
auto.create.topics.enable 토픽을 자동으로 생성여부
num.partitions 자동생성된 토픽의 default partition 개수
message.max.bytes kafka borker에 쓰려는 메시지 최대 크기

Zookeeper / Kafka 백그라운드 실행

zookeeper-server-start.sh -daemon config/zookeeper.properties
kafka-server-start.sh -daemon config/server.properties

실행 확인

jps

6393 Kafka 
4991 QuorumPeerMain  # Zookeeper

Zookeeper / Kafka 종료

zookeeper-server-stop.sh config/zookeeper.properties
kafka-server-stop.sh config/server.properties

References


🏋🏻 개인적으로 공부한 내용을 기록하고 있습니다.
잘못된 부분이 있다면 과감하게 지적해주세요!! 🏋

댓글