CQRS 도입기 - 5 MSK 클러스터 테스트

정훈·2023년 5월 7일
0

CQRS

목록 보기
5/8

생성한 EC2에서 Apache Kafka 패키지를 다운 받은 후에 지난 시간에 만든 msk cluster에 메세지를 보내고 다시 받아보는 실습을 할 예정이다.

EC2에서 임의로 두개의 창을 분할 후 , producer 와 consumer를 지정 후 에 topic을 받아보자 !

앞서 진행했던 EC2 환경을 들어가자 !

추후에 CUD Spring Boot Application을 올려야하기때문에 Docker부터 설치를하자

curl -fsSL https://get.docker.com -o get-docker.sh


sudo sh get-docker.sh

이후 실습을 진행하기위해서 Apache Kafka 패키지를 다운받자.

Apache Kafka 패키지 다운

ubuntu 계정을 root로 바꾼후 시작을 하였다.

Apache Kafka는 자바로 만들어져있기때문에 Java 런타임 환경이 필요하다. 설치가 안되어 있을경우 실행을 할수 없다.

# java 설치 
yum install java-11-amazon-corretto.x86_64

# 아파치 카프카 다운로드 하기 
wget https://archive.apache.org/dist/kafka/2.6.2/kafka_2.12-2.6.2.tgz
 
 # 다운받은 파일 압축 풀기 
tar -xzf kafka_2.12-2.6.2.tgz
 
# 이후 kafka 디렉토리로 이동  
$ cd kafka_2.12-2.6.2/bin 

이후 우리는 간단한 실습을 할예정이기때문에 Kafka 클러스터와 통신하는 데 사용되는 보안 프로토콜을 PLAINTEXT를 설정해주자

PLAINTEXT는 Kafka 클러스터와의 통신에서 사용되는 보안 프로토콜 중 하나인데, 이 프로토콜은 데이터를 암호화하지 않고 평문으로 전송하기때문에 데이터를 쉽게볼수있다. 이는 로컬환경에서만 설정하고 , 개발 및 운영을 할시에는 PLAINTEXT를 설정하지말자! .

# bin 폴더로 이동후 

# clinet.properties 를 만든 후 

security.protocol=PLAINTEXT

만일 간단한 실습이 아니라하면 SSL, 또는 SACL을 설정해줘야한다.

이후 준비가 완료되었으므로 topic을 생성해보자 .

topic을 생성할때는 MSK 에서 생성된 Zookeeper를 연결해줘야한다.

이유는 카프카는 분산시스템이기때문에 여러 브로커의 노드가 있을때 함께작동되는데 , 토픽의 메타데이터 또는 파티션의 상태정보 등을 저장해야하고, 이 메타데이터 정보들은 브로커노드가 일관성 있게 유지해줘야하기때문에 ZooKeeper를 사용하여 동기화를 해줘야한다

토픽을 생성해보자 !

위 사진에서 우리는 앞서 PLAINTEXT를 설정해주었기때문에 체크된 일반텍스트를 url을 아래 명령어 중에 주키퍼주소에 넣어주자..

./kafka-topics.sh --create --zookeeper 주키퍼주소 --replication-factor 2 --partitions 1 --topic 토픽이름

# -replication-factor 2 --partitions 1 은 한개의 파티션에 두개의 복제본이 생성되는 명령어다. 

필자는 topic-test 라는 토픽을 생성하였다

토픽이 만들어지는 걸 확인하였다 .

이후 우리가 만든 Topic의 복제본 수를 확인해보자

./kafka-topics.sh --zookeeper 주키퍼주소 --describe --topic topic-test

# describe는 복제본 수(ReplicationFactor)와 파티션 수(PartitionCount)를 확인을 할 수 있다. 

창 분할 하여 메시지 받아보기

왼쪽은 prdocuer 로 설정하고, 오른쪽은 consumer 를 설정해주자

producer 설정

이전에 필자는 client.properties를 config 폴더에 생성하였습니다.

./kafka-console-producer.sh --bootstrap-server 부트스트랩주소 --producer.config ../config/client.properties --topic topic-test

consumer 설정

/kafka-console-consumer.sh --bootstrap-server 부트스트랩주소 --consumer.config ../config/client.properties --topic topic-test

이후 프로듀서에서 메세지를 보내보면

아래 사진과 같이 정상적으로 주고받는걸 확인 할 수 있었다.

0개의 댓글