반응형

1. 서론

이번 포스팅에서는 카프카 운영에 도움이 되는 Tool인 

카프카 매니저와 스키마 레지스트리에 대해 소개하려고 합니다.

 

2. 카프카 매니저

 

2-1. 소개

 

카프카 매니저는 야후에서 오픈소스로 제공하는 카프카 관리 GUI 툴입니다.

 

아마 이전 포스팅을 보셨다면, 터미널이 아닌 사진을 보셨을 텐데요.

그 사진이 제 카프카 매니저에서 발췌한 사진입니다.ㅎㅎ

 

카프카 매니저는 아래와 같은 기능을 제공합니다.

 

  • 다수의 카프카 클러스터 상태 확인
  • 클러스터의 브로커 상태 확인
  • 토픽 리스트 조회
  • 토픽 생성, 삭제
  • 토픽 설정 변경
  • 컨슈머 그룹 offset & lag 확인
  • 토픽 상태 확인( isr, leader 등)
  • 파티션의 leader & follower 변경 ( = partition reassign )

 

2-2. 설치

 

1) 파일 다운로드 

 

파일은 아래 주소에서 원하는 버전을 선택하여 다운받을 수 있습니다.

 

저는 현재 최신 버전인 3.0.0.1 release를 다운받도록 하겠습니다.

  • 저는 홈디렉터리에서 다운받아 진행하도록 하겠습니다.
wget https://github.com/yahoo/CMAK/archive/3.0.0.1.tar.gz
tar -zxvf 3.0.0.1.tar.gz
cd CMAK-3.0.0.1

 

위 명령어를 수행하면 ~/CMAK-3.0.0.1 폴더가 생긴것을 확인할수 있습니다.

 

2) sbt 빌드

 

카프카 매니저는 스칼라 언어로 되어있어 빌드 툴인 sbt를 이용하여 빌드를 진행합니다.

sbt는 소스에 들어가있어 별도 설치는 하지않으셔도 됩니다.

 

아래와 같이 sbt 명령어를 수행합니다.

 

  • CMAK 3.0.0.1 버전에서 제공되는 sbt는 1.3.8 버전입니다.
  • dist 명령어는 컴파일 및 빌드하여 어플리케이션이 실행될수 있도록 zip 파일로 제공해주는 명령어입니다.
  • zip 파일은 target/universal 폴더에 만들어집니다.
./sbt clean dist

 

시간이 상당히 걸려 잠시 커피한잔 마시고 오시는것을 추천드립니다.ㅎㅎ

 

 

수행이 모두 끝나면 ~/CMAK-3.0.0.1/target/universal/cmak-3.0.0.1 zip 파일이 생성된것을 확인할 수 있습니다.

 

 

 

 

 

 

반응형

 

 

 

 

 

 

3) 압축 해제 & 설정 파일 수정

 

이제 ~/CMAK-3.0.0.1/target/universal/cmak-3.0.0.1 zip 파일을 압축 해제합니다. 명령어는 아래와 같습니다.

 

unzip ~/CMAK-3.0.0.1/target/universal/CMAK-3.0.0.1.zip

 

해제가 완료되었으면 cmak-3.0.0.1 폴더가 생성된것을 확인할 수 있습니다.

 

이젠 설정 파일을 수정할 차례입니다.

 

설정파일 경로는 ~/CMAK-3.0.0.1/target/universal/cmak-3.0.0.1/conf/application.conf 입니다.

 

수정 내용은 아래 cmak.zkhosts 의 값을 zookeeper 주소를 적어 주시면 됩니다.

  • 주소 기입 양식 = "<zookeeper node1 hostname>:<zookeeper node1 client port>,<zookeeper node2 hostname>:<zookeeper node2 client port>"

 

 

 

4) 실행

 

실행은 ~/CMAK-3.0.0.1/target/universal/cmak-3.0.0.1/bin/cmak 명령어를 실행하여 주시면 됩니다.

 

