아파치 카프카를 우분투에 설치하는 방법을 알아보겠습니다. 설치에 사용된 우분투 버전은 22.04 입니다. 설치하기 전에 아래의 명령어를 통해 먼저 자바를 설치해 줍니다.
sudo apt update
sudo apt upgrade
sudo apt install default-jdk
1단계 : 카프카 최신버전 다운로드
카프카는 별도로 라이브러리처럼 설치하는 게 아니라 그냥 다운로드해서 어느 폴더에 집어넣으면 끝입니다. 일단 아래 코드와 같이 다운로드 해줄게요.
wget https://dlcdn.apache.org/kafka/3.2.0/kafka_2.13-3.2.0.tgz
그 다음에 압축을 풀고, 압축을 푼 폴더를 그냥 home 폴더에 두기는 좀 그러니까 적절한 폴더로 이동해 주면 됩니다.
tar xzf kafka_2.13-3.2.0.tgz
sudo mv kafka_2.13-3.2.0 /usr/local/kafka
2단계 : 카프카 서비스 생성
지금까지는 그냥 다운받고 폴더 옮겨준 거니까, 서비스를 직접 생성해 줍니다. 아래 두개를 해줘야 합니다.
- Zookeeper service
- Kafka service
둘 다 서비스 파일을 /etc/systemd/system/ 폴더 안에 직접 만들어 줍니다. 먼저 zookeeper부터 해볼게요.
sudo vi /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/local/kafka/bin/zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.properties
ExecStop=/usr/local/kafka/bin/zookeeper-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target
다음은 kafka 차례입니다.
sudo vi /etc/systemd/system/kafka.service
편집기는 vi를 쓰시든, nano를 쓰시든 상관없구요. 아래와 같이 추가합니다.
[Unit]
Description=Apache Kafka Server
Documentation=http://kafka.apache.org/documentation.html
Requires=zookeeper.service
[Service]
Type=simple
Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64"
ExecStart=/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties
ExecStop=/usr/local/kafka/bin/kafka-server-stop.sh
[Install]
WantedBy=multi-user.target
3단계 : 카프카 서비스 실행
일단은 등록한 서비스를 적용하기 위해 대몬을 다시 로드합니다.
sudo systemctl daemon-reload
하고 나서, 두개 서비스를 시작해 줍니다.
sudo systemctl start zookeeper
sudo systemctl start kafka
여기까지 하면 카프카 서버가 실행되고, 토픽을 발행하고 데이터를 보내고 받을 수 있게 됩니다. 이제 간단한 예제로 토픽을 발행하고, 메세지를 보내고 받아 볼게요.
메세지 보내고 받기 예제
먼저 아래와 같이 토픽을 하나 생성해 보겠습니다. 카프카 서버는 하나니까, 아래와 같이 설정해 볼게요.
- replication : 1 (카프카 서버 하나)
- 파티션 수 1개
- 토픽 이름 : test
cd /usr/local/kafka
bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
위와 같이 하고 나면, 정상적으로 생성되었다는 메세지가 뜰 겁니다. 진짜 잘 생성되었는지 다음 명령어로 테스트합니다.
bin/kafka-topics.sh --list --bootstrap-server localhost:9092
그러면 생성되어 있는 토픽 리스트가 나타납니다. test 라는 토픽이 리스트에 뜬다면 정상입니다.
메세지 보내기 받기
카프카는 producer 를 통해 메세지를 보내고, consumer 를 통해 메세지를 받습니다. 생성된 토픽에다가 한번 밀어넣어 보고, 밀어넣은 걸 받아볼께요. 쉘을 두개 띄워서 진행하시죠. 먼저 첫번째 쉘에 producer 를 실행합니다.
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
이렇게 실행하면 파이썬 실행하듯이 > 커서가 뜨고요, 거기에 뭔가 쓰면 메세지가 보내집니다. 아래와 같이 몇 개를 보냈다고 해 보죠.
> test txt
> 12345
> result
이제 다른 쪽 쉘에서 consumer 를 실행합니다.
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
이렇게 하면, 위에서 보낸 메세지가 그대로 뜨면서 수신되는 모습을 볼 수 있을 겁니다. 이제 두 쉘 다 끄지 말고, producer를 실행한 쉘 쪽에서 한번 계속해서 메세지를 입력해 보세요. 그러면 consumer 쉘 쪽에서도 같은 내용을 계속 수신해서 뱉어낼 겁니다.
댓글