Конфигурация ============== Доступны следующие операции: * Хранить настройки пользовательских ролей в виде разделов в конфигурации на уровне кластера, например: .. literalinclude:: examples/role_config_ex.yml :language: yaml * Загружать и выгружать конфигурацию всего кластера через веб-интерфейс кластера или с помощью 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//config.yml* -- для экземпляров, развернутых из RPM-пакетов, под управлением *systemd*; * */home//tarantool_state/var/lib/tarantool/config.yml* -- для экземпляров, развернутых из архивов, под управлением *tarantoolctl*. Конфигурация кластера представляет собой Lua-таблицу. Если некоторые данные конфигурации для конкретного приложения (например, схему базы данных, описанную с помощью языка определения данных DDL) необходимо хранить в каждом экземпляре кластера, можно использовать свой собственный API, добавив в таблицу специальный раздел. Кластер поможет безопасно передать его всем экземплярам. Такой раздел создается параллельно (в одном файле) с разделами о топологии и о *vshard*, которые кластер генерирует автоматически. В отличие от сгенерированных разделов -- логику изменения, проверки и применения конфигурации в специальном разделе необходимо определять вручную. Конфигурация ролей ADG: * `Настройки подключения к Kafka`_ * `Настройки топиков Kafka`_ * `Настройки потребителей Kafka`_ * `Настройки производителей Kafka`_ * `Настройки подключений к schema_regisrty`_ * `Настройки планировщика заданий`_ Настройки подключения к 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`` для ключа сообщения. Пример: .. literalinclude:: examples/topics.json :language: json .. _kafka_consumer_settings: Настройки потребителей Kafka ---------------------------- Доступные опции: * ``custom_properties`` -- список пар ключ/значение для кастомных настроек потребителя. Пример значения: .. literalinclude:: examples/custom_properties.json :language: json * ``properties`` -- список пар ключ/значение из https://github.com/edenhill/librdkafka/blob/master/CONFIGURATION.md Пример значения: .. literalinclude:: examples/properties.json :language: json * ``topics`` -- список топиков, на которые подписывается потребитель. Пример значения: .. literalinclude:: examples/topics2.json :language: json Настройки производителей Kafka ------------------------------ Доступные опции: * ``custom_properties`` -- список пар ключ/значение для кастомных настроек потребителя. Пример значения: .. literalinclude:: examples/custom_properties2.json :language: json * ``properties`` -- список пар ключ/значение из https://github.com/edenhill/librdkafka/blob/master/CONFIGURATION.md Пример значения: .. literalinclude:: examples/properties2.json :language: json Настройки подключений к schema_regisrty --------------------------------------- Доступные опции: * ``host`` -- хост ``schema_regisrty`` для подключения. Пример значения: ``"host":"10.18.84.6"``. * ``port`` -- порт ``schema_regisrty`` для подключения. Пример значения: ``"port":"8081"`` Настройки планировщика заданий ------------------------------ Список пар задача/настройки задачи. Доступные опции: * ``funcname`` -- название метода, который вызывается планировщиком; * ``kind`` - тип задачи на текущий момент, поддерживается только *periodical*; * ``rolename`` - название роли, на которой вызывается *funcname*; * ``schedule`` - крон-строка расписания. Пример: .. literalinclude:: examples/tasks.json :language: json