KT Cloud 의 VM 이미지 Kafka 란
Apache 사의 Kafka를 KT Cloud Server 기반으로 제공하는 이미지 기반 설치형 서비스
서비스 지원 범위
Kafka를 쉽게 설치하여 사용할 수 있는 편의성을 제공해주는 서비스로, 설치 이외의 부분에 대해서는 지원 하지 않음
예를 들어, Kafka 클러스터의 고가용성(HA) 구성, 운영, 모니터링, 데이터 관리, 보안 설정 등에 대한 추가적인 지원은 제공하지 않음
HA 구성
브로커 추가 및 클러스터 구성 등의 별도 설정은 인프라/네트워크 구조, 서비스 규모 등 다양한 요소가 고려되어야 하며, 해당 과정은 고수준
의 숙련도 요구, 구성이 필요하다면 Spark Felice 상품을 통해 Kafka 도입 권유
Kafka란?
Kafka를 '분산 이벤트 브로커'로 정의하면 이벤트 데이터를 생성하는 애플리케이션(프로듀서)과 이벤트 데이터를 사용하는 애플리케이션(컨슈머) 간에 안정적으로 데이터를 전달하고 중계하는 역할을 하는 분산 시스템입니다.
Kafka 테스트
참고 : Kafka 클러스터를 미리 설정해 두어야 한다. 테스트 환경을 구성하기 위한 Kafka 브로커와 주키퍼(Zookeeper) 설정이 필요
1. Kafka 클러스터 구성
- Kafka 클러스터를 구성하고 필요한 토픽(Topic)을 생성한다.
- Kafka Broker 설정 파일 복사
- Kafka 브로커 설정 파일을 복사하여 각각 다른 브로커용으로 사용할 파일을 생성한다. 이 예제에서는 두 개의 브로커를 구성하려한다.
# 브로커 1 설정 파일 복사
cp /opt/kafka/kafka_2.13-3.1.0/config/server.properties /opt/kafka/kafka_2.13-3.1.0/config/server-1.properties
# 브로커 2 설정 파일 복사
cp /opt/kafka/kafka_2.13-3.1.0/config/server.properties /opt/kafka/kafka_2.13-3.1.0/config/server-2.properties
2. 각 브로커의 설정 편집
- 'server-1.properties' 및 'server-2.properties' 파일을 각각 열고 다음과 같이 설정을 변경한다.
- 'broker.id' : 각 브로커에 고유한 ID를 부여한다. 중복되지 않아야 한다.
- 'listeners' : 각 브로커의 리스닝 주소와 포트를 설정한다.
- 'log.dirs' : 각 브로커의 데이터 로그 디렉터리를 설정한다. 각 브로커마다 다른 디렉터리를 사용해야 한다.
broker.id=1
listeners=PLAINTEXT://:9092
log.dirs=/tmp/kafka-logs-1
broker.id=2
listeners=PLAINTEXT://:9093
log.dirs=/tmp/kafka-logs-2
3. Zookeeper 설정 및 실행
sudo cp /opt/kafka/kafka_2.13-3.1.0/config/zookeeper.properties /opt/kafka/kafka_2.13-3.1.0/config/zookeeper-test.properties
Zookeeper 서비스 유닛파일을 생성해주어야 한다.
sudo nano /etc/systemd/system/zookeeper.service
[Unit]
Description=Apache ZooKeeper server
Documentation=http://zookeeper.apache.org
[Service]
ExecStart=/opt/kafka/kafka_2.13-3.1.0/bin/zookeeper-server-start.sh /opt/kafka/kafka_2.13-3.1.0/config/zookeeper-test.properties
ExecStop=/opt/kafka/kafka_2.13-3.1.0/bin/zookeeper-server-stop.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
서비스 유닛 다시 로드하고 활성화 하고 시작하고 상태 확인한다.
4. Kafka Broker 실행
- 각 브로커를 실행한다. 서로 다른 터미널 창에서 다음과 같이 실행한다.
- Kafka Broker 1 실행
/opt/kafka/kafka_2.13-3.1.0/bin/kafka-server-start.sh /opt/kafka/kafka_2.13-3.1.0/config/server-1.properties
- Kafka Broker 2 실행
/opt/kafka/kafka_2.13-3.1.0/bin/kafka-server-start.sh /opt/kafka/kafka_2.13-3.1.0/config/server-2.properties
실행 완료
Kafka 브로커가 성공적으로 시작됐음을 확인할 수 있다.
이제 클러스터의 브로커가 정상적으로 작동 중이므로 필요한 경우 다른 작업을 수해아거나 Kafka 토픽을 생성하여 데이터를 보내고 읽을 수 있다.
2. 프로듀서 테스트
- Kafka 클러스터로 데이터를 보내는 프로듀서(Producer)를 테스트한다.
- Kafka 커맨드 라인 프로듀서를 사용하여 메시지를 생성하고 테스트 토픽에 전송할 수 있다.
/opt/kafka/kafka_2.13-3.1.0/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic my-topic
my-topic 을 생성하였다. 프로듀서가 시작되었고 이제 엔터키를 눌러 Kafka 토픽으로 메시지를 보낼 수 있다.
Hello kafka 라는 메시지를 보내주었고 이제 새로운 터미널 창을 열어 my-topic 의 메시지를 확인해보자.
3. 컨슈머 테스트
- Kafka 클러스터에서 데이터를 읽는 컨슈머(Consumer)를 테스트 한다.
- Kafka 커맨드 라인 컨슈머를 이용하여 메시지를 읽을 수 있다.
/opt/kafka/kafka_2.13-3.1.0/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic my-topic --from-beginning
메시지가 잘 확인 되는 것을 확인할 수 있다.
되돌아보며
이렇게 주키퍼(Zookeeper) 설정과 카프카 설정을 수동으로 구성하고 테스트를 성공적으로 완료했기때문에 Kafka 에 대한 서비스를 이해하고 수동으로 설정할 수 있다면 이용하기에는 어려움이 없어보인다.
하지만, 수동으로 설정하고 관리하는 작업은 복잡하고 시간이 많이 소요될 수 있으며, 운영 환경에서는 더 많은 고려사항이 필요할 수 있다.
따라서 Kafka 를 더 쉽게 운영할 수 있는 배포 및 관리도구를 고려하는 것을 권장하고 싶다.
'KT Cloud' 카테고리의 다른 글
[KT-Cloud] DBaaS for MariaDB (0) | 2023.10.25 |
---|---|
[KT-Cloud] Serverless Code Run & App Run (0) | 2023.10.25 |
[KT-Cloud] Network > Connect Hub 에 대해 (0) | 2023.09.12 |
[KT-Cloud] KT Cloud Network 이해_Network 개념 및 장비 역할 (0) | 2023.09.04 |
[KT-Cloud] DBaaS for MySQL 8 (0) | 2023.08.31 |