[AWS] Amazon MSK 시작하기

Joney의 SW 공부 블로그·2023년 6월 26일
0

AWS MSK

목록 보기
1/4

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이 설정되어 있어야 한다.
  • 영역당 브로커 수는, 한 가용영역에 대해 배포될 브로커의 수이다. 배포 후 변경을 통해 브로커 수를 늘릴 수 있다. (축소는 안됨)

스토리지

  • 브로커가 사용하는 EBS 스토리지 용량을 설정

    • 배포 후 증량은 가능하나, 축소는 안됨
    • 증량은 최적화까지 포함하여 6시간에서 24시간 소요
    • topic에 스트림 되는 데이터 크기, 저장 수명 주기 등을 고려해서 처음에 잘 설정할 것을 권장
  • 프로비저닝 된 스토리지 처리량

    • 클러스터에 데이터를 쓰거나 브로커 간 데이터 복제에 사용되는 스토리지 I/O 성능을 프로비저닝
    • 특정 조건이 만족되면 프로비저닝 된 스토리지 처리량을 활성화 가능
      • 브로커 유형을 m5.xlarge 이상 선택한 경우
      • 10 GiB 이상의 볼륨 크기
    • 브로비저닝된 스토리지 처리량은 250 MiB(기본값) 부터 설정 가능
    • 브로커 유형 별로 최대값이 정해져 있음
  • 계층형 스토리지는 비활성화 (추후에 사용하게 되면 정리)

    • 계층령 스토리지를 지원하는 버전의 kafka 사용 필요

구성

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


2단계: 네트워킹

VPC

  • 브로커를 배포할 VPC 선택
  • 전 단계에서 영역 수를 3으로 설정했기 때문에 3개의 영역과 각 영역에 대해 Subnet 선택
    • 3개의 영역은 중복이 안됨

퍼블릭 액세스

  • 브로커에 퍼블릭 액세스 가능하게 하는 설정
  • 아래의 조건을 만족 필요
    • 퍼블릭 subnet에 브로커 배포 (Internet Gateway 연결 필요)
    • 인증되지 않은 액세스 제어 비활성화
    • SASL/IAM, SASL/SCRAM, MTL과 같은 액세스 제어 방법 중 하나 이상이 활성화
    • 클러스터 내 암호화 활성화 (기본값 활성화, 배포후 변경 불가)
    • 브로커와 클라이언트 간의 일반 텍스트 트래픽 비활성화

Amazon EC2의 보안 그룹

브로커와 통신을 위한 Inbound와 Outbound를 설정하기 위한 보안 그룹

  • Kafka Client 설정하려면 Inbound에 CLient의 보안그룹 추가 필요

3단계: 보안

액세스 제어 방법

  • 인증되지 않은 액세스
    • 인증 작업 없이 브로커에 접근
  • IAM 역할 기반 인증
    • IAM 역할을 사용하여 인증
  • SASL/SCRAM 인증
    • AWS Secrets Manager를 사용하여 인증
  • AWS Certificate Manager를 통한 TLS 클라이언트 인증
    • AWS Private CA를 사용하여 인증

암호화

  • Client와 브로커 간
    • TLS 암호화
      • 액세스 제어 방법으로 IAM 역할 기반 인증, 혹은 SASL/SCRAM 인증을 선택하면 자동으로 TLS 암호화 활성화
    • 일반 텍스트
      • 인증되지 않은 액세스를 선택하면 활성화 가능
  • Cluster 내
    • TLS 암호화
      • 액세스 제어 방법으로 IAM 역할 기반 인증, 혹은 SASL/SCRAM 인증을 선택하면 자동으로 TLS 암호화 활성화


4단계: 모니터링 및 태그

Amazon CloudWatch 지표 설정

  • 기본 모니터링
    • 기본 클러스터와, 브로커 모니터링 (추가 비용 없음)
  • 향상된 브로커 수준 모니터링
  • 향상된 주제 수준 모니터링
  • 향상된 파티션 수준 모니터링

profile
SW 지식 노트 블로그

0개의 댓글