Как автоматически запускать разъемы Kafka Connect (например, в производстве)? - PullRequest
0 голосов
/ 06 июня 2019

Существует ли способ автоматической загрузки (нескольких) разъемов Kafka Connect при запуске Kafka Connect (например, в Confluent Platform)?

Что я узнал до сих пор:

Confluent Docs для использования bin/connect-standalone команда для автономного режима с файлом свойств для рабочего и для каждого отдельного соединителя.

Для распределенного режима необходимо запустить соединитель через REST API.

https://docs.confluent.io/current/connect/userguide.html#standalone-mode, https://docs.confluent.io/current/connect/managing/configuring.html#standalone-example

Есть ли другой метод, например, включить все коннекторы, которые должны быть запущены, в файл «connect- [standalone | распределенный] .properties» (аналогично предоставлению файла запросов KSQL в ksql-server.properties), чтобы они автоматически загружались при запуске Kafka Connect (например, в сливной платформе)?

Или разъемы загружаются «вручную», как описано выше, даже в производственных средах?

1 Ответ

2 голосов
/ 06 июня 2019

Обычно вам нужно использовать API REST при запуске Kafka Connect в распределенном режиме. Однако вы можете использовать docker compose для создания сценариев создания соединителей; @Robin Moffatt написал хорошую статью об этом:

kafka-connect:
  image: confluentinc/cp-kafka-connect:5.1.2
  environment:
    CONNECT_REST_PORT: 18083
    CONNECT_REST_ADVERTISED_HOST_NAME: "kafka-connect"
    […]
  volumes:
    - $PWD/scripts:/scripts
  command: 
    - bash 
    - -c 
    - |
      /etc/confluent/docker/run & 
      echo "Waiting for Kafka Connect to start listening on kafka-connect ⏳"
      while [ $$(curl -s -o /dev/null -w %{http_code} http://kafka-connect:8083/connectors) -eq 000 ] ; do 
        echo -e $$(date) " Kafka Connect listener HTTP state: " $$(curl -s -o /dev/null -w %{http_code} http://kafka-connect:8083/connectors) " (waiting for 200)"
        sleep 5 
      done
      nc -vz kafka-connect 8083
      echo -e "\n--\n+> Creating Kafka Connect Elasticsearch sink"
      /scripts/create-es-sink.sh 
      sleep infinity

Примечания:

  • В разделе команд $ заменены на $$, чтобы избежать ошибки Неверный формат интерполяции для опции «команда»

  • sleep infinity является необходимо, потому что мы отправили процесс /etc/confluent/docker/run фоновый поток (&), и поэтому контейнер выйдет, если основной command заканчивается.

  • Фактический скрипт для настройки соединителя является curl вызов в отдельный файл. Вы можете встроить это в докер Сочинять, но это кажется немного отвратительным.

  • Вы можете объединить это и Техника выше, если вы хотите установить пользовательский плагин разъема перед запуском Kafka Connect, например confluent-hub install --no-prompt confluentinc/kafka-connect-gcs:5.0.0 /etc/confluent/docker/run

...