스키마 레지스트리 : 스키마 레지스트리 설정
- Kafka eco-system/Schema Registry
- 2023. 1. 21.
들어가기 전
이 글은 스키마 레지스트리를 기동할 때 사용하는 스키마 레지스트리 설정에 대해서 간략히 정리한 글입니다.
스키마 레지스트리 설정
스키마 레지스트리를 기동시키려면 필요한 설정값들이 저장된 설정 파일을 함께 전달해줘야한다. 이 때, 기본적인 설정값들에 대해서 살펴보고자 한다. 기본적으로는 아래 설정값들을 스키마 레지스트리에 전달하며 기동한다.
listeners:http://0.0.0.0:8081
kafkastore.bootstrap.servers=PLAINTEXT://localhost:9092
kafkastore.topic=_schemas
schema.compatibility.level=full
각 값들은 무엇을 의미할까?
listeners
스키마 레지스트리가 REST API 요청을 듣기 위해 열어두는 포트를 의미한다.
kafkastore.bootstrap.servers
스키마 레지스트리는 스키마 메타 정보를 카프카 토픽에 저장해서 고가용성을 확보한다. 이 설정값은 스키마 레지스트리가 스키마 정보를 저장할 카프카 정보를 의미한다.
kafkastore.topic
스키마 레지스트리가 카프카에 스키마 내부 정보를 저장할 때 사용할 내부 토픽의 이름을 의미한다. 지정해두면 스키마 레지스트리가 기동될 때, 카프카에 토픽을 자동으로 생성한다.
이 때 스키마 레지스트리가 사용하는 내부 토픽의 Partition 값은 항상 1이여야 한다. 스키마 관리 목적으로 사용되는 메세지들은 순서가 중요하기 때문에 이 파티션의 값은 항상 1이다. 그렇지만 replicas는 좀 더 늘려서 가용성을 확보할 수 있다.
schema.compatibility.level
스키마 레지스트리에서 스키마를 등록할 때 고려할 스키마 호환성 레벨을 설정하는 값이다. full, backward, forward 등의 값이 존재한다.
스키마 레지스트리 클러스터 구축
스키마 레지스트리를 1개만 기동한다면, 이 녀석이 죽었을 때 이 녀석과 관련된 모든 Consumer, Producer, Connector들이 죽을 수 있다. 고가용성을 확보하기를 원한다면 스키마 레지스트리를 여러 개를 띄워야한다. 이를 위해서는 스키마 레지스트리를 기동할 때 다음과 같은 형식으로 해야한다.
- 로드밸런서 등을 이용해서 2개의 스키마 레지스트리를 바인딩한다.
- 이후에 leader.eligibility=true(카프카가 리더 선출 결정) 옵션을 적용함.
위 방식으로 스키마 레지스트리를 바인딩하게 되면 2개의 스키마 레지스트리는 마스터 / 슬레이브 구조가 된다. 누가 현재 리더 역할을 하는지는 스키마 레지스트리의 로그에서 확인할 수 있다. (Finished rebalnce with leader election result : ...)
마스터는 쓰기와 읽기를 모두 할 수 있게 된다. 반면 슬레이브는 스키마의 읽기만 가능하게 된다.
'Kafka eco-system > Schema Registry' 카테고리의 다른 글
스키마 레지스트리 : 필요성과 개요 (0) | 2023.01.21 |
---|