AWS Managed Streaming for Apache Kafka 실습

임쿠쿠·2023년 4월 29일
0

kafka

목록 보기
1/6
post-thumbnail

0. 실습 목표

1) MSK 클러스터를 생성 및 관련 네트워크를 구축
2) 클라이언트 생성(EC2) 후, MSK 클러스터를 활용하여 Topic, Producer, Consumer 테스트
3) API Gateway REST Proxy를 활용하여, Proxy URL을 통해 Topic별 메시지 전송 테스트

1. 네트워크 구축

1) VPC 생성

  • MSK를 생성 전, Kafka 클러스터를 적용할 VPC를 생성합니다.

2) Subnet 생성

  • Kafka borker를 적용할 Subnet을 생성합니다.
  • 실습에서는 두 개의 가용영역에 각 1개씩의 브로커를 만들예정이므로, 각기 다른 가용영역을 적용해 주세요.
Public-Subnet-A / 10.0.0.0/24 / northeast a영역에 생성
Public-Subnet-B / 10.0.1.0/24 / northeast c영역에 생성


3) Default Route Table 연결

  • routing table은 위에 생성한 VPC의 기본 라우팅 테이블을 적용


4) 외부 접속을 위한 Internet GateWay 생성 및 적용

  • IGW 생성

  • default routing table 적용

2. MSK 클러스터 생성 및 활용

1) MSK 클러스터 및 브로커 생성

  • 테스트를 위해 t3.small 생성 및 2개의 서브넷 적용을 위해 영역 수는 2로 설정
  • 2개의 브로커 생성하기 위해, 위에서 생성한 subnetA, subnetB를 적용

(생성 시, 최대 15분 걸린다고하지만 전 30분 걸렸어요..)


2) Kafka Client EC2 생성

  • Kafka client로 사용할 EC2를 위에서 생성한 VPC내에 구축

  • Kafka Cluster와 EC2 클라이언트가 연결될 수 있도록 보안 그룹을 수정

(1) EC2 인스턴스의 인바운드 규칙으로 Kafka클러스터의 보안그룹을 소스유형으로 지정

(2) Kafka클러스터의 인바운드 규칙에 EC2인스턴스의 보안그룹을 소스유형으로 지정


3) EC2 클라이언트 kafka 테스트

(1) 클라이언트에 카프카 구축

sudo yum install java-1.8.0-openjdk
wget https://archive.apache.org/dist/kafka/2.8.1/kafka_2.12-2.8.1.tgz **(구축한 MSK 버전과 일치해야 합니다.)**
tar -xvf kafka_2.12-2.8.1.tgz
cd kafka_2.12-2.8.1

(2) 카프카 Topic 생성

  • MSK 클라이언트 정보 보기에서 생성된 부트스트랩 서버를 확인 후, Topic을 생성

bin/kafka-topics.sh --create --topic demo --bootstrap-server {MSK 부트스탭서버} --replication-factor 1 --partitions 1

(3) 카프카 Producer 생성

bin/kafka-console-producer.sh --topic demo --bootstrap-server {MSK 부트스탭서버}

(4) 카프카 Consumer 생성

bin/kafka-console-consumer.sh --topic demo_testing2 --bootstrap- {MSK 부트스탭서버}

4) EC2 Public IP를 활용하여 Postman 테스트

(1) Confluent kafka 설치

wget  http://packages.confluent.io/archive/5.1/confluent-5.1.2-2.11.zip
unzip confluent-5.1.2-2.11.zip

export CONFLUENT_HOME=/home/ec2-user/kafka_2.12-2.8.1/confluent-5.1.2
export PATH=$PATH:$CONFLUENT_HOME/bin

(2) properties에 부트스트랩서버 적용

vi confluent-5.1.2/etc/kafka-rest/kafka-rest.properties
bootstrap.servers=PLAINTEXT://{MSK 부트랩서버1},PLAINTEXT://{MSK 부트랩서버2}
/home/ec2-user/kafka_2.12-2.8.1/confluent-5.1.2/bin/kafka-rest-start
/home/ec2-user/kafka_2.12-2.8.1/confluent-5.1.2/etc/kafka-rest/kafka-rest.properties 

(3) EC2 보안 그룹 수정

  • Postman에서 테스트 할 수 있도록 수정

(4) EC2 Public IP로 테스트

cd kafka_2.12-2.8.1
bin/kafka-console-consumer.sh --topic demo_testing2 --bootstrap-server {Put the MSK bootstrap server URLs} 

Postman 테스트

  • Content-Type: application/vnd.kafka.json.v2+json
  • Post 요청 시, 아래와 같이 consumer 응답 체크


5) API Gateway를 활용한 REST proxy 적용

(1) API Gateway 생성

(2) 리소스 생성 및 프록시 설정 후 배포

(3) 테스트

  • 배포된 api gateway 주소의 프록시에 원하는 topic을 적용

참고) https://aws.amazon.com/ko/blogs/big-data/govern-how-your-clients-interact-with-apache-kafka-using-api-gateway/

profile
Pay it forward

0개의 댓글