[CentOS] Apache Kafka 설치 및 사용 방법

아파치 카프카(Apache Kafka)는 아파치 소프트웨어 재단이 스칼라로 개발한 오픈 소스 메시지 브로커 프로젝트이다.
출처 : 위키백과

메시지 큐를 사용하여 동기화 서비스 및 대용량 분산 시스템을 구축하기 위해 Zookeeper와 함께 Apache Kafka를 사용하게 되었습니다.

운영환경

  • CentOS 7.6

1. 다운로드 및 설치

1
2
3
[root@localhost ~]$ cd /home/test
[root@localhost test]$ wget http://apache.mirror.cdnetworks.com/kafka/2.1.0/kafka_2.11-2.3.0.tgz
[root@localhost test]$ ln -s kafka_2.11-2.3.0 kafka

2. server.properties 수정

1
2
3
4
5
6
7
8
9
10
11
12
[root@localhost test]$ vim kafka/config/server.properties

# zookeeper 서버의 myid 값으로 설정
broker.id=1
#Broker가 받은 데이터를 관리위한 저장공간
log.dirs=/home/test/kafka-logs
#Broker가 사용하는 호스트와 포트를 지정
listeners=PLAINTEXT://0.0.0.0:9002
#Producer와 Consumer가 접근할 호스트와 포트를 지정, 기본값은 listeners를 사용
advertised.listeners=PLAINTEXT://192.168.24.10:9092
# zookeeper의 접속 정보
zookeeper.connect=192.168.24.7:2181

3. 실행

1
2
[root@localhost test]$ cd kafka/bin
[root@localhost bin]$ ./kafka-server.start.sh ../config/server.properties

정상적으로 실행이 되면 다음과 같은 메시지가 뜹니다.

1
2
....중략....
[KafkaServer id=1] started (kafka.server.KafkaServer)

4. 서비스 등록

마지막으로 kafka-server.service라는 스크립트를 만들고 서비스에 등록합니다.

1
2
3
# 종료 후 서비스 등록
[root@localhost bin]$ ./kafka-server-stop.sh
[root@localhost bin]$ vi /etc/systemd/system/kafka.service
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[Unit]
Description=kafka
After=network.target

[Service]
Type=simple
User=test
Group=test
SyslogIdentifier=kafka
WorkingDirectory=/home/test/kafka
Restart=always
RestartSec=0s
ExecStart=/home/test/kafka/bin/kafka-server-start.sh /home/test/kafka/config/server.properties
ExecStop=/home/test/kafka/bin/kafka-server-stop.sh

[Install]
WantedBy=multi-user.target

저장하고 나서 서비스를 재시작하고 카프카를 실행합니다. 정상적으로 실행되면 시스템 부팅 시 자동실행 설정을 지정합니다.

1
2
3
4
5
6
7
8
# 서비스 데몬 재시작
[root@localhost ~]$ systemctl daemon-reload
# 카프카 실행 (종료는 stop, 재시작은 restart)
[root@localhost ~]$ systemctl start kafka-server.service
# 실행상태 확인
[root@localhost ~]$ systemctl status kafka-server.service
# 시스템 부팅할때 자동실행 설정
[root@localhost ~]$ systemctl enable kafka-server.service

방화벽 설정

1
2
3
4
[root@localhost ~]$ firewall-cmd --permanent --zone=public --add-port=9092/tcp

## 방화벽 재시작
[root@localhost ~]$ firewall-cmd --reload

kafka topic 관리

topic 리스트

1
2
3
# 192.168.24.7는 zookeeper 접속 주소
[root@localhost ~]$ cd /home/test/kafka/bin
[root@localhost bin]$ ./kafka-topics.sh --list --zookeeper 192.168.24.7:2181

topic 생성

topic 명은 manager-out 로 설정하였습니다.

1
2
3
[root@localhost ~]$ cd /home/test/kafka/bin
[root@localhost bin]$ ./kafka-topics.sh --create --zookeeper 192.168.24.7:2181 --replication-factor 1 --partitions 5 --topic manager-out
[root@localhost bin]$ ./kafka-topics.sh --zookeeper 192.168.24.7:2181 --alter --topic manager-out --config retention.ms=600000

topic 삭제

1
[root@localhost bin]$ ./kafka-topics.sh --delete --zookeeper 192.168.24.7:2181 --topic manager-out

topic 상세정보

1
[root@localhost bin]$ ./kafka-topics.sh --describe --zookeeper 192.168.24.7:2181
Share