Kafka 카프카 커넥트를 실행하는 방법
커넥트를 실행하는 방법은 크게 두 가지가 있다.
첫 번째는 ‘단일 모드 커넥트(standalone mode kafka connect)’이고 두 번째는 ‘분산 모드 커넥트(distributed mode kafka connect)’이다.
단일 모드 커넥트는 단일 애플리케이션으로 실행된다. 커넥터를 정의하는 파일을 작성하고 해당 파일을 참조하는 단일 모드 커넥트를 실행함으로써 파이프라인을 생성할 수 있다.
단일 모드 커넥트
단일 모드 커넥트는 1개 프로세스만 실행되는 점이 특징인데, 단일 프로세스로 실행되기 때문에 고가용성 구성이 되지 않아서 단일 장애점(SPOF: Single Point Of Failure)이 될 수 있다.
그러므로 단일 모드 커넥트 파이프라인은 주로 개발환경이나 중요도가 낮은 파이프라인을 운영할 때 사용한다.
분산 모드 커넥트
분산 모드 커넥트는 2대 이상의 서버에서 클러스터 형태로 운영함으로써 단일 모드 커넥트 대비 안전하게 운영할 수 있다는 장점이있다.
- 2개 이상의 커넥트가 클러스터로 묶이면 1개의 커넥트가 이슈 발생으로 중단되더라도 남은 1개의 커넥트가 파이프라인을 지속적으로 처리할 수 있기 때문이다.
- 분산 모드 커넥트는 데이터 처리량의 변화에도 유연하게 대응할 수 있다. 커넥트가 실행되는 서버 개수를 늘림으로써 무중단으로 스케일 아웃하여 처리량을 늘릴 수 있기 때문이다.
- 이러한 장점이 있기 때문에 사용환경에서 커넥트를 운영한다면 분산 모드 커넥트를 2대 이상으로 구성하고 설정하는 것이 좋다. REST API 인터페이스를 통해 운영할 수 있다.
커넥트 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:9092key.converter
=org.apache.kafka.connect.json.JsonConvertervalue.converter
=org.apache.kafka.connect.json.JsonConverterkey.converter.schemas.enable
=falsevalue.converter.schemas.enable
=falseoffset.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
Comments