본문 바로가기
제품/Kafka

Rocky에 Kafka 설치하기

by 헬로웬디 2024. 9. 16.

개요

Apache Kafka는 오픈 소스 분산 이벤트 스트리밍 플랫폼으로, Apache Software Foundation에서 개발하였습니다. Java와 Scala 프로그래밍 언어로 작성되어 있으며, Java를 지원하는 모든 플랫폼에 설치할 수 있습니다.

 

Rocky에서 Apache Kafka를 설치하는 방법을 알아봅니다.

 

1. Java 설치

Kafka를 설치하려면 먼저 Java를 설치해야 합니다.

sudo dnf install java-17-openjdk java-17-openjdk-devel

2. Apache Kafka 다운로드 및 설치

https://kafka.apache.org/downloads 에서 Apache Kafka의 최신 버전을 다운로드하세요. Binary downloads에서 최신 Scala 버전을 선택합니다. 

# wget으로 Kafka 다운로드합니다.
wget https://downloads.apache.org/kafka/3.8.0/kafka_2.13-3.8.0.tgz

# 압축 해제합니다.
sudo tar -xvzf kafka_2.13-3.8.0.tgz

# 압축 해제된 폴더를 /usr/local 디렉토리로 복사합니다.
sudo mv kafka_2.13-3.8.0 /usr/local/kafka

 

3. Kafka와 Zookeeper 설정 변경

Kafka와 Zookeeper 설정을 변경하세요.

2024.09.16 - [Kafka] - [Kafka]Kafka, Zookeeper properties 파일 구성하기

 

4. 서비스 실행하기

Kafka를 백그라운드에서 실행하기 위해 Kafka와 Zookeeper 에 대한 systemd 서비스를 생성합니다.

(1) Zookeeper

Apache Kafka는 클러스터 관리를 위해 Zookeeper를 필요로 합니다. 따라서 Kafka를 시작하기 전에 Zookeeper를 먼저 실행해야 합니다. Zookeeper는 Apache Kafka에 함께 포함되어 제공됩니다.

/etc/systemd/system 디렉토리에 “zookeeper.service” 파일을 생성하여 Zookeeper 서비스를 만드세요.

sudo vim /etc/systemd/system/zookeeper.service

# 다음을 작성하세요.
[Unit]
Description=Apache Zookeeper server
Documentation=http://zookeeper.apache.org
Requires=network.target remote-fs.target
After=network.target remote-fs.target

[Service]
Type=simple
ExecStart=/usr/bin/bash /usr/local/kafka/bin/zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.properties
ExecStop=/usr/bin/bash /usr/local/kafka/bin/zookeeper-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

 

(2) Kafka

/etc/systemd/system 디렉토리에 kafka.service” 파일을 생성하여 Kafka 서비스를 만드세요.

sudo vim /etc/systemd/system/kafka.service

# 다음을 작성하세요.
[Unit]
Description=Apache Kafka Server
Documentation=http://kafka.apache.org/documentation.html
Requires=zookeeper.service

[Service]
Type=simple
Environment="JAVA_HOME=/usr/lib/jvm/jre-17-openjdk"
ExecStart=/usr/bin/bash /usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties
ExecStop=/usr/bin/bash /usr/local/kafka/bin/kafka-server-stop.sh

[Install]
WantedBy=multi-user.target

 

위 두 서비스 파일을 모두 생성한 후 systemd 데몬을 다시 로드해야 합니다. 그리고 각각의 서비스를 실행하세요.

sudo systemctl daemon-reload

# Zookeeper 서비스 실행
sudo systemctl start zookeeper
sudo systemctl status zookeeper

# Kafka 서비스 실행
sudo systemctl start kafka
sudo systemctl status kafka

 

두 서비스 상태가 모두  active(running) 이라면 서비스가 성공적으로 실행되고 있습니다.

 

 

[NOTE] Kafka를 root가 아닌 사용자로 실행하려면:

1. Kafka 전용 사용자 생성

sudo useradd --system --no-create-home --shell /sbin/nologin kafka

# --system: 시스템 전용 사용자
# --no-create-home: 홈 디렉토리 생성하지 않음
# --shell /sbin/nologin: 로그인 불가 설정

 

2. Kafka가 설치된 경로(/user/local/kafka)의 소유권 변경

sudo chown -R kafka:kafka /user/local/kafka

 

3. zookeeper 및 kafka service 파일에 user 추가

sudo vim /etc/systemd/system/kafka.service

# 다음을 작성하세요.
[Unit]
Description=Apache Kafka Server
Documentation=http://kafka.apache.org/documentation.html
Requires=zookeeper.service

[Service]
Type=simple
User=kafka
Environment="JAVA_HOME=/usr/lib/jvm/jre-17-openjdk"
ExecStart=/usr/bin/bash /usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties
ExecStop=/usr/bin/bash /usr/local/kafka/bin/kafka-server-stop.sh

[Install]
WantedBy=multi-user.target

 

 

[참조] 

https://medium.com/bina-nusantara-it-division/installing-apache-kafka-on-rocky-linux-or-centos-36458d4a3c26