AWS MSK를 활용한 Kafka 운용

1 minute read

AWS MSK를 활용한 Kafka 운용

AWS MSK는 AWS에서 제공하는 SaaS형 아파치 카프카 서비스입니다. AWS MSK는 컨플루언스사가 제공하는 Kafka SaaS와 비슷하지만 조금 더 사용자가 핸들링할 수 있는 영역이 많다는 것이 단점이자 장점입니다. 또한 AWS환경에서 작동하기 때문에 AWS 위에서 어플리케이션을 운영하고 있다면 이미 운영하고 있는 어플리케이션과 쉽게 연동할 수 있다는 장점이 있습니다. 또한 카프카 클러스터를 모니터링하기 위해 다른 모니터링 어플리케이션을 연결하지 않아도 자동으로 AWS CloudWatch가 연동되기 때문에 CloudWatch를 사용해서 클러스터를 모니터링 할 수 있습니다.

MSK를 사용하기 위해서 우선 클러스터를 구성해야합니다. 클러스터를 구성하기 위해 카프카 버전, 카프카 브로커가 사용할 ec2인스턴스 옵션, ec2의 EBS옵션, 클라이언트 보안 방법을 설정해줍니다.

그 다음 네트워크 구성을 위해서 AWS 클라우드 상에서 EC2가 어떤 VPC, 서브넷 네트워크 대역에 올라가는지 지정해줍니다. 이때 클러스터는 모두 1개의 VPC위에 올라가야합니다. 클러스터를 실행할 브로커들이 서로 다른 AZ에 있고 3개 이상의 AZ에서 작동하도록 만드는 것이 클러스터의 안정성에 좋습니다. 3개중 1개의 AZ에서 문제가 생기더라도 클러스터의 내고장성이 보장되기 때문입니다.

AWS MSK에서 클러스터가 동작하기 시작하면 이제 이러한 클러스터가 제대로 동작하는지 모니터링을해야합니다. AWS MSK는 CloudWatch를 통한 모니터링, SoundCloud에서 발표한 오픈소스인 프로메테우스를 활용한 모니터링 그리고 브로커 로그를 통한 모니터링이 있습니다.

우선 클라우드워치를 활용한 모니터링은 AWS MSK클러스터를 구축하면 자동으로 AWS에서 지표를 수집하여 보여줍니다. CloudWatch를 활용한 모니터링은 기본수준 모니터링(CPU, 파티션, 토픽 개수)와 브로커 모니터링(브로커-클라이언트 네트워크 속도, 리더 복제 파티션 개수, 브로커당 파티션 개수) 그리고 토픽 모니터링이 있습니다. 이렇게 CloudWatch를 통해 지표들을 분석하면 다른 AWS상의 어플리케이션의 모니터링 정보를 통합해 대시보드를 구성할 수 있다는 장점이 있습니다.

프로메테우스를 활용한 모니터링은 MSK에서 제공하는 익스포터를 활용하는 방식입니다. 익스포터란 모니터링 지표를 외부 어플리케이션에 제공하는 인터페이스입니다. 카프카 브로커에 있는 JMX포트와 JMX 익스포터를 통해 프로메테우스는 카프카 브로커에 대한 정보를 pull하고 EC2인스턴스의 노드 익스포터를 활용해 노드에 대한 정보를 pull합니다.

이렇게 MSK에서 카프카 클러스터가 생성되고 나면 각 브로커에 대한 엑세스는 VPC외부의 컴퓨터에서는 할 수 없습니다. 왜냐면 MSK는 퍼블릭 엔드포인트를 지원하지 않기 때문입니다. 그렇기 때문에 VPC 내에서 MSK 클러스터에 접근을 할 수 있는 인스턴스를 만들어서 이 인스턴스를 통해 클러스터에 접근하는 방법을 씁니다. 이 인스턴스에 인터넷 게이트웨이와 라우팅테이블을 적용해 외부에서 인스턴스에 접근할 수 있도록 만들어줍니다. 해당 인스턴스에 프로메테우스, 그라파나 등 모니터링 어플리케이션을 설치해 운영할 수 있습니다.

출처:

아파치카프카 애플리케이션 프로그래밍 with 자바

Tags:

Categories:

Updated:

Leave a comment