여기서 다루는 내용
· 간단 소개
· MSK 생성 및 확인
· MSK 모니터링
· 마무리
이번 시간에는 최근 도쿄 리전에 출시된 AWS MSK를 간단 확인 해보도록 하겠습니다.
아직 아직 평가 버전이며, 서울 리전은 미출시입니다. (2019-04-25 기준)
간단 소개
- AWS MSK
- 서버리스 기반 완전 관리형 서비스
- Apache Kafka 인프라 관리에 관한 부담 감소
- 코드 변경 없이 기존 애플리케이션 마이그레이션 가능
- 브로커 인스턴스와 스토리지에 대해 비용 청구
- 제품 세부 정보: Link
- Apache Kafka
- LinkedIn에서 2011년 오픈소스로 공개한 distributed streaming platform
- Pub/Sub 모델
- 내결함성이 있는 방식으로 안정적인 레코드 스트림 저장
- 데이터 스트림 처리
- Core API
- Producer API
- Consumer API
- Streams API
- Connector API
- 세부 정보: Link
- AWS MSK
MSK 생성 및 확인
:: MSK 생성
Console에서 도쿄 리전에서 MSK를 생성해 보도록 하겠습니다.
VPC를 선택 및 Kafka 버전을 선택합니다. 현재 Kafka 2.1.0 및 1.1.1 버전을 지원합니다.
3개의 AZ 및 해당 Subnet을 선택합니다.
각 AZ별 Kafka broker 개수를 선택합니다.
default settings 를 사용하거나 customize settings 에서 인스턴스 타입을 비롯한 일부 설정에 대해서 설정이 가능합니다. 아직 정식 버전이 아니기 때문에 일부 설정만 가능한 것으로 보입니다.
Monitoring 같은 경우 CLI를 통해서 모니터링 레벨을 설정할 수 있습니다. Console에서는 Default로 적용됩니다.
기본 설정되는 kafka default configuration은 다음과 같습니다.
생성이 완료되면 아래 이미지와 같이 Active 상태가 되며, View client information을 클릭하여 Bootstrap server 정보 및 Zookeeper 연결 정보 확인이 가능합니다.
:: MSK 동작 확인 (Producer/Consumer)
먼저 임의의 Kafka Topic을 하나 생성합니다.
Producer application에서 테스트 메시지를 Kafka에 전송합니다.
producer에서 생성한 메시지를 Consumer application에서 Kafka로부터 테스트 메시지를 수신하여 기본 메시지 전송 동작을 확인 합니다.
MSK 모니터링
MSK에서는 3가지 모니터링 레벨이 있습니다. (DEFAULT
, PER_BROKER
, PER_TOPIC_PER_BROKER
)
자세한 내용은 여기 참고 바랍니다.
여기서는 PER_BROKER를 선택하여 default 레벨에서 BytesInPerSec, BytesOutPerSec 등 추가된 메트릭을 확인해 보겠습니다.
CLI에서 –enhanced-monitoring “PER_BROKER” 옵션을 통해 PER_BROKER 모니터링 레벨을 설정하고 총 3개의 브로커를 생성 합니다.
[ec2-user@ip-172-31-17-198 ~]$ aws kafka create-cluster –cluster-name “gstestcli” –broker-node-group-info file://brokernodegroupinfo.json –kafka-version “2.1.0” –number-of-broker-nodes 3 –enhanced-monitoring “PER_BROKER”
{
“ClusterName”: “gstestcli”,
“State”: “CREATING”,
“ClusterArn”: “arn:aws:kafka:ap-northeast-1:000000000000:cluster/gstestcli/90664d4a-e2ba-4b04-8e40-6add10c010db-4”
}
생성된 Kafka 클러스터에 임의의 Topic 을 –replication-factor 3 –partitions 9 옵션으로 생성하였습니다.
해당 클러스터의 메트릭 정보는 Cloudwatch로 보내져 Cloudwatch Metric의 AWS/Kafka 항목에서 메트릭 확인이 가능합니다.
아래 이미지는 생성된 3개의 브로커에 Producer에서 메시지를 보내고, 이를 Consumer에서 가져오도록 하였고 이를 Cloudwatch 에서 모니터링한 화면입니다.
마무리
Apache kafka 운영에 대한 부담을 줄일 수 있기 때문에 GA 버전이 출시되면 기존 Kafka에서 AWS Kinesis로의 마이그레이션 검토 대신 AWS MSK로의 마이그레이션을 고민해볼 가치가 있습니다.