사전 설치
1. Java 설치
Java Development Kit (JDK)를 설치하세요.
NOTE: Your local environment must have Java 8+ installed.
$ sudo apt update
$ sudo apt install default-jre
$ sudo apt install default-jdk
설치 확인
$ java -version
openjdk version "17.0.11" 2024-04-16
OpenJDK Runtime Environment (build 17.0.11+9-Debian-1deb12u1)
OpenJDK 64-Bit Server VM (build 17.0.11+9-Debian-1deb12u1, mixed mode, sharing)
설치
1. Kafka 다운로드
- 파일 다운로드 경로
https://dlcdn.apache.org/kafka/3.7.1/kafka_2.13-3.7.1.tgz
$ wget https://dlcdn.apache.org/kafka/3.7.1/kafka_2.13-3.7.1.tgz
$ tar -xzf kafka_2.13-3.7.1.tgz
$ cd kafka_2.13-3.7.1
2. Zookeeper 시작하기
Kafka는 Zookeeper를 필요로하기 때문에 먼저 시작시켜 줍니다.
$ bin/zookeeper-server-start.sh config/server.properties
(Option) 필요한 경우 서비스로 등록시켜 관리합니다.
- 재시작시 자동으로 실행이 필요한 경우 등
$ sudo vi /etc/systemd/system/zookeeper-server.service
zookeeper-server.service 파일 내용
[Unit]
Description=zookeeper-server
After=network.target
[Service]
Type=forking
User=${your-user}
Group=${your-group}
SyslogIdentifier=zookeeper-server
WorkingDirectory=${your-directory}
Restart=always
RestartSec=0s
ExecStart=${your-directory}/bin/zookeeper-server-start.sh config/zookeeper.properties
ExecStop=${your-directory}/bin/zookeeper-server-stop.sh
3. Kafka 시작하기
Kafka를 실행시킵니다.
# Start the Kafka broker service
$ bin/kafka-server-start.sh config/server.properties
(Option) 필요한 경우 서비스로 등록시켜 관리합니다.
- 재시작시 자동으로 실행이 필요한 경우 등
$ sudo vi /etc/systemd/system/kafka-server.service
kafka-server.service 파일 내용
[Unit]
Description=kafka-server
After=network.target
[Service]
Type=forking
User=${your-user}
Group=${your-group}
SyslogIdentifier=kafka-server
WorkingDirectory=${your-directory}
Restart=always
RestartSec=0s
ExecStart=${your-directory}/bin/zookeeper-server-start.sh config/server.properties
ExecStop=${your-directory}/bin/zookeeper-server-stop.sh
4. 동작 확인
- Topic을 생성하여 정상적으로 동작하는지 확인한다.
$ bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server localhost:9092
- 생성 된 Topic 정보를 확인한다.
$ bin/kafka-topics.sh --describe --topic quickstart-events --bootstrap-server localhost:9092
Topic: quickstart-events TopicId: Dqx24JbaTeK_Asr90184Lg PartitionCount: 1 ReplicationFactor: 1 Configs:
Topic: quickstart-events Partition: 0 Leader: 0 Replicas: 0 Isr: 0
Trouble Shooting
- 외부의 다른 서버에서 해당 Kafka 서비스에서 사용이 안되는 경우가 발생하였습니다.
- 기본 설정으로는 localhost 또는 127.0.0.1이라는 주소로 Kafka에 접근하게 됩니다.
- IP로 접근하려는 외부 서비스들이 있을 경우 아래 파일에 해당 서버의 IP 주소를 advertised.listeners 에 등록합니다.
/config/server.properties
############################# Socket Server Settings #############################
# The address the socket server listens on. If not configured, the host name will be equal to the value of
# java.net.InetAddress.getCanonicalHostName(), with PLAINTEXT listener name, and port 9092.
# FORMAT:
# listeners = listener_name://host_name:port
# EXAMPLE:
# listeners = PLAINTEXT://your.host.name:9092
#listeners=PLAINTEXT://:9092
# Listener name, hostname and port the broker will advertise to clients.
# If not set, it uses the value for "listeners".
advertised.listeners=PLAINTEXT://your.host.name:9092