■■■VPC 생성(coco-VPC)
-20.0.0.0/16
■■■ 서브넷 생성(coco-dev-subnet)
– 20.0.0.0/24 공개1
– 20.0.1.0/24 공개2
– 20.0.2.0/24 비공개1
– 20.0.3.0/24 비공개2
■■■ 보안 그룹 생성
-coco-MSK-sg
■■■ MSK 클러스터 생성(coco-MSK-cluster-02)
– Kafka 2.8.1(권장) 버전
– 존 수 2(테스트용)
– 영역당 브로커 1개
– 스토리지 20G
– AWS MSK 기본 구성
– 서브넷 private1,private2에서 생성됨
– IAM 방법에 액세스
– AWS 관리 키 사용
– 기본 모니터링 + Prometheus 사용 가능
– CloudWatch 로그 보내기
■■■ IAM 역할 생성(IAM 접근 방식인 경우 생성)
■■■ 정책 생성
{
“버전”: “2012-10-17”,
“의견”: (
{
“효과”: “허용”,
“행동”: (
“카프카-클러스터:연결”,
“kafka-cluster:AgeCluster”,
“kafka-cluster:DescribeCluster”
),
“자원”: (
“arn:aws:kafka:ap-northeast-2:(계정 ID):cluster/(클러스터 이름)/*”
)
},
{
“효과”: “허용”,
“행동”: (
“kafka-클러스터:주제”,
“kafka-cluster:WriteData”,
“kafka-cluster:ReadData”
),
“자원”: (
“arn:aws:kafka:ap-northeast-2:(AccountID):topic/(클러스터 이름)/*”
)
},
{
“효과”: “허용”,
“행동”: (
“kafka-cluster:AlterGroup”,
“kafka-cluster:DescribeGroup”
),
“자원”: (
“arn:aws:kafka:ap-northeast-2:(계정 ID):그룹/(클러스터 이름)/*”
)
}
)
}
■■■ 역할 생성
– EC2 역할로 생성(생성된 정책 첨부)
■■■ 테스트용 EC2 생성(위의 해당 VPC에서 생성)(EC2 생성 후 IAM 역할에 위의 IAM 역할 추가)
■■■ EC2 설정 테스트
1. 클라이언트 시스템에 Java 설치
sudo 얌 설치 java-1.8.0
2. Apache Kafka 다운로드(웹에 접속하여 버전 확인)
wget https://archive.apache.org/dist/kafka/2.8.1/kafka_2.13-2.8.1.tgz
3. 카프카 압축 풀기
tar -xzf kafka_2.13-2.8.1.tgz
4.kafka_2.12-2.8.1/libs 디렉토리로 이동하여 IAM JAR 파일 다운로드(웹에 접속하여 버전 확인)
https://github.com/aws/aws-msk-iam-auth/releases/download/v1.1.6/aws-msk-iam-auth-1.1.6-all.jar
5. Kafka 설치 디렉토리로 변경
cd /home/ec2-user/kafka_2.13-2.8.1/bin
6. client.properties 생성(vi로 새로 생성한 후 다음 내용을 붙여넣고 저장)
security.protocol=SASL_SSL
sasl.mechanism=AWS_MSK_IAM
sasl.jaas.config=software.amazon.msk.auth.iam.IAMLoginModule이 필요합니다.
sasl.client.callback.handler.class=software.amazon.msk.auth.iam.IAMClientCallbackHandler
7. 클러스터의 프라이빗 엔드포인트 복사
8. 보안 그룹
들어오는 모든 트래픽 설정(나중에 특정 트래픽만 열기)
네트워크 인터페이스로 IP를 찾을 수 있지만 VPC 대역으로 9098을 엽니다.
9. Kafka 항목 만들기(MSKTutorialTopic)
./kafka-topics.sh –create –bootstrap-server(부트스트랩 끝점) –command-config client.properties –replication-factor 2 –partitions 1 –topic(주제 이름)
10. Kafka 생산자 및 소비자 테스트(아래 명령 뒤에 텍스트 입력)
./kafka-console-producer.sh –broker-list(부트스트랩 끝점) –producer.config client.properties –topic(주제 이름)
11. Producer와 Consumer의 내용 확인 (위에서 입력한 메시지가 나타남)
./kafka-console-consumer.sh –bootstrap-server(부트스트랩 끝점) –consumer.config client.properties –topic(주제 이름) –from-beginning
12. 성능 테스트
./kafka-producer-perf-test.sh –topic (주제 이름) –record-size 100 –num-records 200000 –producer-props acks=1 bootstrap.servers=(bootstrap endpoint) — 처리량 – 1
13. ZooKeeper로 구축 및 테스트
./kafka-topics.sh –create –zookeeper(Zookeeper 엔드포인트) –replication-factor 2 –partitions 1 –topic MSKTutorialTopic
./kafka-console-producer.sh –broker-list(부트스트랩 끝점) –producer.config client.properties –topic(주제 이름)
./kafka-console-consumer.sh –bootstrap-server(부트스트랩 끝점) –consumer.config client.properties –topic(주제 이름) –from-beginning