Ubuntu 18.04, Kafka 설치

요구사항

  • Kafka 2.12
  • OpenJDK 11.0.3
  • Ubuntu 18.04

환경 확인

시스템 정보

$ uname -a
Linux kafka 4.15.0-52-generic #56-Ubuntu SMP Tue Jun 4 22:49:08 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

OS 종류 확인

$ cat /etc/issue
Ubuntu 18.04.2 LTS \n \l

Repository 경로를 국내(Kakao Mirror) 사이트로 변경 (Optional)

$ sudo sed -i s#archive\.ubuntu\.com#mirror.kakao.com#g /etc/apt/sources.list
$ sudo apt update

OpenJDK 설치

$ sudo apt install -y openjdk-11-jdk

Step 1 - 사용자 생성

Kafka 를 실행할 사용자(“kafka”) 생성

$ sudo adduser kafka

“kafka” 사용자를 sudo 그룹에 등록

$ sudo adduser kafka sudo

“kafka” 사용자로 로그인

$ su - kafka

Step 2 - Kafka 설치

설치경로 $HOME/kafka/kafka

kafka$ curl -sL http://apache.mirror.cdnetworks.com/kafka/2.2.1/kafka_2.12-2.2.1.tgz | tar xvz -C ~
kafka$ ln -s kafka_2.12-2.2.1/ ~/kafka
kafka$ ls -l ~
lrwxrwxrwx 1 kafka kafka   17 Jun 26 00:54 kafka -> kafka_2.12-2.2.1/
drwxr-xr-x 6 kafka kafka 4096 May 13 16:18 kafka_2.12-2.2.1

Step 3 - Kafka 설정

디렉토리 생성

kafka$ sudo mkdir /data1 /data2
kafka$ sudo chown -R kafka:kafka /data1 /data2

설정파일 변경

kafka$ sudo vi ~/kafka/config/server.properties
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://192.168.0.117:9092
delete.topic.enable = true

Step 4 - 서비스 등록

Zookeeper 서비스 파일 생성

kafka$ sudo vi /etc/systemd/system/zookeeper.service
[Unit]
Requires=network.target remote-fs.target
After=network.target remote-fs.target

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

[Install]
WantedBy=multi-user.target

Zookeeper 서비스 등록 및 시작

kafka$ sudo systemctl enable zookeeper
kafka$ sudo systemctl start zookeeper
kafka$ sudo netstat -lntp
tcp6       0      0 :::2181                 :::*                    LISTEN      15272/java
tcp6       0      0 :::40009                :::*                    LISTEN      15272/java (변동 포트)
..

Kafka 서비스 파일 생성

kafka$ sudo vi /etc/systemd/system/kafka.service
[Unit]
Requires=zookeeper.service
After=zookeeper.service

[Service]
Type=simple
User=kafka
ExecStart=/home/kafka/kafka/bin/kafka-server-start.sh /home/kafka/kafka/config/server.properties
ExecStop=/home/kafka/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

Kafka 서비스 등록 및 시작

kafka$ sudo systemctl enable kafka
kafka$ sudo systemctl start kafka
kafka$ sudo netstat -lntp
tcp6       0      0 :::9092                 :::*                    LISTEN      15674/java
tcp6       0      0 :::35253                :::*                    LISTEN      15674/java (변동 포트)
..

Step 5 - 테스트

Topic 생성

kafka$ ~/kafka/bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic my-topic

Topic 확인

kafka$ ~/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --list
my-topic

Consumer 에서 메시지 처리 준비

kafka$ ~/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic my-topic --from-beginning
(대기)

다른 Console 창에서 Producer 에서 메시지 전송

kafka$ echo "Hello, World" | ~/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic my-topic
kafka$ ~/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic my-topic
(입력)
comments powered by Disqus