서비스에 Kafka 적용기 1 - 환경구성

Sihwan Kim·2024년 2월 22일
0

서비스중 발생한 이벤트들을 빠르게 사용자에게 전달하고자 kafka도입을 고민하게 되었다.

1. 환경 설치

sudo apt-get update
sudo apt-get install default-jre # java 설치
curl "https://archive.apache.org/dist/kafka/2.7.2/kafka_2.12-2.7.2.tgz" -o ./kafka.tgz # kafka 설치

$ cd kafka
$ tar -xvzf kafka.tgz --strip 1
$ export KAFKA_HEAP_OPTS="-Xms400m -Xmx400m”
$ echo $KAFKA_HEAP_OPTS

vi /home/ubuntu/.bashrc
.bashrc 내 내용추가
export KAFKA_HEAP_OPTS="-Xms400m -Xmx400m"
export JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
export PATH=$PATH:$JAVA_HOME/bin

2. 설정 변경

Kafka Property 수정

vi /kafka/config/server.properties
advertised.listeners=PLAINTEXT://서버 아이피:9092
log.dirs=/home/ubuntu/kafka/logs

서비스 등록

zookeeper service

sudo vi /etc/systemd/system/zookeeper.service
내용 :
[Unit]
Requires=network.target remote-fs.target
After=network.target remote-fs.target
[Service]
Type=simple
User=ubuntu
ExecStart=/home/ubuntu/kafka/bin/zookeeper-server-start.sh /home/ubuntu/kafka/config/zookeeper.properties
ExecStop=/home/ubuntu/kafka/bin/zookeeper-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target

kafka service

sudo vi /etc/systemd/system/kafka.service
내용 :
[Unit]
Requires=zookeeper.service
After=zookeeper.service
[Service]
Type=simple
User=ubuntu
ExecStart=/bin/sh -c '/home/ubuntu/kafka/bin/kafka-server-start.sh
/home/ubuntu/kafka/config/server.properties >
/home/ubuntu/kafka/kafka.log 2>&1'
ExecStop=/home/ubuntu/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target

3. 서비스 시작

Service 실행

sudo systemctl start kafka

Service 상태 확인

sudo systemctl status kafka

failed가 아닌 running이 떠야한다.

Service Enable

sudo systemctl enable zookeeper
sudo systemctl enable kafka

4. 여러 Kafka 서버 생성

EC2에서 AMI 생성

각 서버에서 zookeeper id 적용

echo 1> ~/kafka/zookeeper/myid

zookeeper.properties에 내용 수정 및 추가

vi ~/kafka/config/zookeeper.properties
내용:
initLimit=5
syncLimit=2
server.1=서버1아이피:2888:3888
server.2=서버2아이피:2888:3888
server.3=서버3아이피:2888:3888

나중에 실행시에 zookeeper가 자꾸 꺼진다면
https://stackoverflow.com/questions/30940981/zookeeper-error-cannot-open-channel-to-x-at-election-address/30993130#30993130?newreg=08fbe3fd0a464f8ebaf41b598b19f2dc
여기 내용처럼 작성중인 서버의 아이피는 0.0.0.0으로 바꿔주면 해결되었다.

server.properties 수정

vi ~/kafka/config/server.properties
broker.id=0~2 (각 서버별로 다르게)
advertised.listener=PLAINTEXT://현재 서버 아이피
zookeeper.connect= (각서버의 privateIP)

Service 시작

sudo service kafka start
sudo service kafka status

running중인 것 확인!

이때 zookeeper는 실행되고 있는데 kafka는 failed라고 나올 경우
https://stackoverflow.com/questions/67705738/problem-with-kafka-failed-with-result-exit-code-status-1-failure
이 내용처럼 logs의 meta.properties에서 brocker.id를 바꾸 server.properties의 작성한 것과 같이 작성하고 cluster.id를 주석처리해주면 해결되었다.

0개의 댓글