5) 확인

 

실행한 서버의 9000 포트로 브라우저 접속을 하시면 아래와 같은 결과를 볼 수 있습니다.

 

3. 스키마 레지스트리

 

3-1. 소개

 

카프카는 메시지의 스키마를 관리하지는 않습니다. 단순히, 메시지를 저장하고 제공하는 역할을 할 뿐입니다.

 

결국, 항상 producer와 consumer는 메시지의 스키마 약속을 해야했고,

한쪽이 약속을 어긴다면 정상처리를 못하는 상황이 일어나게 됩니다.

 

스키마 레지스트리는 이와 같은 문제점을 해결하기 위하여

각 토픽에 들어갈 메시지의 스키마를 중앙관리하는 서비스입니다.

 

스키마 레지스트리의 특징은 아래와 같습니다.

 

  • Avro를 사용하여 스키마를 정의합니다.
  • restApi로 스키마 조회/생성/삭제 기능을 제공합니다.
  • 각 스키마는 버저닝이 가능합니다.

 

 

3-2. 설치

 

저의 경우 카프카 설치 에서 소개한 confulent를 이용하여 설치하도록 하겠습니다.

 

카프카 설치 포스팅에서 말씀드린 ~/apps/confluent-5.4.0 에 다운받았다는 가정하에 진행하겠습니다.

(카프카 설치 를 안보신 분은 보고 오시는 것을 추천드립니다.)

 

1) 설정 파일 수정

 

스키마 레지스트리 설정 파일을 수정합니다.

 

  • 경로 = ~/apps/confluent-5.4.0/etc/schema-registry/schema-registry.properties
  • listeners , host.name , kafkastore.bootstrap.servers 설정을 수정합니다.
    • 아래 listeners 설정 = 모든 ip에서 8081 port에 대한 접근을 허용.
    • 아래 host.name 설정 = 현재 서버의 ip 주소.
    • 아래 kafkastore.bootstrap.servers 설정 = 카프카 브로커 주소.
listeners=http://0.0.0.0:8081
host.name=host-ip
kafkastore.bootstrap.servers=PLAINTEXT://broker-1:9092,SSL://broker-2:9092

 

2) 실행

 

스키마 레지스트리 실행은 아래와 같습니다.

 

  • bin 디렉토리에 있는 schema-registry-start 명령어를 수행합니다.
  • 명령어 수행 시 인자로는 위에서 정의한 schema-registry.properties 파일 경로를 제공합니다.
~/apps/confluent-5.4.0/bin/schema-registry-start ~/apps/confluent-5.4.0/etc/schema-registry/schema-registry.properties

 

3) 확인

 

실행한 서버의 8081 port로 request 시 {} response가 오면 정상 실행된것입니다.

 

 

 

4. schema-registry-ui

 

schema-registry-ui는 스키마 레지스트리의 restApi 기능을 GUI로 제공해주는 서비스입니다.

설치는 https://github.com/lensesio/schema-registry-ui 를 참고하시면 됩니다.

 

  • docker image 로도 제공.
  • 스키마 리스트 확인.
  • 스키마 생성, 수정, 삭제.

아래는 schema-registry-ui 의 화면입니다.

 

 

 

5. 마무리

 

이번 포스팅에서는 카프카 운영에 도움이 되는 카프카 매니저 & 스키마 레지스트리 소개를 진행하였습니다.

다음 포스팅은 카프카 사용 시 고려사항들에 대해 포스팅하도록 하겠습니다.

 

반응형

'MQ > Kafka' 카테고리의 다른 글

(6) spring kafka + schema registry + gradle plugin 적용  (4) 2020.10.22
(5) 카프카 사용 시 고려사항  (0) 2020.02.26
(3) 카프카 사용 예제  (0) 2020.02.25
(2) 카프카 설치  (0) 2020.02.25
(1) 카프카란?  (2) 2020.02.25

+ Recent posts