Справочник по конфигурации кластера
В этом разделе описаны опции конфигурации, представленные в Tarantool DB.
- app.roles.slow_log
- app.roles.tracing
- config.storage
- roles.cooler
- roles.crud-<router_or_storage>
- roles.dictionary-<router_or_storage>
- roles.expirationd
- roles.healthcheck
- roles.tcf-<worker_or_coordinator>
Секция app.roles.slow_log задает опции конфигурации журнала медленных запросов.
Пример
Включить запись в журнал медленных запросов. По умолчанию запись будет включена для запросов через модуль CRUD.
Тип: boolean
Значение по умолчанию: false
Максимальное время выполнения запроса в секундах. При превышении этого значения запрос считается медленным и записывается в журнал.
Тип: number
Значение по умолчанию: 0.5
Задать функции, для которых будет включено логирование медленных запросов.
Тип: table
Значение по умолчанию: {}
Секция app.roles.tracing задает опции конфигурации трассировки.
- app.roles.tracing.enabled
- app.roles.tracing.global_sample_rate
- app.roles.tracing.sample_rates
- app.roles.tracing.base_url
- app.roles.tracing.api_method
- app.roles.tracing.report_interval
- app.roles.tracing.spans_limit
Пример
roles_cfg:app.roles.tracing:enabled: trueglobal_sample_rate: 0sample_rates:get_token_api: 2debug_1: 1base_url: 'http://tracing:9411/api/v2/spans'api_method: 'POST'report_interval: 1spans_limit: 1000
Включить трассировку.
Тип: boolean
Значение по умолчанию: false
Глобальный коэффициент частоты трассировки — трассируется каждый N-й вызов функции. Примеры:
10 — трассируется каждый десятый запрос;
1 — трассируются все запросы;
0 — все запросы не трассируются.
Тип: integer
Значение по умолчанию: 0
Коэффициенты частоты трассировки для заданных сегментов (spans). Значение опции — это таблица из пар ключ-значение, где
- ключ — название сегмента;
- значение — частота трассировки для этого сегмента.
Тип: table
Значение по умолчанию: '{}'
Пример:
sample_rates:get_user: 1000get_token: 10000
URL-адрес сервера трассировки, куда отправляются данные трассировки.
Тип: string
Значение по умолчанию: 'http://127.0.0.1:9411/api/v2/spans'
HTTP-метод, используемый для отправки данных трассировки на сервер.
Возможные значения: POST, GET, PUT.
Тип: string
Значение по умолчанию: 'POST'
Интервал в секундах между отправкой на сервер собранных данных о трассировке.
Тип: integer
Значение по умолчанию: 10
Максимальное количество сегментов (span) трассировки, которые могут быть сохранены локально на экземпляре Tarantool перед отправкой во внешнюю систему хранения результатов трассировки.
Тип: integer
Значение по умолчанию: 1000
Секция config.storage определяет опции конфигурации узла как части централизованного хранилища конфигураций.
Узнать больше: Запуск кластера Tarantool DB как централизованного хранилища конфигураций.
Пример
roles_cfg:config.storage:status_check_interval: 3
Интервал в секундах между проверками состояния сервера в кластере.
Тип: number
Значение по умолчанию: 5
Доступно с версии 3.0.0.
Секция задает опции конфигурации для технологической роли roles.cooler. Опции используются для настройки архивации устаревших данных из спейсов memtx в спейсы на vinyl. Узнать больше: Архивация данных по их времени жизни.
- roles.cooler.<name>
- roles.cooler.<name>.expirationd.<index_name>
- roles.cooler.<name>.expirationd.<index_name>.force
- roles.cooler.<name>.expirationd.<index_name>.force_allow_functional_index
- roles.cooler.<name>.expirationd.<index_name>.full_scan_delay
- roles.cooler.<name>.expirationd.<index_name>.full_scan_time
- roles.cooler.<name>.expirationd.<index_name>.iterate_with
- roles.cooler.<name>.expirationd.<index_name>.iteration_delay
- roles.cooler.<name>.expirationd.<index_name>.iterator_type
- roles.cooler.<name>.expirationd.<index_name>.on_full_scan_error
- roles.cooler.<name>.expirationd.<index_name>.on_full_scan_success
- roles.cooler.<name>.expirationd.<index_name>.process_while
- roles.cooler.<name>.expirationd.<index_name>.start_key
- roles.cooler.<name>.expirationd.<index_name>.tuples_per_iteration
- roles.cooler.<name>.expirationd.<index_name>.vinyl_assumed_space_len
- roles.cooler.<name>.expirationd.<index_name>.vinyl_assumed_space_len_factor
- roles.cooler.<name>.expirationd.<index_name>
Пример
roles_cfg:roles.cooler:user_sessions:expirationd:primary_key: # Явное указание сканирования по первичному ключуfull_scan_time: 300tuples_per_iteration: 100last_updated_index: # Дополнительный индексfull_scan_time: 1000tuples_per_iteration: 200start_key: user_sessions_last_updated_start_keyiterator_type: 'LT'
Здесь:
user_sessions— название спейса memtx, для которого настраивается архивация;primary— название первичного ключа, по которому идет сканирование спейса;last_updated_index— название дополнительного индекса, по которому идет сканирование спейса;full_scan_time— время обхода спейса в секундах;tuples_per_iteration— количество кортежей, которое проверяется за одну итерацию;start_key— ключ, с которого начинается проход по индексу;iterator_type— тип итератора для обхода спейса.
Кроме того, в конфигурации можно задать уровень логирования модуля cooler с помощью опции log.modules.cooler:
log:modules:cooler: 'info'
Значение опции по умолчанию: info.
Возможные значения:
info— информация по запуску и завершению задачи архивации;verbose— информация по запуску и завершению задачи архивации, а также статистика по задаче и логирование всех новых параметров архивации. Уровеньverboseиспользуется, чтобы оценить работу архивации через логи;debug— информация по каждому архивируемому кортежу. Уровеньdebugиспользуется для отладки работы модуля, включать данный уровень надолго не рекомендуется.
Задать опцию log.modules.cooler можно на любом
уровне конфигурации:
на все экземпляры кластера, группу, набор реплик или отдельный экземпляр.
Полное описание опции log.modules приведено в документации Tarantool.
Название спейса memtx, для которого настраивается архивация. Обязательный параметр.
Тип: string
Название индекса, по которому идет сканирование спейса.
На каждый индекс спейса может быть задана только одна задача архивации.
Настройка этой опции позволяет избежать лишнего прохода по первичному ключу, если используется другой, более подходящий
индекс (например, по last_updated или archived_at):
- если секция
expirationd.\<index_name\>присутствует и содержит только вторичные индексы, идет сканирование только по этим индексам. Задача по первичному ключу при этом не запускается; - если секция
expirationd.\<index_name\>пропущена, по умолчанию идет сканирование по первичному ключу; - если требуется запуск по первичному ключу вместе с другими индексами или настройка параметров,
необходимо явно указать секцию
expirationd.\<index_name\>с названием первичного ключа в конфигурации (см. пример выше).
Тип: string
Если задано значение false, модуль expirationd обрабатывает задачи для всех типов спейсов только на экземпляре,
доступном для записи.
Он не обрабатывает задачи для нелокальных персистентных спейсов на экземпляре только для чтения.
Это означает, что expirationd не будет запускать обработку задачи на реплике для обычных спейсов.
Если задано значение true, принудительно включается обработка такой задачи.
Тип: boolean
Значение по умолчанию: false
Если задано значение false, модуль expirationd возвращает ошибку при итерации по функциональному индексу,
поскольку это может привести к сбою.
Вы можете пропустить ошибку, установив значение true, например при реализации собственной функции iterate_with.
Тип: boolean
Значение по умолчанию: false
Время ожидания между полными сканированиями в секундах.
В значении опции допустимо передавать номер FFI, например 1LL или 1ULL.
Тип: number
Значение по умолчанию: 1
Время обхода спейса в секундах.
Используется для расчета пауз между итерациями.
Настройка регулирует скорость работы архивации данных.
В значении опции допустимо передавать номер FFI, например 1LL или 1ULL.
Тип: number
Значение по умолчанию: 3600
Название функции, возвращающей итератор для обхода спейса. Если опция не указана, используется функция по умолчанию. Функция по умолчанию возвращает такой итератор, какой возвращается в index_object:pairs().
Тип: string
Максимальное время ожидания между итерациями в секундах.
В значении опции допустимо передавать номер FFI, например 1LL или 1ULL.
Тип: number
Значение по умолчанию: 1
Тип итератора для обхода спейса:
строка или константа box.index, например, EQилиbox.index.EQ`.
Тип: string или number
Значение по умолчанию: box.index.ALL
Имя функции, которая вызывается после завершения полного сканирования из-за ошибки.
Тип: string
Имя функции, которая вызывается после успешного завершения полной итерации сканирования.
Тип: string
Имя функции, которая вызывается перед проверкой каждого кортежа.
Если функция возвращает false, задача останавливается до следующего полного сканирования.
По умолчанию используется функция, которая всегда возвращает true.
Тип: string
Значение индекса кортежа, с которого начнется итерация.
Если тип итератора — EQ, выполняется итерация по кортежам с этим значением индекса.
Если параметр пропущен или равен нулю, будут проверены все кортежи.
Значение опции должно соответствовать одному из условий ниже:
- значение имеет тот же тип данных, что и поле (или поля) индекса;
- если в
start_keyпередана функция, она возвращает тот же тип данных, что и поле (или поля) индекса.
Если в start_key передана строка, она интерпретируется как имя функции.
Тип: string или table
Количество кортежей, которое проверяется за одну итерацию.
В значении опции допустимо передавать номер FFI, например 1LL или 1ULL.
Тип: number
Значение по умолчанию: 1024
Предполагаемый размер спейса vinyl в первой итерации.
Размер спейса vinyl невозможно подсчитать точно, поскольку многие операции (например, upsert) выполняются при
обращении к данным.
Поэтому следует подсчитывать размер кортежей при первом запуске — это позволит определить приблизительный размер спейса.
Значение опции vinyl_assumed_space_len — это приблизительный размер спейса для первого запуска.
В значении опции допустимо передавать номер FFI, например 1LL или 1ULL.
Смотрите также: roles.cooler.<name>.expirationd.<index_name>.vinyl_assumed_space_len_factor.
Тип: number
Значение по умолчанию: 10⁷
Коэффициент для пересчёта размера спейса vinyl.
Размер спейса vinyl невозможно подсчитать точно, поскольку многие операции (например, upsert) выполняются при
обращении к данным.
Поэтому следует подсчитывать размер кортежей при первом запуске — это позволит определить приблизительный размер спейса.
vinyl_assumed_space_len — это приблизительное количество
для первого запуска, а значение опции vinyl_assumed_space_len_factor — для следующего этапа.
В значении опции допустимо передавать номер FFI, например 1LL или 1ULL.
Тип: number
Значение по умолчанию: 2
Секция задает опции конфигурации для технологических ролей roles.crud-router и roles.crud-storage.
Опции используются для настройки сбора метрик модуля CRUD.
Узнать больше про роли, связанные с crud: roles.crud-router, roles.crud-storage.
- roles.crud-<router_or_storage>.stats
- roles.crud-<router_or_storage>.stats_driver
- roles.crud-<router_or_storage>.stats_quantiles
- roles.crud-<router_or_storage>.stats_quantile_age_buckets_count
- roles.crud-<router_or_storage>.stats_quantile_max_age_time
- roles.crud-<router_or_storage>.stats_quantile_tolerated_error
Пример
roles_cfg:roles.metrics-export:http:- endpoints:- format: prometheuspath: /metricslisten: 8081groups:routers:replication:failover: manualsharding:roles: [router]roles:- roles.crud-router- roles.metrics-export- roles.dictionary-routerroles_cfg:roles.crud-router:stats: truestats_driver: metricsstats_quantiles: truestats_quantile_tolerated_error: 0.001stats_quantile_age_buckets_count: 5stats_quantile_max_age_time: 180
Включить сбор метрик модуля CRUD.
По умолчанию сбор метрик отключен, так как их работа снижает производительность:
- на 3-10% — при использовании локального драйвера;
- 5-15% — при использовании драйвера метрик. Этот драйвер используется по умолчанию;
- до 20% — при использовании метрик, которые содержат квантили.
Тип: boolean
Значение по умолчанию: false
Задать драйвер для хранения собранных метрик CRUD. Возможные значения:
local— использовать локальный драйвер;metrics-- использовать драйвер метрик.
Тип: string
Значение по умолчанию: 'metrics'
Включить квантили метрик.
Опция crud.stats_quantiles работает только в том случае, если в опции roles.crud-<router_or_storage>.stats_driver задан драйвер метрик (crud.stats_driver = 'metrics').
Тип: boolean
Значение по умолчанию: false
Количество сегментов квантилей summary.
Увеличение значения сглаживает скользящее окно, но потребляет дополнительную память и CPU.
Опция crud.stats_quantile_age_buckets_count работает только в том случае, если в опции roles.crud-<router_or_storage>.stats_driver задан драйвер метрик (crud.stats_driver = 'metrics').
Тип: number
Значение по умолчанию: 2
Время жизни сегмента (bucket) в секундах.
Опция crud.stats_quantile_max_age_time работает только в том случае, если в опции roles.crud-<router_or_storage>.stats_driver задан драйвер метрик (crud.stats_driver = 'metrics').
Меньший срок жизни сегмента приводит к меньшему временному окну для квантилей, при этом
больше ресурсов CPU используется на ротацию сегментов.
Если у вашего приложения низкая частота запросов, увеличьте значение, чтобы уменьшить количество пробелов -nan в значениях квантилей.
Узнать больше про опцию crud.stats_quantile_max_age_time можно в документации Tarantool в
разделе Мониторинг.
Тип: number
Значение по умолчанию: 60
Задать допустимую погрешность квантиля.
Опция stats_quantile_tolerated_error работает только в том случае, если в опции roles.crud-<router_or_storage>.stats_driver задан драйвер метрик (crud.stats_driver = 'metrics').
Узнать больше про опцию crud.stats_quantile_tolerated_error можно в документации Tarantool в
разделе Мониторинг.
Тип: number
Значение по умолчанию: 0.001
Секция задает опции конфигурации для технологических ролей roles.dictionary-router и roles.dictionary-storage.
Опции используются для настройки работы словарей.
- roles.dictionary-<router_or_storage>.batch_size
- roles.dictionary-<router_or_storage>.worker_sleep_in_second
- roles.dictionary-<router_or_storage>.update_instances_list_period
- roles.dictionary-<router_or_storage>.connect_timeout
Пример
roles_cfg:roles.dictionary-router:update_instances_list_period: 300roles.dictionary-storage:batch_size: 1000worker_sleep_in_second: 60update_instances_list_period: 300connect_timeout: 3
Размер пакета для обмена между узлами в байтах.
Тип: number
Значение по умолчанию: 400
Интервал в секундах между опросами соседнего экземпляра на наличие новых данных.
Тип: number
Значение по умолчанию: 3
Доступно с версии 2.0.0.
Частота обновления списка узлов в секундах. Модуль хранит список узлов и отслеживает нездоровые узлы. При обнаружении нездорового узла модуль прекращает попытки связаться с ним до следующего обновления списка. Опция также позволяет отслеживать появление новых узлов в кластере.
Тип: number
Значение по умолчанию: 60
Доступно с версии 2.0.0.
Время ожидания установки соединения в секундах.
Тип: number
Значение по умолчанию: Неограниченно
Секция roles.expirationd задает опции конфигурации устаревания данных.
- roles.expirationd.<name>
Название задачи по устареванию данных. Обязательный параметр.
Тип: string
Без пользовательской логики
roles_cfg:roles.expirationd:task_name1:space: messagesoptions:args:lifetime_in_seconds: 15time_create_field: dt
Здесь:
task_name1— название задачи по устареванию данных;space— название спейса, по которому идет поиск устаревших кортежей;options.args— дополнительные опции конфигурации:lifetime_in_seconds— время жизни кортежа в секундах;time_create_field— название поля, по которому проверяется время жизни кортежа.
Узнать больше: Автоматическое удаление устаревших кортежей из спейса.
С пользовательской логикой
roles_cfg:roles.expirationd:messages_expiration:space: messagesis_expired: messages_is_tuple_expiredis_master_only: trueoptions:tuples_per_iteration: 100iterate_with: messages_iterate_withprocess_expired_tuple: messages_process_expired_tupleargs:seconds: 5
Здесь:
messages_expiration— название задачи по устареванию данных;space— название спейса, по которому идет поиск устаревших кортежей;is_expired— название функции, которая получает кортеж и проверяет его срок жизни;is_master_only— экспирация запущена только на master-узлах;options— дополнительные опции конфигурации:tuples_per_iteration— количество кортежей, которое проверяется за одну итерацию;iterate_with— название функции, которая получает и обрабатывает устаревшие кортежи;process_expired_tuple— название функции, возвращающей итератор для обхода спейса;args— аргументы, доступные в функцияхmessage_iterate_withиmessage_process_expired_tuple,seconds-- время жизни кортежа. А также для поиска устаревших данных по умолчанию. В этом случае используются следующие поля:lifetime_in_seconds- время жизни кортежа в секундах;time_create_field- поле "время создания" для оценки времени жизни.
Узнать больше: Проверка устаревших кортежей в спейсе с помощью пользовательских функций.
Название функции, которая получает кортеж и проверяет его срок жизни.
Функция возвращает true, если время жизни кортежа истекло.
Обязательный параметр.
Тип: function
Запустить работу с устаревающими кортежами только на master-узлах.
Тип: boolean
Значение по умолчанию: false
Название спейса или идентификатор спейса, по которому идет поиск устаревших кортежей. Обязательный параметр.
Тип: string или number
Дополнительные опции конфигурации.
Тип: table
Значение по умолчанию: {}
Дополнительные аргументы конфигурации. Доступные аргументы:
-
seconds(number) — время жизни кортежа в секундах. Аргумент нужен, когда для обработки устаревших кортежей используются пользовательские функции. Аргумент передается в опции roles.expirationd.<name>.options.iterate_with и roles.expirationd.<name>.options.process_expired_tuple в качестве дополнительного контекста; -
lifetime_in_seconds(number) — время жизни кортежа в секундах. Доступно с версии 1.2.0. Аргумент используется для настройки автоматического удаления устаревших кортежей; -
time_create_field(string) — название поля, по которому проверяется время жизни кортежа. Доступно с версии 1.2.0. Аргумент используется для настройки автоматического удаления устаревших кортежей. Указанное поле может быть нескольких типов. Функция определения текущего времени зависит от типа данных в опцииtime_create_field:Тип
time_create_fieldТекущее время
число
clock.time()целое число
clock.time()беззнаковое
clock.time()datetime
datetime.now()
Тип: table
Значение по умолчанию: {}
Название функции, возвращающей итератор для обхода спейса. Если опция не указана, используется функция по умолчанию. Функция по умолчанию возвращает такой итератор, какой возвращается в index_object:pairs().
Тип: function
Название функции, которая получает и обрабатывает устаревшие кортежи.
Если опция не указана (или указан nil), устаревшие кортежи удаляются.
Тип: function
Количество кортежей, которое проверяется за одну итерацию.
В значении опции допустимо передавать номер FFI, например 1LL или 1ULL.
Тип: number
Значение по умолчанию: 1024
Доступно с версии 3.1.0.
Секция roles.healthcheck задает опции для технологической роли roles.healthcheck.
Опции позволяют настраивать запуск встроенных проверок здоровья кластера и репликации, а также задавать пользовательские
проверки работоспособности.
Список доступных встроенных проверок приведен в секции roles.healthcheck.checks.
Узнать больше: Проверка работоспособности кластера.
- roles.healthcheck.checks
- roles.healthcheck.http
- roles.healthcheck.ratelim_rps
- roles.healthcheck.set_alerts
Для получения состояния здоровья узла используются HTTP GET-запросы на адрес обработчика запроса, заданный в конфигурации:
curl http://localhost:8081/healthcheck
Запрос возвращает один из следующих HTTP-статусов:
200с телом ответа{"status":"alive"}— все проверки завершены успешно;500— не удалось успешно выполнить часть проверок, описание проблем приведено в полеdetails.
Включить или отключить запуск встроенных и пользовательских проверок.
Пользовательские проверки по умолчанию включены, для исключения из списка запускаемых укажите их в опции checks.exclude.
Поддерживаемые параметры:
include— список запускаемых проверок. Тип:table. Если установлено значение по умолчанию (all), запускаются все доступные проверки (основные, дополнительные и пользовательские);exclude— список отключенных встроенных и пользовательских проверок. Тип:table. Если установлено значение по умолчанию ({}), запускаются все доступные проверки. При наличии одних и тех же проверок в опцияхchecks.includeиchecks.excludeприоритетное значение имеют проверки в опцииchecks.exclude.
Поддерживаемые встроенные проверки:
check_box_info_status— текущее состояние экземпляра. Проверка провалится, еслиbox.info.statusимеет статус, отличный отrunning;check_snapshot_dir— наличие директории для снимков данныхsnapshot.dirс учетом значенияprocess.work_dir. Проверка провалится, если директорияsnapshot.dirотсутствует или недоступна;check_wal_dir— наличие директории журнала упреждающей записиwal.dirс учетом значенияprocess.work_dir. Проверка провалится, если директорияwal.dirотсутствует или недоступна;replication.upstream_absent— дополнительная проверка, наличиеupstream-узла, с которого принимаются данные. Проверка провалится, еслиupstream-узел отсутствует и не выполняется репликация сupstream-узла на текущий экземпляр;replication.state_bad— дополнительная проверка, репликационный статус текущего экземпляра (значениеbox.info.replication[{n}].upstream.status). Здоровым состоянием считаются только статусыfollowилиsync. Проверка провалится, если полученный статус отличается отfollowилиsync.
Дополнительные проверки репликации replication.upstream_absent.<имя_узла> и replication.state_bad.<имя_узла> запускаются по умолчанию,
настроить это можно в секциях checks.include и checks.exclude.
Пример
Запустить все проверки кроме replication.upstream_absent и replication.state_bad:
roles_cfg:roles.healthcheck:checks:include: [all]exclude: ['replication.upstream_absent', 'replication.state_bad']http:- endpoints:- path: /healthcheck
Пример пользовательской проверки
Любая функция box.func с именем healthcheck.check_* выполняется, если она не исключена через checks.exclude.
Если пользовательская проверка выдает ошибку или возвращает не булевое значение в качестве результата , проверка
прекращает проход по оставшимся пользовательским проверкам.
Такой подход с быстрым обнаружением ошибок позволяет увидеть нерабочие проверки, чтобы оперативно исправить их или отключить.
В примере ниже создана проверка healthcheck.check_space_size, отслеживающая размер заданного спейса.
Если размер превышает пороговое значение, проверка возвращает ошибку:
-- migration or role codebox.schema.func.create('healthcheck.check_space_size', {if_not_exists = true,language = 'LUA',body = [[function()local limit = 10 * 1024 * 1024local used = box.space.my_space:bsize()if used > limit thenreturn false, 'my_space is larger than 10MB'endreturn trueend]]})
Чтобы отключить пользовательскую проверку, укажите ее в опции checks.exclude:
roles_cfg:roles.healthcheck:checks:exclude:- healthcheck.check_space_sizehttp:- endpoints:- path: /healthcheck
Параметры HTTP-сервера. При минимальной конфигурации модуля выполняются только встроенные проверки работоспособности Tarantool.
Поддерживаемые параметры:
server— название именованного HTTP-сервера из конфигурации технологической ролиroles.httpd. Тип:stringЕсли параметр не указан, используется серверdefault;endpoints-- массив адресов с возможностью указания нескольких подключений. Тип:table. Возможные параметры:path— адрес обработчика запроса (endpoint). Обязательный параметр. Тип:string;format— формат, в котором предоставляется ответ. Тип:string. Опция поддерживает создание пользовательского формата ответа, подробности приведены ниже в разделе Пример пользовательского формата ответа.
Примеры
Для корректной работы технологической роли roles.healthcheck нужно задать настройки HTTP-сервера в конфигурации роли roles.httpd.
Для этого укажите обе роли в секции roles:
#...groups:routers:#...roles: [ roles.httpd, roles.healthcheck ]
Затем определите конфигурацию сервера в секции roles_cfg.roles.httpd.
Минимальная конфигурация при этом выглядит так:
roles_cfg:roles.healthcheck:http:- endpoints:- path: /healthcheckgroups:group-001:replicasets:router:instances:router:roles: [roles.httpd, roles.healthcheck]roles_cfg:roles.httpd:default:listen: '127.0.0.1:8081'
Здесь:
roles.healthcheck.http.endpoints.path— адрес обработчика запроса на работоспособность (endpoint);roles.httpd.default.listen— адрес и порт, на которых запущен HTTP-сервер. Технологическая рольroles.healthcheckиспользует общий HTTP-сервер, настроенный в конфигурацииroles.httpd.
Использование именованного сервера:
roles_cfg:roles.httpd:default:listen: '127.0.0.1:8081'additional:listen: '127.0.0.1:8082'roles.healthcheck:http:- server: additionalendpoints:- path: /healthcheck
Здесь:
roles.httpd.additional.listen— адрес и порт, на которых запущен HTTP-сервер. Технологическая рольroles.healthcheckиспользует общий именованный HTTP-сервер, настроенный в конфигурацииroles.httpd;roles.healthcheck.http.server— именованный HTTP-сервер из конфигурацииroles.httpd;roles.healthcheck.http.endpoints.path— адрес обработчика запроса на работоспособность (endpoint).
Пример пользовательского формата ответа
Для создания пользовательского формата ответа задайте функцию форматирования, которая возвращает ответ в формате
{status=<number>, headers=?, body=?}.
В примере ниже создана функция healthcheck.check_space_size, которая задает пользовательский формат ответа.
Указанный формат возвращает один из следующих ответов:
- HTTP-статус
200— проверки завершены успешно; - HTTP-статус
560— не удалось успешно выполнить часть проверок, описание проблем приведено в полеdetails.
box.schema.func.create('custom_healthcheck_format', {language = 'LUA',body = [[function(is_healthy, details)local json = require('json')if is_healthy thenreturn { status = 200, body = json.encode({ok=true}) }endreturn {status = 560,headers = {['content-type'] = 'application/json'},body = json.encode({errors = details}),}end]]})
Чтобы использовать пользовательский формат ответа, укажите название созданной функции в опции roles.healthcheck.http.endpoints.format:
roles_cfg:roles.healthcheck:http:- endpoints:- path: /healthcheckformat: custom_healthcheck_format
Количество запросов в секунду с одного узла. Например, значение 1 означает один запрос в секунду, 0.2 — пять запросов в секунду.
Значение null, заданное по умолчанию, отключает ограничение количества запросов.
При превышении ограничения запрос возвращает ответ 429 с телом ответа {"status":"rate limit exceeded"}.
Тип: number
Значение по умолчанию: box.NULL
Включить отображение неудачных попыток проверки работоспособности в виде оповещений (alerts).
Название оповещения — это название функции box.func или checks. Описание оповещения содержит сообщение об ошибке из такой функции.
Список оповещений можно просмотреть двумя способами:
- в поле
box.info.config.alerts(смотрите метод config.info() в документации платформы Tarantool; - в веб-интерфейсе TCM.
Тип: boolean
Значение по умолчанию: false
Секция задает опции конфигурации для технологических ролей roles.tcf-worker и roles.tcf-coordinator.
Опции определяют настройки кластеров, необходимые для взаимодействия с модулем Tarantool Clusters Federation (TCF).
Полный список опций приведен в документации TCF.
Задать конфигурацию кластера можно как через yaml-файл, так и в веб-интерфейсе Tarantool DB на вкладке TCF.
Узнать больше про технологические роли, связанные с TCF: roles.tcf-worker, roles.tcf-coordinator.