Конфигурация

Доступны следующие операции:

  • Хранить настройки пользовательских ролей в виде разделов в конфигурации на уровне кластера, например:
# YAML configuration file
my_role:
  notify_url: "https://localhost:8080"
  • Загружать и выгружать конфигурацию всего кластера через веб-интерфейс кластера или с помощью API (запросы GET/PUT к конечной точке admin/config: curl localhost:8081/admin/config и curl -X PUT -d "{'my_parameter': 'value'}" localhost:8081/admin/config).
  • Использовать конфигурацию в своей функции apply_config().

Каждый экземпляр в кластере хранит копию конфигурационного файла в своей рабочей директории (которую можно задать с помощью cartridge.cfg({workdir = ...})):

  • /var/lib/tarantool/<instance_name>/config.yml – для экземпляров, развернутых из RPM-пакетов, под управлением systemd;
  • /home/<username>/tarantool_state/var/lib/tarantool/config.yml – для экземпляров, развернутых из архивов, под управлением tarantoolctl.

Конфигурация кластера представляет собой Lua-таблицу. Если некоторые данные конфигурации для конкретного приложения (например, схему базы данных, описанную с помощью языка определения данных DDL) необходимо хранить в каждом экземпляре кластера, можно использовать свой собственный API, добавив в таблицу специальный раздел. Кластер поможет безопасно передать его всем экземплярам.

Такой раздел создается параллельно (в одном файле) с разделами о топологии и о vshard, которые кластер генерирует автоматически. В отличие от сгенерированных разделов – логику изменения, проверки и применения конфигурации в специальном разделе необходимо определять вручную.

Конфигурация ролей ADG:

Настройки подключения к Kafka

Доступные опции:

  • bootstrap_connection_string – cписок пар хост/порт для подключения к кластеру Kafka.

Пример значения: 'bootstrap_connection_string': '10.18.84.6:9092,10.18.84.7:9092'

Настройки топиков Kafka

Список пар топик/настройки топиков. Топик – значение из опции topics раздела конфигурации Настройки потребителей Kafka.

Доступные опции:

  • error_topic – топик, куда уходят сообщения об ошибках загрузки;
  • success_topic – топик, куда уходят сообщения об успешной загрузке;
  • target_table – целевая таблица на storage, куда записываются строки из сообщений Kafka;
  • schema_data – наименование схемы из schema_registry для значения сообщения;
  • schema_key – наименование схемы из schema_registry для ключа сообщения.

Пример:

{   "EMPLOYEES":{
    "error_topic":"input_test2",
    "success_topic":"input_test",
    "target_table":"EMPLOYEES",
    "schema_data":"employees",
    "schema_key":"adb_upload_request"
 
},
 "DOCS":{
    "error_topic":"input_test3",
    "success_topic":"input_test4",
    "target_table":"DOCS",
    "schema_data":"docs",
    "schema_key":"adb_upload_request"
 
}
}

Настройки потребителей Kafka

Доступные опции:

  • custom_properties – список пар ключ/значение для кастомных настроек потребителя.

Пример значения:

{
    "custom_properties":{
        "log_level":7  
  }
}

Пример значения:

{
    "properties":{
        "enable.auto.offset.store":"false",
        "auto.offset.reset":"latest",
        "enable.auto.commit":"false",
        "group.id":"tarantool-group-csv",
        "partition.assignment.strategy":"roundrobin",
        "enable.partition.eof":"false"
     
  }
}
  • topics – список топиков, на которые подписывается потребитель.

Пример значения:

{  "topics":[
    "EMPLOYEES",
    "DOCS"
]}

Настройки производителей Kafka

Доступные опции:

  • custom_properties – список пар ключ/значение для кастомных настроек потребителя.

Пример значения:

{
    "custom_properties":{
        "log_level":7  
  }
}

Пример значения:

{
    "properties":{
      "message.send.max.retries" : 500,
      "compression.codec": "gzip"
  }
}

Настройки подключений к schema_regisrty

Доступные опции:

  • host – хост schema_regisrty для подключения.

Пример значения: "host":"10.18.84.6".

  • port – порт schema_regisrty для подключения.

Пример значения: "port":"8081"

Настройки планировщика заданий

Список пар задача/настройки задачи.

Доступные опции:

  • funcname – название метода, который вызывается планировщиком;
  • kind - тип задачи на текущий момент, поддерживается только periodical;
  • rolename - название роли, на которой вызывается funcname;
  • schedule - крон-строка расписания.

Пример:

{
    "scheduler.tasks":{
       "kafka_send":{
          "funcname":"test_msg_to_kafka",
          "kind":"periodical",
          "rolename":"app.roles.adg_output_processor",
          "schedule":"5,10,15,20,25,30,35,40,45,50,55 * * * * *"
       
 },
       "kafka_sink":{
          "funcname":"get_messages_from_kafka",
          "kind":"periodical",
          "rolename":"app.roles.adg_kafka_connector",
          "schedule":"1-59 * * * * *"
       
 }
    
 }
 }