Amazon MSK #2 구성

이번 글은 Amazon 공식 사이트에서 MSK 개발자 가이드 문서를 번역/편집하여 작성 하였습니다.
참고자료 : Welcome to the Amazon MSK Developer Guide – Amazon Managed Streaming for Apache Kafka



2부 에서는 MSK 와 MSK Serverless 의 구성에 대해 알아 보겠습니다.



MSK Cluster

MSK Cluster 는 EC2 기반의 Broker Node를 생성합니다. 그래서 VPC 내에 존재 해야 하고, 생성 시 Subnet을 설정 해야 합니다. 그래서 주의할 점은 MSK Cluster 생성 후에는 VPC 변경이 불가능 합니다. US West (N. California) Region에서는 서로 다른 2개의 A-Z영역에 각각 Subnet을 지정 할 수 있고, 그 외 Region에서는 2~3개의 A-Z영역에 Subnet 지정이 가능 합니다.



Broker Types

MSK Cluster 를 생성 할 때 Broker 의 타입을 지정 하게 됩니다. Broker 타입은 EC2와 달리 t3.small 와 m5.* type 으로 2종류만 생성 가능 합니다.

생성 가능 한 Broker Type 은 아래와 같습니다.

  • kafka.t3.small
  • kafka.m5.large, kafka.m5.xlarge, kafka.m5.2xlarge, kafka.m5.4xlarge, kafka.m5.8xlarge, kafka.m5.12xlarge, kafka.m5.16xlarge, kafka.m5.24xlarge

각 타입의 특징

T3 Broker

CPU 크레딧을 사용하여 일시적으로 성능을 버스팅 할 수 있습니다. 평소에는 처리량이 적다가 일시적으로 급증하는 패턴이라면 T3 Broker 를 사용하는 것을 권장 합니다.

T3 인스턴스에 대해 더 자세한 내용이 필요하다면 아래의 문서를 참조 바랍니다.

M5 Broker

T3 Broker와 비교하여 기본 처리량 및 성능이 높아 PROD 환경에 적합 합니다. Broker의 파티션이 부족하거나 더 많은 처리량이 필요한 경우 M5 Broker를 사용하는 것을 권장 합니다.



Custom MSK Configurations

Amazon MSK 생성 할 때 아래의 표에 있는 속성에 대해 설정 할 수 있습니다. 지정하지 않은 속성은 기본 값으로 생성 됩니다.

이름기본값설명
allow.everyone.if.no.acl.foundTRUE특정 리소스와 일치하는 리소스 패턴이 없으면 리소스에 연결된 ACL이 없음true로 설정되면 수퍼유저뿐만 아니라 모든 사용자가 리소스에 액세스
auto.create.topics.enableFALSE서버에서 주제의 자동 생성을 활성화
auto.leader.rebalance.enableTRUE자동 리더 밸런싱을 활성화
default.replication.factor3-AZ 클러스터의 경우 3개, 2-AZ 클러스터의 경우 2개자동으로 생성된 주제에 대한 기본 복제 수를 지정
min.insync.replicas3-AZ 클러스터의 경우 2개, 2-AZ 클러스터의 경우 1개쓰기를 승인해야 하는 최소 복제본 수를 지정
num.io.threads8서버가 요청을 처리하는 데 사용하는 스레드 수
num.network.threads5네트워크에서 요청을 수신하고 네트워크에 응답을 보내는 데 사용하는 스레드 수
num.partitions1Topic별 기본 로그 파티션 수
num.replica.fetchers2Source Broker의 메시지를 복제하는 데 사용하는 가져오기 스레드 수
replica.lag.time.max.ms30000해당 시간동안 리더의 로그 끝 오프셋까지 소모하지 않은 경우 리더는 ISR에서 팔로어를 제거
socket.receive.buffer.bytes102400소켓 서버 소켓의 SO_RCVBUF 버퍼값이 -1이면 OS 기본값이 사용
socket.request.max.bytes104857600소켓 요청의 최대 바이트 수
socket.send.buffer.bytes102400소켓 서버 소켓의 SO_SNDBUF 버퍼값이 -1이면 OS 기본값이 사용
unclean.leader.election.enableTRUEISR 집합에 없는 복제본을 최후의 수단으로 리더로 선택할 수 있도록 허용
zookeeper.session.timeout.ms18000Apache ZooKeeper 밀리초 단위의 세션 제한 시간
zookeeper.set.aclFALSE보안 ACL을 사용하도록 클라이언트를 설정


MSK 할당량

  • Account 당 최대 90개의 Broker
    • 제한 해제 시 AWS Support Case가 필요 합니다.
  • Cluster 당 최대 30개의 Broker
    • 제한 해제 시 AWS Support Case가 필요 합니다.
  • Broker 당 최소 1GiB, 최대 16384GiB 스토리지
  • Broker 당 최대 3000개의 TCP 연결
    • TCP 커넥션 제한은 listener.name.client_iam.max.connections, listener.name.client_iam_public.max.connections 속성을 조정하여 가능 합니다.
    • 주의 : 두 속성 중 하나를 높은 값으로 올릴 경우 다른 하나의 속성을 사용하지 못할 수 있습니다.
  • Broker Type 별 TCP 연결 제한
    • M5 타입 Broker : Broker 마다 초당 20개의 TCP 연결
    • T3 타입 Broker : Broker 마다 초당 4개의 TCP 연결
    • 실패한 연결에 대한 재시도 처리 : reconnect.backoff.ms 속성 설정 (1초 = 1000)
    • 제한 해제 시 AWS Support Case가 필요 합니다.
  • Account 당 최대 100개의 Configuration
    • 제한 해제 시 AWS Support Case가 필요 합니다.


