MSK 개요
- MSK는 Amazon Managed Streaming for Apache Kafka의 줄임말
- Apache Kafka를 사용하여 스트리밍 데이터를 처리하는 애플리케이션의 구축 및 실행을 위해 사용할 수 있는 완전관리형 서비스
- MSK는 클러스터 생성, 업데이트 및 삭제 등에 필요한 제어 영역 작업을 제공
- Kafka의 오픈 소스 버전을 실행하기 때문에, Kafka 커뮤니티의 기존 애플리케이션, 도구 및 플러그인이 지원됨
MSK Cluster 생성하기
AWS Console > MSK에 접속하여 클러스터 생성을 눌러서 생성 가능하다.
클러스터 생성 방법 선택
클러스터 생성은 빠른 생성과 사용자 지정 생성 중에 선택이 필요하다.
MSK 생성 시, 나중에 변경 가능한 설정과 변경 불가능한 설정이 있기 때문에, 환경에 맞게 선택이 필요하다.
빠른 생성
빠른 생성은 모범 사례를 사용하여, Kafka 버전과 브로커 영역 수, 영역당 브로커 수, 브로커 유형(인스턴스 유형), 스토리지 사이즈만 설정하여 스타터 클러스터를 생성 가능하다.
빠른 생성은 VPC를 기본 VPC밖에 선택하지 못하기 때문에, 다른 서비스와 VPC를 격리시키고 싶거나, 커스터마이즈가 필요한 개발 서버 및 운영 서버에는 적합하지 않다.
사용자 지정 생성
사용자 지정 생성은 총 5가지 단계(클러스터 설정, 네트워킹, 보안, 모니터링 및 태그, 검토 및 생성)로 클러스터를 설정한다.
1단계: 클러스터 설정
브로커
MSK 클러스터에서 사용할 브로커의 설정이다.
- 브로커의 유형(인스턴스 유형), 영역 수, 영역당 브로커 수를 설정한다.
- 영역은 가용영역을 나타내며, 영역 수를 3으로 하면 클러스터를 배포할 VPC에는 3개의 가용영역에 대해 Subnet이 설정되어 있어야 한다.
- 영역당 브로커 수는, 한 가용영역에 대해 배포될 브로커의 수이다. 배포 후 변경을 통해 브로커 수를 늘릴 수 있다. (축소는 안됨)

스토리지

구성
브로커 설정에 관련한 파라미터

2단계: 네트워킹
VPC
- 브로커를 배포할 VPC 선택
- 전 단계에서 영역 수를 3으로 설정했기 때문에 3개의 영역과 각 영역에 대해 Subnet 선택

퍼블릭 액세스
- 브로커에 퍼블릭 액세스 가능하게 하는 설정
- 아래의 조건을 만족 필요
- 퍼블릭 subnet에 브로커 배포 (Internet Gateway 연결 필요)
- 인증되지 않은 액세스 제어 비활성화
- SASL/IAM, SASL/SCRAM, MTL과 같은 액세스 제어 방법 중 하나 이상이 활성화
- 클러스터 내 암호화 활성화 (기본값 활성화, 배포후 변경 불가)
- 브로커와 클라이언트 간의 일반 텍스트 트래픽 비활성화
Amazon EC2의 보안 그룹
브로커와 통신을 위한 Inbound와 Outbound를 설정하기 위한 보안 그룹
- Kafka Client 설정하려면 Inbound에 CLient의 보안그룹 추가 필요
3단계: 보안
액세스 제어 방법
- 인증되지 않은 액세스
- IAM 역할 기반 인증
- SASL/SCRAM 인증
- AWS Secrets Manager를 사용하여 인증
- AWS Certificate Manager를 통한 TLS 클라이언트 인증
암호화
- Client와 브로커 간
- TLS 암호화
- 액세스 제어 방법으로 IAM 역할 기반 인증, 혹은 SASL/SCRAM 인증을 선택하면 자동으로 TLS 암호화 활성화
- 일반 텍스트
- Cluster 내
- TLS 암호화
- 액세스 제어 방법으로 IAM 역할 기반 인증, 혹은 SASL/SCRAM 인증을 선택하면 자동으로 TLS 암호화 활성화

4단계: 모니터링 및 태그
Amazon CloudWatch 지표 설정
- 기본 모니터링
- 기본 클러스터와, 브로커 모니터링 (추가 비용 없음)
- 향상된 브로커 수준 모니터링
- 향상된 주제 수준 모니터링
- 향상된 파티션 수준 모니터링
