스키마 레지스트리 : 스키마 레지스트리 설정

    들어가기 전

    이 글은 스키마 레지스트리를 기동할 때 사용하는 스키마 레지스트리 설정에 대해서 간략히 정리한 글입니다.

     

    스키마 레지스트리 설정

    스키마 레지스트리를 기동시키려면 필요한 설정값들이 저장된 설정 파일을 함께 전달해줘야한다. 이 때, 기본적인 설정값들에 대해서 살펴보고자 한다. 기본적으로는 아래 설정값들을 스키마 레지스트리에 전달하며 기동한다. 

    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

    댓글

    Designed by JB FACTORY