Gom3rye
팀 프로젝트) (topic생성) MSK 테스트를 위한 bastion host EC2 만들기 본문
MSK는 강력한 기능이지만… strimzi처럼 직접 topic을 생성하는 기능도 없고 제대로 들어오고있는지, 시험삼아 메시지 보내보고~ 이런 간단한 테스트를 위한 UI가 따로 제공되지는 않기 때문에!! 테스트를 해보려면 같은 VPC 대역에 있는 누군가를 위하여 원격으로 해보아야 한다.
이미 같은 VPC에 있는 EKS들을 써도 되지만, 한창 바쁜 때에 끼어들고 싶지 않기 때문에 이거 전용의 작고 소중한 EC2를 만들기로 했다.
실제 업계에서도 스탠다드로 사용하는 방식이라고 하네요. 그래서 쓰는 용어가 배스쳔호스트(bastion host)이다.
EC2를 만들자
- 자유롭게 하되, VPC는 solog-unified-vpc를 선택해줍니다!!
- 보안그룹은 따로 만들어서 9092 등을 개방해도 되고, 이미 있는걸 써도 됨. 우리는 msk cluster가 쓰는 보안그룹을 재활용하기로 함.
Kafka를 설치하자
만들어진 EC2에 접속한 후, kafka client부터 깔아준다.
sudo apt update
sudo apt install -y openjdk-11-jre
sudo apt install -y make
wget https://downloads.apache.org/kafka/3.9.0/kafka_2.13-3.9.0.tgz
tar -xzf kafka_2.13-3.9.0.tgz
echo "export KAFKA_HOME=~/kafka_2.13-3.9.0" >> ~/.bashrc
echo "export PATH=\$PATH:\$KAFKA_HOME/bin" >> ~/.bashrc
source ~/.bashrc
이제 어느 경로에서던 kafka-어쩌구.sh를 실행할 수 있게 되었다. tab으로 자동완성도 된다.
MSK 테스트해보기
일단 MSK의 부트스트랩 주소로 사용할… 9092로 끝나는 엔드포인트 주소 뭉탱이를 터미널 변수로 해둡시다… 매번 치기엔 너무 기니까…
MSK="(endpoint주소!!)"
MSK="b-2.sologmskcluster.81f2k0.c4.kafka.ap-northeast-2.amazonaws.com:9092,b-1.sologmskcluster.81f2k0.c4.kafka.ap-northeast-2.amazonaws.com:9092"
kafka topic 만들기 test
kafka-topics.sh --bootstrap-server $MSK \
--create \
--topic test-topic \
--replication-factor 2
일단 사용할 명령어는 kafka-topics.sh 이고, 옵션을 주렁주렁 줘야 하는데 차례대로…
--bootstrap-server : 접속할 카프카 클러스터의 주소. 아까 참고로 줬던 MSK의 주소 정보를 사용하면 된다. 암호화 없는 버전이니까 plaintext 버전, 즉 9092로 끝나는 주소를 넣어주면 된다.
--create 토픽 만들겠다는 뜻이죠? 나중에 만든 토픽 확인할 때는 이거를 --list 로 변경하면 된다.
--topic 이게 중요한 부분. 그래서 어떤 토픽을 만들건데?? 이다. 테스트니까 test-topic 이라고 해줬는데 실제로 만들 때는 실제로 사용할 토픽 이름을 여기에 써주면 된다.
--replication-factor 자가복제를 몇개 하겠냐는건데, 보통은 브로커 수만큼 해준다. 우리 브로커는 현재 두개니까 2로 넣어준다.
잘 만들어졌는지는 아래의 명령어로 테스트 해봅시다. 앞서 말했듯 create 대신 list 옵션을 주면 된다.
kafka-topics.sh --bootstrap-server $MSK --list
결과값에 아까 만든 test-topic이 포함되어 있는지 확인해보자.
kafka topic consume & produce test
이제 아까 만든 토픽에 뭔가를 produce해보고, 그게 잘 consume 되는지 확인해보자.
일단 produce 되자마자 들어오는지 보기 이해서 consumer를 먼저 켜둔다. 둘이 동시에 진행해야 하니 ssh 접속도 두개를 유지해주자.
먼저 아까 만든 test-topic을 대상으로 consumer를 켜둔다. 부트스트랩 서버는 아까랑 동일하게 우리의 MSK 클러스터 주소로 하고
kafka-console-consumer.sh --bootstrap-server $MSK --topic test-topic
그럼 구독중인 상태가 된다. 아직 아무것도 안 뜰텐데, 그냥 그렇게 두시구 다른 ssh 창으로 넘어가서~
produce를 해보자. 동일한 부트스트랩 주소를 사용하고, 같은 test-topic을 대상으로 발행할 것이다.
kafka-console-producer.sh --bootstrap-server $MSK --topic test-topic
이거 하고나면 > 표시가 뜰텐데, 여기서 뭔가 원하는걸 입력하고 엔터를 누르면 아까 구독해둔 consumer 측에 같은 메시지가 전송될 것이다!
좌측 프로듀서가 보낸 Consumer Test 가 우측 consumer에 보이는 걸 확인할 수 있다.

이제 여기서 우리가 실제로 사용할 topic들 정도만 만들어주고 마무리하면 된다.
kafka-topics.sh --bootstrap-server $MSK \
--create \
--topic service-topic \
--replication-factor 2
kafka-topics.sh --bootstrap-server $MSK \
--create \
--topic system-auth-topic \
--replication-factor 2
kafka-topics.sh --bootstrap-server $MSK \
--create \
--topic system-kmsg-topic \
--replication-factor 2
+ bastion host EC2의 기본 홈에 Makefile을 만들어둠. 아래의 명령어들로 간편한 동작 가능~~
Makefile (최상단 MSK 내용을 최신의 MSK bootstrap-server로 수정해서 만들고 사용하기!)
MSK="b-2.sologmskcluster.81f2k0.c4.kafka.ap-northeast-2.amazonaws.com:9092,b-1.sologmskcluster.81f2k0.c4.kafka.ap-northeast-2.amazonaws.com:9092"
topics:
kafka-topics.sh --bootstrap-server ${MSK} --list
service:
kafka-console-consumer.sh --bootstrap-server ${MSK} --topic service-topic
kmsg:
kafka-console-consumer.sh --bootstrap-server ${MSK} --topic system-kmsg-topic
auth:
kafka-console-consumer.sh --bootstrap-server ${MSK} --topic system-auth-topic
- 토픽 목록 확인하기
make topics
- service-topic 구독하기
make service
- system-kmsg-topic 구독하기
make kmsg
- system-auth-topic 구독하기
make auth
'현대 오토에버 클라우드 스쿨' 카테고리의 다른 글
| 팀 프로젝트) AWS MSK 구축하기 (feat. Terraform) (0) | 2025.11.11 |
|---|---|
| 팀 프로젝트) Terraform EKS - 3개 클러스터 통합 관리 (VPC 공유) (0) | 2025.11.11 |
| 팀 프로젝트) Grafana를 위한 AWS API Gateway, Lambda, SNS 설정 (0) | 2025.11.11 |
| 팀 프로젝트) Elastalert2를 위한 AWS API Gateway, Lambda, SNS 설정 (0) | 2025.11.11 |
| 팀 프로젝트) AWS Lambda 함수 (1) | 2025.11.11 |