MSK Serverless

MSK Cluster 는 Broker Node로 EC2 서버가 생성 되고, 해당 인스턴스에 대한 관리가 필요 합니다. 그에 반해 Serverless 형태의 MSK Clustrer는 완전히 Amazon에서 관리하는 플랫폼입니다.

현재는 미국 동부 (오하이오), 미국 동부 (버지니아 북부), 미국 서부 (오레곤), 아시아 태평양 (싱가포르), 아시아 태평양 (시드니), 아시아 태평양 (도쿄), 유럽 (프랑크푸르트), 유럽 (스톡홀름) 및 유럽 (아일랜드) 리전에서 사용할 수 있습니다.

구성 가능한 Region

  • US East (Ohio), US East (N. Virginia), US West (Oregon), Asia Pacific (Singapore), Asia Pacific (Sydney), Asia Pacific (Tokyo), Europe (Frankfurt), Europe (Stockholm) and Europe (Ireland) Regions


MSK Serverless 사용 환경 추천

Topic 의 파티션을 관리하면서 용량을 자동으로 프로비저닝하고 확장하므로 클러스터의 크기를 조정하거나 조정하지 않고도 데이터를 스트리밍 할 수 있습니다. MSK Serverless는 처리량 기반 가격 모델을 제공하므로 사용하는 만큼만 결제하면 됩니다. 애플리케이션에 자동으로 확장 및 축소되는 On-demend 스트리밍 용량이 필요한 경우 Serverless Cluster를 사용하는 것이 좋습니다.

연결 가능한 AWS 서비스

  • AWS PrivateLink
  • AWS IAM
  • AWS Glue Schema Registry
  • Amazon Kinesis Data Analytics
  • AWS Lambda


MSK Serverless 할당량

측정 기준할당량
최대 수신 처리량200 MBps
최대 송신 처리량400 MBps
최대 보존 기간24 hours. To request a quota adjustment, create a support case.
최대 클라이언트 연결 수1000
최대 연결 시도 횟수100 per second
최대 메시지 크기8 MB
최대 요청 크기100 MB
최대 요청 속도15,000 per second
요청당 최대 페치 바이트 수55 MB
최대 소비자 그룹 수500
최대 파티션 수120
최대 파티션 생성 및 삭제 속도120 in 5 minutes
파티션당 최대 수신 처리량5 MBps
파티션당 최대 송신 처리량10 MBps
최대 파티션 크기250 GB
서버리스 클러스터당 최대 클라이언트 VPC 수5
계정당 최대 서버리스 클러스터 수3


MSK & MSK Serverless Connect 할당량

  • 사용자 정의 플러그인 : 최대 100개
  • Worker 구성 : 최대 100개
  • Worker 연결 : 최대 60대
  • 제한 해제 시 AWS Support Case가 필요 합니다.

MSK Serverless Cluster 모니터링

Amzon MSK 는 CloudWatch 를 사용하여 MSK Serverless Cluser 에 대한 지표를 수집, 확인 및 분석할 수 있습니다. Cloudwatch로 확인 할 수 있는 지표는 아래 표와 같습니다. 이 지표는 Topic의 각 파티션에 대한 개별 데이터 포인트이므로 Topic-level 을 보려면 ‘SUM’ 통계로 보는 것이 좋습니다.

이름지표 확인 시점수집 대상설명
BytesInPerSec제작자가 주제에 글을 쓴 후Cluster Name, Topic클라이언트로부터 받은 초당 바이트 수
BytesOutPerSec소비자 그룹이 주제에서 소비한 후Cluster Name, Topic클라이언트에 전송된 초당 바이트 수
FetchMessageConversionsPerSec소비자 그룹이 주제에서 소비한 후Cluster Name, Topic브로커의 초당 가져오기 메시지 변환 횟수
MaxEstimatedTimeLag소비자 그룹이 주제에서 소비한 후Cluster Name, Consumer Group, Topic시간 추정 MaxOffsetLag 지표
MaxOffsetLag소비자 그룹이 주제에서 소비한 후Cluster Name, Consumer Group, TopicTopic의 모든 파티션에 걸친 최대 오프셋 지연
MessagesInPerSec제작자가 주제에 글을 쓴 후Cluster Name, Topic브로커의 초당 수신 메시지 수
ProduceMessageConversionsPerSec제작자가 주제에 글을 쓴 후Cluster Name, Topic브로커의 초당 생산 메시지 변환 수
SumOffsetLag소비자 그룹이 주제에서 소비한 후Cluster Name, Consumer Group, TopicTopic의 모든 파티션에 대한 집계된 오프셋 지연


CloudWatch Sample



결론

Amazon MSK 와 MSK Serverless 구성에 대해 알아 보았습니다. 두 플랫폼의 차이점을 보면 MSK는 EC2 기반으로 생성 되며 Broker Node 와 EBS 증설 등을 수작업으로 진행해야 해서 관리 포인트가 Serverless 보다 많습니다. MSK Serverless 구성은 Full 매니지먼트 플랫폼으로 인프라의 모든 부분을 Amazon 에서 관리 하며 Broker Node, EBS 등의 증설도 Auto Scale 되어 온전히 애플리케이션 코드 개발에 신경 쓸 수 있도록 서비스를 제공 합니다. 두 구성 모두 모니터링을 위한 노력이 따로 필요 없이 CloudWatch 를 지표 수집으로 간단히 모니터링 대시 보드를 구성 할 수 있습니다. Apache Kafka 를 사용 하는 Architecture 라면 Amazon MSK 구성으로 관리를 위한 인적 자원을 줄이는 것도 좋을 것 같습니다.



참고 사이트