Kafka 카프카 커넥트를 실행하는 방법

1 minute read

커넥트를 실행하는 방법은 크게 두 가지가 있다.

첫 번째는 ‘단일 모드 커넥트(standalone mode kafka connect)’이고 두 번째는 ‘분산 모드 커넥트(distributed mode kafka connect)’이다.

단일 모드 커넥트는 단일 애플리케이션으로 실행된다. 커넥터를 정의하는 파일을 작성하고 해당 파일을 참조하는 단일 모드 커넥트를 실행함으로써 파이프라인을 생성할 수 있다.


단일 모드 커넥트

단일 모드 커넥트는 1개 프로세스만 실행되는 점이 특징인데, 단일 프로세스로 실행되기 때문에 고가용성 구성이 되지 않아서 단일 장애점(SPOF: Single Point Of Failure)이 될 수 있다.

그러므로 단일 모드 커넥트 파이프라인은 주로 개발환경이나 중요도가 낮은 파이프라인을 운영할 때 사용한다.

Untitled


분산 모드 커넥트

분산 모드 커넥트는 2대 이상의 서버에서 클러스터 형태로 운영함으로써 단일 모드 커넥트 대비 안전하게 운영할 수 있다는 장점이있다.

  • 2개 이상의 커넥트가 클러스터로 묶이면 1개의 커넥트가 이슈 발생으로 중단되더라도 남은 1개의 커넥트가 파이프라인을 지속적으로 처리할 수 있기 때문이다.
  • 분산 모드 커넥트는 데이터 처리량의 변화에도 유연하게 대응할 수 있다. 커넥트가 실행되는 서버 개수를 늘림으로써 무중단으로 스케일 아웃하여 처리량을 늘릴 수 있기 때문이다.
  • 이러한 장점이 있기 때문에 사용환경에서 커넥트를 운영한다면 분산 모드 커넥트를 2대 이상으로 구성하고 설정하는 것이 좋다. REST API 인터페이스를 통해 운영할 수 있다.

Untitled


커넥트 REST API 인터페이스

RSET API를 사용하면 현재 실행 중인 커넥트의 플러그인 종류, 태스크 상태, 커넥터 상태 등을 조회할 수 있다. 커넥트는 8083 포트로 호출할 수 있으며 HTTP 메서드 기반 API를 제공한다.

요청 메서드 호출 경로 설명
GET / 실행 중인 커넥트 정보 확인
GET /connectors 실행 중인 커넥터 이름 확인
POST /connectors 새로운 커넥터 생성 요청
GET /connectors/{커넥터 이름} 실행 중인 커넥터 정보 확인
GET /connectors/{커넥터 이름}/config 실행 중인 커넥터의 설정값 확인
PUT /connectors/{커넥터 이름}/config 실행 중인 커넥터 설정값 변경 요청
GET /connectors/{커넥터 이름}/status 실행 중인 커넥터 상태 확인
POST /connectors/{커넥터 이름}/restart 실행 중인 커넥터 재시작 요청

단일 모드 커넥트 설정, 실행

단일 모드 커넥트를 실행하기 위해서는 단일 모드 커넥트를 참조하는 설정 파일인 connect-standalone.properties 파일을 수정해야 한다.

  • connect-standalone.properties
    • bootstrap.servers=my-kafka:9092
    • key.converter=org.apache.kafka.connect.json.JsonConverter
    • value.converter=org.apache.kafka.connect.json.JsonConverter
    • key.converter.schemas.enable=false
    • value.converter.schemas.enable=false
    • offset.storage.file.filename=/tmp/connect.offsets
      • 오프셋 정보가 파일로 저장되기 때문에 잘 지정해줘야한다.
    • offset.flush.interval.ms=10000
    • #plugin.path=/usr/local/share/java,/usr/local/share/kafka/plugin
  • 실행
    • 단일 모드 커넥트를 실행 시에 파라미터로 커넥트 설정파일과 커넥터 설정 파일을 차례로 넣어 실행하면 된다.
    • 커넥터 설정 예시
      • name=local-file-source
      • connector.class=FileStreamSource
      • tasks.max=1
      • file=/tmp/test.txt
      • topic=connect-test
    • 실행 커맨드

        $ bin/connect-standalone.sh config/connect-standalone.properties \
        	config/connect-file-source.properties
      
-->

Categories:

Updated:

Comments