Справочник по конфигурации
В этом разделе описаны все параметры конфигурации, доступные в Tarantool.
Большинство параметров конфигурации, описанных в этом справочнике, можно применить к конкретному экземпляру, набору реплик, группе или глобально ко всем экземплярам. Для этого необходимо задать требуемый параметр на соответствующем уровне.
Tarantool можно использовать в качестве сервера приложений для запуска
собственных Lua-приложений. В секции app загружается приложение, а в
подсекции app.cfg задается его конфигурация.
Конфигурация приложения, загружаемого с помощью app.file или
app.module.
Пример
В примере ниже приложение загружается из файла myapp.lua,
расположенного рядом с YAML-файлом конфигурации:
app:file: 'myapp.lua'cfg:greeting: 'Hello'
Пример на GitHub: application
Тип: map
Значение по умолчанию: nil
Переменная окружения: TT_APP_CFG
Путь к Lua-файлу, из которого загружается приложение.
Тип: string
Значение по умолчанию: nil
Переменная окружения: TT_APP_FILE
Lua-модуль, из которого загружается приложение.
Пример
Секция app может быть размещена в любой
области видимости конфигурации. Например, в
шардированном кластере можно задать разные приложения для хранилищ и
роутеров:
groups:storages:app:module: storage# ...routers:app:module: router# ...
Тип: string
Значение по умолчанию: nil
Переменная окружения: TT_APP_MODULE
Раздел audit_log определяет параметры конфигурации, связанные с
журналом аудита.
- audit_log.extract_key
- audit_log.file
- audit_log.filter
- audit_log.format
- audit_log.nonblock
- audit_log.pipe
- audit_log.spaces
- audit_log.to
- audit_log.syslog.*
Если установлено значение true, подсистема аудита извлекает и выводит
только первичный ключ вместо полных кортежей в событиях DML
(space_insert, space_replace, space_delete). В противном случае в
журнал записываются полные кортежи. Параметр может быть полезен при
работе с большими кортежами.
Тип: boolean
Значение по умолчанию: false
Переменная окружения: TT_AUDIT_LOG_EXTRACT_KEY
Указывает файл для назначения журнала аудита. Тип file можно задать с
помощью параметра audit_log.to. Если
журналы записываются в файл, Tarantool переоткрывает журнал аудита при
получении сигнала SIGHUP.
Тип: string
Значение по умолчанию: 'var/log/{{ instance_name }}/audit.log'
Переменная окружения: TT_AUDIT_LOG_FILE
Включает запись в журнал для указанного подмножества событий аудита. Параметр принимает следующие значения:
- Имена событий (например,
password_change). Подробнее см. События журнала аудита. - Группы событий (например,
audit). Подробнее см. Группы событий.
Параметр содержит либо одно значение из раздела «Возможные значения» (см. ниже), либо их комбинацию.
Чтобы включить пользовательские события аудита,
укажите значение custom в этом параметре.
Пример
filter: [ user_create,data_operations,ddl,custom ]format: jsonspaces: [ bands ]extract_key: truegroups:group001:replicasets:replicaset001:instances:instance001:iproto:listen:- uri: '127.0.0.1:3301'
Тип: array
Возможные значения: 'all', 'audit', 'auth', 'priv', 'ddl',
'dml', 'data_operations', 'compatibility', 'audit_enable',
'auth_ok', 'auth_fail', 'disconnect', 'user_create',
'user_drop', 'role_create', 'role_drop', 'user_disable',
'user_enable', 'user_grant_rights', 'role_grant_rights',
'role_revoke_rights', 'password_change', 'access_denied',
'eval', 'call', 'space_select', 'space_create',
'space_alter', 'space_drop', 'space_insert', 'space_replace',
'space_delete', 'custom'
Значение по умолчанию: 'nil'
Переменная окружения: TT_AUDIT_LOG_FILTER
Указывает формат, используемый для журнала аудита.
Пример
Если задать значение plain,
audit_log:to: fileformat: plain
вывод в файле может выглядеть следующим образом:
2024-01-17T00:12:27.155+03004b5a2624-28e5-4b08-83c7-035a0c5a1db9INFO remote:unix/:(socket)session_type:consolemodule:tarantooluser:admintype:space_createtag:description:Create space Bands
Тип: string
Возможные значения: 'json', 'csv', 'plain'
Значение по умолчанию: 'json'
Переменная окружения: TT_AUDIT_LOG_FORMAT
Определяет поведение записи в журнал, если система не готова к записи.
Если установлено значение true, Tarantool не блокируется при записи в
журнал, если система недоступна для записи, и вместо этого выводит
сообщение. Использование этого значения может повысить
производительность журналирования ценой потери некоторых сообщений
журнала.
Тип: boolean
Значение по умолчанию: false
Переменная окружения: TT_AUDIT_LOG_NONBLOCK
Указывает канал для назначения журнала аудита. Тип pipe можно задать с
помощью параметра audit_log.to. Если
журнал представляет собой программу, её PID сохраняется в поле
audit.pid. Для ротации журналов необходимо отправить программе сигнал.
Пример
При запуске сервера запускается программа
cronolog, и все сообщения
audit_log направляются на стандартный ввод (stdin) cronolog.
audit_log:to: pipepipe: 'cronolog audit_tarantool.log'
Тип: string
Значение по умолчанию: box.NULL
Переменная окружения: TT_AUDIT_LOG_PIPE
Массив имен спейсов, для которых следует записывать события операций с
данными (space_select, space_insert, space_replace,
space_delete). Массив принимает строковые значения. Если установлено
значение box.NULL, события операций с данными записываются
для всех спейсов.
Пример
В примере записываются только события спейсов bands и singers:
audit_log:spaces: [bands, singers]
Тип: array
Значение по умолчанию: box.NULL
Переменная окружения: TT_AUDIT_LOG_SPACES
Включает журнал аудита и определяет расположение журнала. Параметр принимает следующие значения:
devnull: отключить журнал аудита.file: записывать журналы аудита в файл (см. audit_log.file).pipe: запустить программу и записывать журналы аудита в неё (см. audit_log.pipe).syslog: записывать журналы аудита в системный журнал (см. audit_log.syslog.*).
По умолчанию журнал аудита отключен.
Пример
Базовая конфигурация журнала аудита может выглядеть следующим образом:
audit_log:to: filefile: 'audit_tarantool.log'filter: [ user_create,data_operations,ddl,custom ]format: jsonspaces: [ bands ]extract_key: true
Тип: string
Возможные значения: 'devnull', 'file', 'pipe', 'syslog'
Значение по умолчанию: 'devnull'
Переменная окружения: TT_AUDIT_LOG_TO
Указывает ключевое слово системного журнала, которое сообщает syslogd, куда отправлять сообщение. Включить запись в системный журнал можно с помощью параметра audit_log.to.
См. также: пример конфигурации syslog
Тип: string
Возможные значения: 'auth', 'authpriv', 'cron', 'daemon',
'ftp', 'kern', 'lpr', 'mail', 'news', 'security',
'syslog', 'user', 'uucp', 'local0', 'local1', 'local2',
'local3', 'local4', 'local5', 'local6', 'local7'
Значение по умолчанию: 'local7'
Переменная окружения: TT_AUDIT_LOG_SYSLOG_FACILITY
Указывает имя приложения для отображения в журналах. Включить запись в системный журнал можно с помощью параметра audit_log.to.
См. также: пример конфигурации syslog
Тип: string
Значение по умолчанию: 'tarantool'
Переменная окружения: TT_AUDIT_LOG_SYSLOG_IDENTITY
Задает расположение сервера syslog. Это может быть путь к Unix-сокету, начинающийся с 'unix:', или номер порта IPv4. Включить запись в системный журнал можно с помощью параметра audit_log.to.
Пример
audit_log:to: syslogsyslog:server: 'unix:/dev/log'facility: 'user'identity: 'tarantool_audit'filter: [ audit, auth, priv, password_change, access_denied ]extract_key: falsegroups:group001:replicasets:replicaset001:instances:instance001:iproto:listen:- uri: '127.0.0.1:3301'
- audit_log.syslog.server – a syslog server location.
- audit_log.syslog.facility
– a system logger keyword that tells syslogd where to send the
message. The default value is
local7. - audit_log.syslog.identity
– an application name to show in logs. The default value is
tarantool.
These options are interpreted as a message for the syslogd program, which runs in the background of any Unix-like platform.
An example of a Tarantool audit log entry in the syslog:
09:32:52 tarantool_audit: {"time": "2024-02-08T09:32:52.190+0300", "uuid": "94454e46-9a0e-493a-bb9f-d59e44a43581", "severity": "INFO", "remote": "unix/:(socket)", "session_type": "console", "module": "tarantool", "user": "admin", "type": "space_create", "tag": "", "description": "Create space bands"}
Тип: string
Значение по умолчанию: box.NULL
Переменная окружения: TT_AUDIT_LOG_SYSLOG_SERVER
В секции compat задаются значения параметров модуля
compat.
- compat.binary_data_decoding
- compat.box_cfg_replication_sync_timeout
- compat.box_error_serialize_verbose
- compat.box_error_unpack_type_and_code
- compat.box_info_cluster_meaning
- compat.box_session_push_deprecation
- compat.box_space_execute_priv
- compat.box_space_max
- compat.box_tuple_extension
- compat.box_tuple_new_vararg
- compat.c_func_iproto_multireturn
- compat.fiber_channel_close_mode
- compat.fiber_slice_default
- compat.json_escape_forward_slash
- compat.sql_priv
- compat.sql_seq_scan_default
- compat.yaml_pretty_multiline
Определяет способ хранения полей с бинарными данными в Lua после декодирования:
new: в виде объектов varbinaryold: в виде обычных строк
См. также: compat-option-binary-decoding
Тип: string
Возможные значения: 'new', 'old'
Значение по умолчанию: 'new'
Переменная окружения: TT_COMPAT_BINARY_DATA_DECODING
Задает время ожидания синхронизации репликации по умолчанию:
new: 0old: 300 секунд
См. также: compat-option-replication-timeout
Тип: string
Возможные значения: 'new', 'old'
Значение по умолчанию: 'new'
Переменная окружения: TT_COMPAT_BOX_CFG_REPLICATION_SYNC_TIMEOUT
Начиная с: 3.1.0
Задает уровень детализации при сериализации объектов ошибок:
new: сериализовать сообщение об ошибке вместе с другими потенциально полезными полямиold: сериализовать только сообщение об ошибке
Тип: string
Возможные значения: 'new', 'old'
Значение по умолчанию: 'old'
Переменная окружения: TT_COMPAT_BOX_ERROR_SERIALIZE_VERBOSE
Начиная с: 3.1.0
Определяет, показывать ли поля ошибки в box.error.unpack():
new: не показывать поляbase_typeиcustom_type; не показывать полеcode, если оно равно 0. Обратите внимание, чтоbase_typeпо-прежнему доступен для объекта ошибки.old: показывать все поля
Тип: string
Возможные значения: 'new', 'old'
Значение по умолчанию: 'old'
Переменная окружения: TT_COMPAT_BOX_ERROR_UNPACK_TYPE_AND_CODE
Определяет поведение box.info.cluster:
new: показывать весь кластерold:: показывать текущий набор реплик
См. также: compat-option-box-info-cluster
Тип: string
Возможные значения: 'new', 'old'
Значение по умолчанию: 'new'
Переменная окружения: TT_COMPAT_BOX_INFO_CLUSTER_MEANING
Определяет, вызывать ли ошибку при попытках вызова устаревшей функции
box.session.push:
new: вызывать ошибкуold: не вызывать ошибку
См. также: compat-option-session-push-deprecation
Тип: string
Возможные значения: 'new', 'old'
Значение по умолчанию: 'old'
Переменная окружения: TT_COMPAT_BOX_SESSION_PUSH_DEPRECATION
Определяет, можно ли предоставлять привилегию execute для спейсов:
new: вызывается ошибкаold: привилегию можно предоставить, но она не будет иметь фактического эффекта
Тип: string
Возможные значения: 'new', 'old'
Значение по умолчанию: 'new'
Переменная окружения: TT_COMPAT_BOX_SPACE_EXECUTE_PRIV
Задает максимальный идентификатор спейса (box.schema.SPACE_MAX):
new: 2147483646old: 2147483647
Лимит был уменьшен, так как старое максимальное значение используется в
качестве индикатора ошибки в C API box.
Тип: string
Возможные значения: 'new', 'old'
Значение по умолчанию: 'new'
Переменная окружения: TT_COMPAT_BOX_SPACE_MAX
Управляет битами возможностей IPROTO_FEATURE_CALL_RET_TUPLE_EXTENSION
и IPROTO_FEATURE_CALL_ARG_TUPLE_EXTENSION, которые определяют
кодирование кортежей в запросах iproto call и eval.
new: кортежи с форматами кодируются какMP_TUPLEold: кортежи с форматами кодируются какMP_ARRAY
Тип: string
Возможные значения: 'new', 'old'
Значение по умолчанию: 'new'
Переменная окружения: TT_COMPAT_BOX_TUPLE_EXTENSION
Управляет тем, как box.tuple.new интерпретирует список аргументов:
new: как значение с форматом кортежаold: как массив полей кортежа
Тип: string
Возможные значения: 'new', 'old'
Значение по умолчанию: 'new'
Переменная окружения: TT_COMPAT_BOX_TUPLE_NEW_VARARG
Управляет обертыванием множественных результатов хранимой C-функции при их возврате через iproto:
new: возвращать без обертывания (в соответствии с локальным вызовом черезbox.func)old: обертывать результаты в массив MessagePack
Тип: string
Возможные значения: 'new', 'old'
Значение по умолчанию: 'new'
Переменная окружения: TT_COMPAT_C_FUNC_IPROTO_MULTIRETURN
Определяет поведение каналов файберов после закрытия:
new: помечать канал как доступный только для чтенияold: уничтожать объект канала
См. также: compat-option-fiber-channel
Тип: string
Возможные значения: 'new', 'old'
Значение по умолчанию: 'new'
Переменная окружения: TT_COMPAT_FIBER_CHANNEL_CLOSE_MODE
Определяет максимальное время выполнения файбера без передачи управления (yield):
new:{warn = 0.5, err = 1.0}old: бесконечность (предупреждения или ошибки не вызываются).
См. также: compat-option-fiber-slice
Тип: string
Возможные значения: 'new', 'old'
Значение по умолчанию: 'new'
Переменная окружения: TT_COMPAT_FIBER_SLICE_DEFAULT
Определяет, экранировать ли символ косой черты '/' с помощью обратной
косой черты в результате json.encode():
new: не экранировать косую чертуold: экранировать косую черту
См. также: compat-option-json-slash
Тип: string
Возможные значения: 'new', 'old'
Значение по умолчанию: 'new'
Переменная окружения: TT_COMPAT_JSON_ESCAPE_FORWARD_SLASH
Определяет, включать ли проверку доступа для SQL-запросов по iproto:
new: проверять права доступа пользователяold: разрешать любому пользователю выполнять SQL по iproto
Тип: string
Возможные значения: 'new', 'old'
Значение по умолчанию: 'new'
Переменная окружения: TT_COMPAT_SQL_PRIV
Управляет значением по умолчанию для настройки сессии sql_seq_scan:
new: falseold: true
См. также: compat-option-sql-scan
Тип: string
Возможные значения: 'new', 'old'
Значение по умолчанию: 'new'
Переменная окружения: TT_COMPAT_SQL_SEQ_SCAN_DEFAULT
Определяет, кодировать ли в стиле блочного скаляра все многострочные
строки или только те, которые содержат подстроку \n\n:
new: все многострочные строкиold: только строки, содержащие подстроку\n\n
См. также: compat-option-lyaml
Тип: string
Возможные значения: 'new', 'old'
Значение по умолчанию: 'new'
Переменная окружения: TT_COMPAT_YAML_PRETTY_MULTILINE
Раздел conditional определяет части конфигурации, которые применяются
к экземплярам, удовлетворяющим определенным условиям.
Задает условную секцию конфигурации. Параметры конфигурации,
определенные внутри секции conditional.if, применяются только к
экземплярам, для которых указанное условие истинно.
Условия могут включать одну переменную – tarantool_version: версию
Tarantool из трех чисел, запущенную на экземпляре, например, 3.1.0. Она
сравнивается со значениями литералов версии, которые представляют
собой три числа, разделенные точками (x.y.z).
В условиях доступны следующие операторы:
- сравнения:
>,<,>=,<=,==,!= - логические операторы
||(ИЛИ) и&&(И) - круглые скобки
()
Пример:
В этом примере различные части конфигурации применяются к экземплярам, на которых запущены версии Tarantool выше и ниже 3.1.0:
- На версиях ниже 3.1.0 метке
upgradedприсваивается значениеfalse. - На версиях 3.1.0 и новее метке
upgradedприсваивается значениеtrue. Кроме того, задаются новые параметрыcompat. Эти параметры были добавлены в версии 3.1.0, поэтому на более старых версиях они вызовут ошибку.
conditional:- if: tarantool_version < 3.1.0labels:upgraded: 'false'- if: tarantool_version >= 3.1.0labels:upgraded: 'true'compat:box_error_serialize_verbose: 'new'box_error_unpack_type_and_code: 'new'
См. также: configuration_conditional
Раздел config определяет различные параметры, связанные с
централизованной конфигурацией.
Определяет способ перезагрузки конфигурации. Этот параметр принимает следующие значения:
auto: конфигурация перезагружается автоматически при ее изменении.manual: конфигурацию следует перезагружать вручную. В этом случае перезагрузку конфигурации можно выполнить в коде приложения с помощью config:reload().
См. также: Перезагрузка конфигурации
Тип: string
Possible values: 'auto', 'manual'
Значение по умолчанию: 'auto'
Переменная окружения: TT_CONFIG_RELOAD
В этом разделе описаны параметры, связанные с загрузкой параметров конфигурации из внешнего хранилища, такого как внешние файлы или переменные окружения.
Определяет способ загрузки параметров из внешнего хранилища. Например, этот параметр можно использовать для загрузки паролей из защищенного хранилища. Примеры приведены в разделе configuration_credentials_loading_secrets.
Тип: map
Значение по умолчанию: nil
Переменная окружения: TT_CONFIG_CONTEXT
Имя сущности, идентифицирующей загружаемое значение конфигурации.
Имя переменной окружения, из которой загружается значение конфигурации.
Чтобы загрузить значение конфигурации из переменной окружения, задайте
значение env для параметра config.context.
Пример
В этом примере пароли загружаются из переменных окружения
DBADMIN_PASSWORD и SAMPLEUSER_PASSWORD:
config:context:dbadmin_password:from: envenv: DBADMIN_PASSWORDsampleuser_password:from: envenv: SAMPLEUSER_PASSWORD
См. также: configuration_credentials_loading_secrets
Тип хранилища, из которого загружается значение конфигурации. Доступны следующие типы хранилища:
file: загрузка значения конфигурации из файла. В этом случае необходимо указать путь к файлу с помощью параметра config.context..file .env: загрузка значения конфигурации из переменной окружения. В этом случае укажите имя переменной окружения с помощью параметра config.context..env .
Путь к файлу, из которого загружается значение конфигурации. Чтобы
загрузить значение конфигурации из файла, задайте значение file для
параметра config.context.
Пример
В этом примере пароли загружаются из файлов dbadmin_password.txt и
sampleuser_password.txt:
config:context:dbadmin_password:from: filefile: secrets/dbadmin_password.txtrstrip: truesampleuser_password:from: filefile: secrets/sampleuser_password.txtrstrip: true
См. также: configuration_credentials_loading_secrets
(Необязательный) Определяет, следует ли удалять пробельные символы и символы перевода строки в конце данных.
В этом разделе описаны параметры, связанные с настройками подключения к
централизованному хранилищу на базе etcd. Если
параметру
replication.failover
задано значение supervised, Tarantool также использует etcd для
поддержания состояния координаторов отказоустойчивости.
- config.etcd.endpoints
- config.etcd.prefix
- config.etcd.username
- config.etcd.password
- config.etcd.ssl.ca_file
- config.etcd.ssl.ca_path
- config.etcd.ssl.ssl_cert
- config.etcd.ssl.ssl_key
- config.etcd.ssl.verify_host
- config.etcd.ssl.verify_peer
- config.etcd.http.request.timeout
- config.etcd.http.request.unix_socket
- config.etcd.watchers.reconnect_max_attempts
- config.etcd.watchers.reconnect_timeout
Список конечных точек для доступа к серверу etcd.
См. также: etcd_local_configuration
Тип: array
Значение по умолчанию: nil
Переменная окружения: TT_CONFIG_ETCD_ENDPOINTS
Префикс ключа, используемый для поиска конфигурации на сервере etcd.
Tarantool выполняет поиск ключей по следующему пути:
<prefix>/config/*. Обратите внимание, что <prefix> должен начинаться
с косой черты (/).
См. также: etcd_local_configuration
Тип: string
Значение по умолчанию: nil
Переменная окружения: TT_CONFIG_ETCD_PREFIX
Имя пользователя для аутентификации.
См. также: etcd_local_configuration
Тип: string
Значение по умолчанию: nil
Переменная окружения: TT_CONFIG_ETCD_USERNAME
Пароль для аутентификации.
См. также: etcd_local_configuration
Тип: string
Значение по умолчанию: nil
Переменная окружения: TT_CONFIG_ETCD_PASSWORD
Путь к файлу доверенных центров сертификации (CA).
Тип: string
Значение по умолчанию: nil
Переменная окружения: TT_CONFIG_ETCD_SSL_CA_FILE
Путь к каталогу с сертификатами для проверки узла.
Тип: string
Значение по умолчанию: nil
Переменная окружения: TT_CONFIG_ETCD_SSL_CA_PATH
Since: 3.2.0
Путь к файлу SSL-сертификата.
Тип: string
Значение по умолчанию: nil
Переменная окружения: TT_CONFIG_ETCD_SSL_SSL_CERT
Путь к файлу закрытого SSL-ключа.
Тип: string
Значение по умолчанию: nil
Переменная окружения: TT_CONFIG_ETCD_SSL_SSL_KEY
Включает проверку имени сертификата (CN) на соответствие указанному хосту.
Тип: boolean
Значение по умолчанию: nil
Переменная окружения: TT_CONFIG_ETCD_SSL_VERIFY_HOST
Включает проверку SSL-сертификата узла.
Тип: boolean
Значение по умолчанию: nil
Переменная окружения: TT_CONFIG_ETCD_SSL_VERIFY_PEER
Время, отведенное на обработку HTTP-запроса к серверу etcd: от отправки запроса до получения ответа.
См. также: etcd_local_configuration
Тип: number
Значение по умолчанию: nil
Переменная окружения: TT_CONFIG_ETCD_HTTP_REQUEST_TIMEOUT
Unix-доменный сокет, используемый для подключения к серверу etcd.
Тип: string
Значение по умолчанию: nil
Переменная окружения: TT_CONFIG_ETCD_HTTP_REQUEST_UNIX_SOCKET
Since: 3.1.0
Максимальное количество попыток переподключения к серверу etcd в случае сбоя соединения.
Тип: integer
Значение по умолчанию: nil
Переменная окружения: TT_CONFIG_ETCD_WATCHERS_RECONNECT_MAX_ATTEMPTS
Since: 3.1.0
Время ожидания (в секундах) между попытками переподключения к серверу etcd в случае сбоя соединения.
Тип: number
Значение по умолчанию: nil
Переменная окружения: TT_CONFIG_ETCD_WATCHERS_RECONNECT_TIMEOUT
В этом разделе описаны параметры, связанные с настройками подключения к централизованному хранилищу на базе Tarantool.
- config.storage.endpoints
- config.storage.prefix
- config.storage.reconnect_after
- config.storage.timeout
Массив конечных точек для доступа к хранилищу конфигурации. Каждая конечная точка может включать следующие поля:
uri: URI экземпляра хранилища конфигурации.login: имя пользователя для подключения к экземпляру.password: пароль для аутентификации.params: SSL-параметры, необходимые для зашифрованных соединений (.params.* ).
См. также: centralized_configuration_storage_connect_tarantool
Тип: array
Значение по умолчанию: nil
Переменная окружения: TT_CONFIG_STORAGE_ENDPOINTS
Префикс ключа, используемый для поиска конфигурации в централизованном
хранилище конфигурации. Tarantool выполняет поиск ключей по следующему
пути: <prefix>/config/*. Обратите внимание, что <prefix> должен
начинаться с косой черты (/).
См. также: centralized_configuration_storage_connect_tarantool
Тип: string
Значение по умолчанию: nil
Переменная окружения: TT_CONFIG_STORAGE_PREFIX
Время ожидания в секундах перед переподключением к хранилищу конфигурации.
Тип: number
Значение по умолчанию: 3
Переменная окружения: TT_CONFIG_STORAGE_RECONNECT_AFTER
Интервал (в секундах) для проверки состояния хранилища конфигурации.
См. также: centralized_configuration_storage_connect_tarantool
Тип: number
Значение по умолчанию: 3
Переменная окружения: TT_CONFIG_STORAGE_TIMEOUT
Настройка административной консоли. Для подключения к консоли
используется tt connect.
Определяет, нужно ли слушать Unix-сокет, указанный в параметре console.socket.
Если для параметра установлено значение false, административная
консоль отключена.
Тип: boolean
Значение по умолчанию: true
Переменная окружения: TT_CONSOLE_ENABLED
Unix-сокет для административной консоли.
Учитывайте следующие особенности:
- Допускается только Unix domain socket. Настроить TCP-сокет таким образом нельзя.
console.socket– это путь к файлу без префиксовunix:илиunix/:.- Если путь к файлу относительный, он интерпретируется относительно process.work_dir.
Тип: string
Значение по умолчанию: 'var/run/{{ instance_name }}/tarantool.control'
Переменная окружения: TT_CONSOLE_SOCKET
В разделе credentials можно создавать пользователей и назначать им
указанные привилегии. Подробнее см. в
configuration_credentials.
Массив ролей, которые можно назначать пользователям или другим ролям.
Пример
В примере ниже роль writers_space_reader получает привилегии на чтение
данных в спейсе writers:
См. также: configuration_credentials_managing_users_roles
Тип: map
Значение по умолчанию: nil
Переменная окружения: TT_CREDENTIALS_ROLES
Массив ролей, назначенных этой роли.
Массив привилегий, назначенных этой роли.
См. <user_or_role_name>.privileges.*.
- credentials.users
- credentials.users.
.password - credentials.users.
.roles - credentials.users.
.privileges
Массив пользователей.
Пример
В этом примере sampleuser получает следующие привилегии:
- Привилегии, назначенные роли
writers_space_reader. - Привилегии на чтение и изменение данных в спейсе
books.
См. также: configuration_credentials_managing_users_roles
Тип: map
Значение по умолчанию: nil
Переменная окружения: TT_CREDENTIALS_USERS
Пароль пользователя.
Пример
В примере ниже задается пароль для пользователя dbadmin:
credentials:users:dbadmin:password: 'T0p_Secret_P@$$w0rd'
См. также: configuration_credentials_loading_secrets
Массив ролей, назначенных этому пользователю.
Массив привилегий, назначенных этому пользователю.
См. <user_or_role_name>.privileges.*.
- <user_or_role_name>.privileges
- <user_or_role_name>.privileges.permissions
- <user_or_role_name>.privileges.spaces
- <user_or_role_name>.privileges.functions
- <user_or_role_name>.privileges.sequences
- <user_or_role_name>.privileges.lua_eval
- <user_or_role_name>.privileges.lua_call
- <user_or_role_name>.privileges.sql
Привилегии, которые можно назначить пользователю или роли с помощью следующих опций:
Разрешения, назначенные этому пользователю или пользователю с этой ролью.
Пример
В этом примере sampleuser получает привилегии на чтение и изменение
данных в спейсе books:
См. также: configuration_credentials_managing_users_roles
Спейсы, к которым этот пользователь или пользователь с этой ролью получает указанные разрешения.
Пример
В этом примере sampleuser получает привилегии на чтение и изменение
данных в спейсе books:
См. также: configuration_credentials_managing_users_roles
Функции, к которым этот пользователь или пользователь с этой ролью получает указанные разрешения.
Последовательности, к которым этот пользователь или пользователь с этой ролью получает указанные разрешения.
Определяет, может ли этот пользователь или пользователь с этой ролью выполнять произвольный Lua-код.
Список глобальных пользовательских Lua-функций, которые может вызывать
этот пользователь или пользователь с этой ролью. Чтобы разрешить вызов
определенной функции, укажите ее имя в качестве значения. Чтобы
разрешить вызов всех глобальных Lua-функций, кроме встроенных, укажите
значение all.
Эту опцию следует настраивать вместе с
разрешением
execute.
Начиная с версии 3.3.0,
с помощью опции lua_call можно выдавать пользователям привилегии на
вызов указанных Lua-функций на экземпляре во время выполнения (таким
образом, это не требует возможности записи в базу данных).
Пример выдачи пользовательских функций пользователю 'alice':
credentials:users:alice:privileges:- permissions: [execute]lua_call: [my_func, my_func2]
Определяет, может ли этот пользователь или пользователь с этой ролью выполнять произвольное SQL-выражение.
Раздел database определяет параметры конфигурации, относящиеся к базе
данных, такие как режим чтения-записи экземпляра или уровень изоляции
транзакций.
- database.hot_standby
- database.instance_uuid
- database.mode
- database.replicaset_uuid
- database.txn_isolation
- database.txn_timeout
- database.use_mvcc_engine
Определяет, следует ли запускать сервер в режиме горячего резерва. Этот режим может использоваться для обеспечения отказоустойчивости без репликации.
Предположим, есть два кластерных приложения. В каждом кластере есть один экземпляр с одинаковой конфигурацией:
groups:group001:replicasets:replicaset001:instances:instance001:database:hot_standby: truewal:dir: /tmp/walssnapshot:dir: /tmp/snapshotsiproto:listen:- uri: '127.0.0.1:3301'
В частности, оба экземпляра используют один и тот же каталог для хранения журналов предзаписи и снимков.
При запуске обоих кластерных приложений на одной машине экземпляр из первого приложения станет основным, а второй – резервным. В журналах второго экземпляра кластера должно появиться уведомление:
main/104/interactive I> Entering hot standby mode
Это означает, что резервный экземпляр готов принять управление, если основной экземпляр выйдет из строя. Резервный экземпляр инициализируется и пытается установить блокировку на каталог для хранения журналов предзаписи, но не может этого сделать, так как основной экземпляр уже установил блокировку на этот каталог.
Если основной экземпляр выходит из строя по любой причине, блокировка снимается. В этом случае резервный экземпляр успешно устанавливает блокировку и становится основным экземпляром.
database.hot_standby не действует:
- Если для параметра wal.mode
установлено значение
none. - Если для параметра
wal.dir_rescan_delay
установлено большое значение на macOS или FreeBSD. На этих платформах
режим горячего резерва устроен так, что цикл повторяется каждые
wal.dir_rescan_delayсекунд. - Для спейсов, созданных с параметром engine,
установленным в значение
vinyl.
Примеры на GitHub: hot_standby_1, hot_standby_2
Тип: boolean
Значение по умолчанию: false
Переменная окружения: TT_DATABASE_HOT_STANDBY
По умолчанию UUID экземпляров генерируются автоматически.
database.instance_uuid можно использовать для указания идентификатора
экземпляра вручную.
UUID должны соответствовать следующим правилам:
- Значения должны быть настоящими уникальными идентификаторами, не используемыми другими экземплярами или наборами реплик в общей инфраструктуре.
- Значения должны использоваться последовательно и не изменяться после первоначальной настройки. Начальные значения хранятся в файлах снимков и проверяются при каждом перезапуске системы.
- Значения должны соответствовать RFC 4122. Нулевой UUID не допускается.
См. также: database.replicaset_uuid
Тип: string
Значение по умолчанию: [box.NULL](../../reference_lua/box/box_null#box-null)
Переменная окружения: TT_DATABASE_INSTANCE_UUID
Режим работы экземпляра. Этот параметр действует, если для параметра
replication.failover
установлено значение off.
Доступны следующие режимы:
rw: экземпляр находится в режиме чтения-записи.ro: экземпляр находится в режиме только чтения.
Если значение не указано явно, значение по умолчанию зависит от
количества экземпляров в наборе реплик. Для одного экземпляра
используется режим rw, а для нескольких – режим ro.
Пример
Можно установить для параметра database.mode значение rw на всех
экземплярах в наборе реплик для создания конфигурации
master-master. В этом случае для параметра
replication.failover должно быть установлено значение off.
replication:failover: off
groups:group001:replicasets:replicaset001:instances:instance001:database:mode: rwiproto:listen:- uri: '127.0.0.1:3301'instance002:database:mode: rwiproto:listen:- uri: '127.0.0.1:3302'
credentials:users:replicator:password: 'topsecret'roles: [replication]
iproto:advertise:peer:login: replicator
instance001:database:mode: rwiproto:listen:- uri: '127.0.0.1:3301'instance002:database:mode: rwiproto:listen:- uri: '127.0.0.1:3302'
Тип: string
Значение по умолчанию: [box.NULL](../../reference_lua/box/box_null#box-null) (фактическое значение по
умолчанию зависит от количества экземпляров в наборе реплик)
Переменная окружения: TT_DATABASE_MODE
По умолчанию UUID наборов реплик генерируются автоматически.
database.replicaset_uuid можно использовать для указания
идентификатора набора реплик вручную.
См. также: database.instance_uuid
Тип: string
Значение по умолчанию: [box.NULL](../../reference_lua/box/box_null#box-null)
Переменная окружения: TT_DATABASE_REPLICASET_UUID
Уровень изоляции транзакций.
Тип: string
Значение по умолчанию: best-effort
Возможные значения: best-effort`, `read-committed`, `read-confirmed
Переменная окружения: TT_DATABASE_TXN_ISOLATION
Время ожидания (в секундах), по истечении которого транзакция откатывается.
См. также: box.begin()
Тип: number
Значение по умолчанию: 3153600000 (\~100 лет)
Переменная окружения: TT_DATABASE_TXN_TIMEOUT
Определяет, включен ли менеджер транзакций.
Тип: boolean
Значение по умолчанию: false
Переменная окружения: TT_DATABASE_USE_MVCC_ENGINE
Секция failover определяет параметры, связанные с
контролируемым отказоустойчивым переключением.
- failover.log.to
- failover.log.file
- failover.call_timeout
- failover.connect_timeout
- failover.lease_interval
- failover.probe_interval
- failover.renew_interval
- failover.stateboard.*
Начиная с: 3.3.0
Определяет место, куда Tarantool отправляет журналы отказоустойчивого переключения. Этот параметр принимает следующие значения:
stderr: запись журналов в стандартный поток вывода ошибок.file: запись журналов в файл (см. failover.log.file).
Тип: string
Значение по умолчанию: 'stderr'
Переменная окружения: TT_FAILOVER_LOG_TO
Начиная с: 3.3.0
Указывает файл для записи журналов отказоустойчивого переключения. Чтобы
записывать журналы в файл, задайте значение file для параметра
failover.log.to. В противном
случае failover.log.file игнорируется.
Пример
В примере ниже показано, как записывать журналы отказоустойчивого переключения в файл, расположенный в указанном каталоге:
failover:log:to: filefile: var/log/failover.log
Тип: string
Значение по умолчанию: nil
Переменная окружения: TT_FAILOVER_LOG_FILE
Начиная с: 3.1.0
Время ожидания вызова (в секундах) для запросов мониторинга и отказоустойчивого переключения к экземпляру.
Тип: number
Значение по умолчанию: 1
Переменная окружения: TT_FAILOVER_CALL_TIMEOUT
Начиная с: 3.1.0
Время ожидания подключения (в секундах) для запросов мониторинга и отказоустойчивого переключения к экземпляру.
Тип: number
Значение по умолчанию: 1
Переменная окружения: TT_FAILOVER_CONNECT_TIMEOUT
Начиная с: 3.1.0
Временной интервал (в секундах), определяющий, как долго экземпляр может оставаться лидером без запросов на продление от координатора. По истечении этого интервала лидер переключается в режим только для чтения. Это действие выполняется самим экземпляром и работает даже при отсутствии связи между экземпляром и координатором.
Тип: number
Значение по умолчанию: 30
Переменная окружения: TT_FAILOVER_LEASE_INTERVAL
Начиная с: 3.1.0
Временной интервал (в секундах), определяющий, как часто служба мониторинга координатора отказоустойчивого переключения опрашивает экземпляр для получения его статуса.
Тип: number
Значение по умолчанию: 10
Переменная окружения: TT_FAILOVER_PROBE_INTERVAL
Начиная с: 3.1.0
Временной интервал (в секундах), определяющий, как часто координатор отказоустойчивого переключения отправляет продления срока действия режима чтения-записи.
Тип: number
Значение по умолчанию: 10
Переменная окружения: TT_FAILOVER_RENEW_INTERVAL
Параметры failover.stateboard.* определяют конфигурационные параметры,
связанные с поддержанием состояния координаторов отказоустойчивого
переключения в удаленном хранилище на базе etcd.
- failover.stateboard.keepalive_interval
- failover.stateboard.renew_interval См. также: supervised_failover_overview_fault_tolerance
Начиная с: 3.1.0
Временной интервал (в секундах), определяющий, как долго хранится временная информация о состоянии и как быстро истекает срок действия блокировки.
Тип: number
Значение по умолчанию: 10
Переменная окружения: TT_FAILOVER_STATEBOARD_KEEPALIVE_INTERVAL
Начиная с: 3.1.0
Временной интервал (в секундах), определяющий, как часто координатор отказоустойчивого переключения записывает информацию о своем состоянии в etcd. Этот параметр также определяет частоту, с которой активный координатор считывает новые команды из etcd.
Тип: number
Значение по умолчанию: 2
Переменная окружения: TT_FAILOVER_STATEBOARD_RENEW_INTERVAL
Раздел feedback описывает параметры конфигурации для отправки
информации о работающем экземпляре Tarantool на указанный сервер
обратной связи.
- feedback.crashinfo
- feedback.enabled
- feedback.host
- feedback.interval
- feedback.metrics_collect_interval
- feedback.metrics_limit
- feedback.send_metrics
Определяет, отправлять ли информацию о сбое в случае аварийного завершения работы экземпляра. Эта информация включает:
- Общую информацию из вывода
uname. - Информацию о сборке.
- Причину сбоя.
- Трассировку стека.
Чтобы отключить отправку информации о сбое, задайте значение false для
этого параметра.
Тип: boolean
Значение по умолчанию: true
Переменная окружения: TT_FEEDBACK_CRASHINFO
Определяет, отправлять ли информацию о работающем экземпляре на сервер
обратной связи. Чтобы отключить отправку обратной связи, задайте
значение false для этого параметра.
Тип: boolean
Значение по умолчанию: true
Переменная окружения: TT_FEEDBACK_ENABLED
Адрес, на который отправляется информация.
Тип: string
Значение по умолчанию: <https://feedback.tarantool.io>
Переменная окружения: TT_FEEDBACK_HOST
Интервал (в секундах) отправки информации.
Тип: number
Значение по умолчанию: 3600
Переменная окружения: TT_FEEDBACK_INTERVAL
Интервал (в секундах) сбора метрик.
Тип: number
Значение по умолчанию: 60
Переменная окружения: TT_FEEDBACK_METRICS_COLLECT_INTERVAL
Максимальный объем памяти (в байтах), используемый для хранения метрик перед их отправкой на сервер обратной связи. Если размер собранных метрик превышает это значение, более ранние метрики удаляются.
Тип: integer
Значение по умолчанию: 1024 * 1024 (1048576)
Переменная окружения: TT_FEEDBACK_METRICS_LIMIT
Определяет, отправлять ли метрики на сервер обратной связи. Обратите внимание, что все собранные метрики удаляются после их отправки на сервер обратной связи.
Тип: boolean
Значение по умолчанию: true
Переменная окружения: TT_FEEDBACK_SEND_METRICS
Секция fiber описывает параметры, связанные с настройкой
файберов, передачи управления и кооперативной многозадачности.
- fiber.io_collect_interval
- fiber.too_long_threshold
- fiber.worker_pool_threads
- fiber.slice.*
- fiber.top.*
Время (в секундах), в течение которого файбер находится в состоянии сна между итерациями цикла обработки событий.
Параметр fiber.io_collect_interval можно использовать для снижения
нагрузки на процессор в развертываниях с большим количеством клиентских
подключений, но невысокой частотой запросов (например, когда каждое
подключение отправляет лишь несколько запросов в секунду).
Тип: number
Значение по умолчанию: box.NULL
Переменная окружения: TT_FIBER_IO_COLLECT_INTERVAL
Если обработка запроса занимает больше указанного времени (в секундах), файбер выводит предупреждение об этом в журнал.
Параметр fiber.too_long_threshold действует, только если значение
log.level больше или равно 4
(warn).
Тип: number
Значение по умолчанию: 0.5
Переменная окружения: TT_FIBER_TOO_LONG_THRESHOLD
Максимальное количество потоков, используемых при выполнении определенных внутренних процессов (например, socket.getaddrinfo() и coio_call()).
Тип: number
Значение по умолчанию: 4
Переменная окружения: TT_FIBER_WORKER_POOL_THREADS
В этой секции описаны параметры, связанные с настройкой временных интервалов для срезов файберов. Подробности и примеры см. в fiber.set_max_slice.
Задает временной интервал (в секундах), определяющий предупреждающий срез.
Тип: number
Значение по умолчанию: 0.5
Переменная окружения: TT_FIBER_SLICE_WARN
Задает временной интервал (в секундах), определяющий срез ошибки.
Тип: number
Значение по умолчанию: 1
Переменная окружения: TT_FIBER_SLICE_ERR
В этой секции описаны параметры, связанные с настройкой функции
fiber.top(), которая обычно используется для отладки.
Функция fiber.top() показывает все активные файберы и использование
ими процессора.
Включает или отключает функцию fiber.top().
Включение fiber.top() замедляет переключение файберов примерно на 15%,
поэтому по умолчанию эта функция отключена.
Тип: boolean
Значение по умолчанию: false
Переменная окружения: TT_FIBER_TOP_ENABLED
Раздел flightrec описывает параметры, относящиеся к конфигурации
flight recorder.
- flightrec.enabled
- flightrec.logs_size
- flightrec.logs_max_msg_size
- flightrec.logs_log_level
- flightrec.metrics_period
- flightrec.metrics_interval
- flightrec.requests_size
- flightrec.requests_max_req_size
- flightrec.requests_max_res_size
Включает flight recorder.
Тип: boolean
Значение по умолчанию: false
Переменная окружения: TT_FLIGHTREC_ENABLED
Задает размер (в байтах) хранилища логов. Чтобы отключить хранилище
логов, задайте значение 0 для этого параметра.
Тип: integer
Значение по умолчанию: 10485760
Переменная окружения: TT_FLIGHTREC_LOGS_SIZE
Задает максимальный размер (в байтах) сообщения лога. Если размер сообщения превышает это ограничение, оно усекается.
Тип: integer
Значение по умолчанию: 4096
Максимум: 16384
Переменная окружения: TT_FLIGHTREC_LOGS_MAX_MSG_SIZE
Задает уровень детализации лога. Значение по умолчанию – 6
(VERBOSE). Подробнее об уровнях логирования см. в описании параметра
log_level. Обратите внимание, что значение
flightrec.logs_log_level может отличаться от log_level.
Тип: integer
Значение по умолчанию: 6
Переменная окружения: TT_FLIGHTREC_LOGS_LOG_LEVEL
Задает период времени (в секундах), определяющий, как долго метрики хранятся с момента дампа. Таким образом, это значение определяет, какой объем исторических данных о метриках собирается до момента сбоя. Частота дампов метрик определяется параметром flightrec.metrics_interval.
Тип: integer
Значение по умолчанию: 180
Переменная окружения: TT_FLIGHTREC_METRICS_PERIOD
Задает интервал времени (в секундах), определяющий частоту дампов метрик. Это значение не должно превышать flightrec.metrics_period.
Тип: number
Значение по умолчанию: 1.0
Минимум: 0.001
Переменная окружения: TT_FLIGHTREC_METRICS_INTERVAL
Задает размер (в байтах) хранилища данных запросов и ответов. Чтобы
отключить хранилище запросов и ответов, задайте значение 0 для этого
параметра.
Тип: integer
Значение по умолчанию: 10485760
Переменная окружения: TT_FLIGHTREC_REQUESTS_SIZE
Задает максимальный размер (в байтах) записи запроса. Если размер записи превышает это значение, она усекается.
Тип: integer
Значение по умолчанию: 16384
Переменная окружения: TT_FLIGHTREC_REQUESTS_MAX_REQ_SIZE
Задает максимальный размер (в байтах) записи ответа. Если размер записи превышает это значение, она усекается.
Тип: integer
Значение по умолчанию: 16384
Переменная окружения: TT_FLIGHTREC_REQUESTS_MAX_RES_SIZE
Раздел iproto используется для настройки параметров, связанных с
взаимодействием с экземплярами кластера и между ними.
Массив URI, используемых для прослушивания входящих запросов. При
необходимости для отдельных URI можно включить SSL, задав дополнительные
параметры (
Обратите внимание, что значение URI не может содержать параметры, имя пользователя или пароль.
Пример
В примере ниже параметр iproto.listen задан явно для каждого
экземпляра в кластере:
groups:group001:replicasets:replicaset001:instances:instance001:iproto:listen:- uri: '127.0.0.1:3301'instance002:iproto:listen:- uri: '127.0.0.1:3302'instance003:iproto:listen:- uri: '127.0.0.1:3303'
См. также: Соединения
Тип: array
Значение по умолчанию: nil
Переменная окружения: TT_IPROTO_LISTEN
Для обработки сообщений Tarantool выделяет fibers. Чтобы накладные расходы на fibers не влияли на работу всей системы, Tarantool ограничивает количество сообщений, обрабатываемых fibers, поэтому некоторые ожидающие запросы блокируются.
- На мощных системах увеличьте значение
net_msg_max, и планировщик начнет обрабатывать ожидающие запросы немедленно. - На менее мощных системах уменьшите значение
net_msg_max, и накладные расходы могут снизиться. Однако это может занять некоторое время, так как планировщику необходимо дождаться завершения уже выполняющихся запросов.
При достижении net_msg_max Tarantool приостанавливает обработку
входящих пакетов до тех пор, пока не будут обработаны более ранние
сообщения. Это не прямое ограничение количества fibers, обрабатывающих
сетевые сообщения, а скорее системное ограничение пропускной способности
канала. Оно, в свою очередь, ограничивает количество входящих сетевых
сообщений, которые обрабатывает
поток обработки транзакций, и, следовательно, косвенно
влияет на fibers, обрабатывающие сетевые сообщения.
Тип: integer
Значение по умолчанию: 768
Переменная окружения: TT_IPROTO_NET_MSG_MAX
Размер буфера предчтения, связанного с клиентским соединением. Чем больше буфер, тем больше памяти потребляет активное соединение и тем больше запросов может быть прочитано из буфера операционной системы за один системный вызов.
Рекомендуется убедиться, что буфер может содержать как минимум несколько десятков запросов. Поэтому, если типичный кортеж в запросе имеет большой размер – например, несколько килобайт или даже мегабайт – размер буфера предчтения следует увеличить. Если пакетная обработка запросов не используется, рекомендуется оставить значение по умолчанию.
Тип: integer
Значение по умолчанию: 16320
Переменная окружения: TT_IPROTO_READAHEAD
Количество сетевых потоков. Возможны необычные сценарии
нагрузки, при которых сетевой поток загружен на 100%, а поток обработки
транзакций – нет, и сетевой поток становится узким местом. В таком
случае задайте значение 2 или больше для параметра iproto_threads.
Ядро операционной системы определяет, какое соединение относится к
какому потоку.
Тип: integer
Значение по умолчанию: 1
Переменная окружения: TT_IPROTO_THREADS
- iproto.advertise.client
- iproto.advertise.peer
- iproto.advertise.sharding
- iproto.advertise.<peer_or_sharding>.*
URI, используемый для объявления текущего экземпляра клиентам.
Параметр iproto.advertise.client принимает URI в следующих форматах:
- Адрес:
host:port. - Unix-доменный сокет:
unix/:.
Обратите внимание, что с помощью этого параметра нельзя задать имя пользователя и пароль. Если удаленному клиенту нужна эта информация, она должна быть передана вне конфигурации кластера.
Тип: string
Значение по умолчанию: [box.NULL](../../reference_lua/box/box_null#box-null)
Переменная окружения: TT_IPROTO_ADVERTISE_CLIENT
Настройки, используемые для объявления текущего экземпляра другим членам кластера. Формат этих настроек описан в iproto.advertise.<peer_or_sharding>.*.
Пример
В примере ниже заданы следующие параметры конфигурации:
- В разделе credentials создан
пользователь
replicatorс рольюreplication. - В
iproto.advertise.peerуказано, что другие экземпляры должны подключаться к адресу, заданному в iproto.listen, под пользователемreplicator.
credentials:users:replicator:password: 'topsecret'roles: [replication]iproto:advertise:peer:login: replicatorreplication:failover: electiongroups:group001:replicasets:replicaset001:instances:instance001:iproto:listen:- uri: '127.0.0.1:3301'instance002:iproto:listen:- uri: '127.0.0.1:3302'instance003:iproto:listen:- uri: '127.0.0.1:3303'
Тип: map
Переменная окружения: см. iproto.advertise.<peer_or_sharding>.*
Настройки, используемые для объявления текущего экземпляра роутеру и балансировщику. Формат этих настроек описан в iproto.advertise.<peer_or_sharding>.*.
Пример
В примере ниже заданы следующие параметры конфигурации:
- В разделе credentials созданы
пользователи
replicatorиstorage. - В
iproto.advertise.peerуказано, что другие экземпляры должны подключаться к адресу, заданному в iproto.listen, под пользователемreplicator. - В
iproto.advertise.shardingуказано, что роутер должен подключаться к хранилищам по адресу, заданному в iproto.listen, под пользователемstorage.
credentials:users:replicator:password: 'topsecret'roles: [replication]storage:password: 'secret'roles: [sharding]iproto:advertise:peer:login: replicatorsharding:login: storage
Тип: map
Переменная окружения: см. iproto.advertise.<peer_or_sharding>.*
- iproto.advertise.<peer_or_sharding>.uri
- iproto.advertise.<peer_or_sharding>.login
- iproto.advertise.<peer_or_sharding>.password
- iproto.advertise.<peer_or_sharding>.params
(Необязательный) URI, используемый для объявления текущего экземпляра. По умолчанию для объявления текущего экземпляра используется URI, заданный в iproto.listen.
Тип: string
Значение по умолчанию: nil
Переменные окружения: TT_IPROTO_ADVERTISE_PEER_URI,
TT_IPROTO_ADVERTISE_SHARDING_URI
(Необязательный) Имя пользователя для подключения к текущему экземпляру.
Если имя пользователя не задано, используется пользователь guest.
Тип: string
Значение по умолчанию: nil
Переменные окружения: TT_IPROTO_ADVERTISE_PEER_LOGIN,
TT_IPROTO_ADVERTISE_SHARDING_LOGIN
(Необязательный) Пароль для указанного пользователя. Если задан login,
но пароль отсутствует, он берется из
учетных данных пользователя.
Тип: string
Значение по умолчанию: nil
Переменные окружения: TT_IPROTO_ADVERTISE_PEER_PASSWORD,
TT_IPROTO_ADVERTISE_SHARDING_PASSWORD
(Необязательный) Параметры URI (
Параметры URI, которые можно использовать в параметрах
iproto.listen.<uri>.params и
iproto.advertise.<peer_or_sharding>.params.
.params.transport .params.ssl_ca_file .params.ssl_cert_file .params.ssl_ciphers .params.ssl_key_file .params.ssl_password .params.ssl_password_file
С помощью этого параметра можно включить шифрование трафика для обмена данными между клиентом и сервером по бинарным соединениям. В кластере Tarantool экземпляр может выступать как в роли сервера, принимающего подключения от других экземпляров, так и в роли клиента, подключающегося к другим экземплярам.
Параметр <uri>.params.transport принимает одно из следующих значений:
plain(по умолчанию): отключить шифрование трафика.ssl: шифровать трафик с использованием протокола TLS 1.2 (только для Enterprise Edition).
Пример
В приведенном ниже примере показано, как включить шифрование трафика с использованием самоподписанного сертификата сервера. Для каждого экземпляра заданы следующие параметры:
ssl_cert_file: путь к файлу SSL-сертификата.ssl_key_file: путь к файлу закрытого SSL-ключа.
replicaset001:
Пример на GitHub: ssl_without_ca
Тип: string
Значение по умолчанию: 'plain'
Переменные окружения: TT_IPROTO_ADVERTISE_PEER_PARAMS_TRANSPORT,
TT_IPROTO_ADVERTISE_SHARDING_PARAMS_TRANSPORT
(Необязательный) Путь к файлу доверенных центров сертификации (CA). Если не задан, подлинность узла не проверяется.
Параметр ssl_ca_file может использоваться как на стороне сервера, так
и на стороне клиента:
- На стороне сервера – сервер проверяет клиента.
- На стороне клиента – клиент проверяет сервер.
- При наличии файлов CA на обеих сторонах сервер и клиент проверяют друг друга.
См. также:
Тип: string
Значение по умолчанию: nil
Переменные окружения: TT_IPROTO_ADVERTISE_PEER_PARAMS_SSL_CA_FILE,
TT_IPROTO_ADVERTISE_SHARDING_PARAMS_SSL_CA_FILE
Путь к файлу SSL-сертификата:
- Для сервера – обязателен.
- Для клиента – обязателен, если для сервера задан параметр ssl_ca_file; в противном случае – необязателен.
См. также:
Тип: string
Значение по умолчанию: nil
Переменные окружения: TT_IPROTO_ADVERTISE_PEER_PARAMS_SSL_CERT_FILE,
TT_IPROTO_ADVERTISE_SHARDING_PARAMS_SSL_CERT_FILE
(Необязательный) Разделенный двоеточиями (:) список наборов шифров
SSL, которые могут использоваться для соединения. Обратите внимание, что
список не проверяется на корректность: если набор шифров неизвестен,
Tarantool игнорирует его, не устанавливает соединение и записывает в
журнал, что не найден общий набор шифров.
Поддерживаемые наборы шифров:
- ECDHE-ECDSA-AES256-GCM-SHA384
- ECDHE-RSA-AES256-GCM-SHA384
- DHE-RSA-AES256-GCM-SHA384
- ECDHE-ECDSA-CHACHA20-POLY1305
- ECDHE-RSA-CHACHA20-POLY1305
- DHE-RSA-CHACHA20-POLY1305
- ECDHE-ECDSA-AES128-GCM-SHA256
- ECDHE-RSA-AES128-GCM-SHA256
- DHE-RSA-AES128-GCM-SHA256
- ECDHE-ECDSA-AES256-SHA384
- ECDHE-RSA-AES256-SHA384
- DHE-RSA-AES256-SHA256
- ECDHE-ECDSA-AES128-SHA256
- ECDHE-RSA-AES128-SHA256
- DHE-RSA-AES128-SHA256
- ECDHE-ECDSA-AES256-SHA
- ECDHE-RSA-AES256-SHA
- DHE-RSA-AES256-SHA
- ECDHE-ECDSA-AES128-SHA
- ECDHE-RSA-AES128-SHA
- DHE-RSA-AES128-SHA
- AES256-GCM-SHA384
- AES128-GCM-SHA256
- AES256-SHA256
- AES128-SHA256
- AES256-SHA
- AES128-SHA
- GOST2012-GOST8912-GOST8912
- GOST2001-GOST89-GOST89
Подробную информацию о шифрах SSL и их синтаксисе см. в документации OpenSSL.
См. также:
Тип: string
Значение по умолчанию: nil
Переменные окружения: TT_IPROTO_ADVERTISE_PEER_PARAMS_SSL_CIPHERS,
TT_IPROTO_ADVERTISE_SHARDING_PARAMS_SSL_CIPHERS
Путь к файлу закрытого SSL-ключа:
- Для сервера – обязателен.
- Для клиента – обязателен, если для сервера задан параметр ssl_ca_file; в противном случае – необязателен.
Если закрытый ключ зашифрован, укажите пароль к нему в параметре
ssl_password или ssl_password_file.
См. также:
Тип: string
Значение по умолчанию: nil
Переменные окружения: TT_IPROTO_ADVERTISE_PEER_PARAMS_SSL_KEY_FILE,
TT_IPROTO_ADVERTISE_SHARDING_PARAMS_SSL_KEY_FILE
(Необязательный) Пароль для зашифрованного закрытого SSL-ключа,
заданного с помощью ssl_key_file. Также пароль можно задать в
ssl_password_file.
Параметры ssl_password и ssl_password_file применяются в следующем
порядке:
- Если задан
ssl_password, Tarantool пытается расшифровать закрытый ключ с его помощью. - Если
ssl_passwordневерный или не задан, Tarantool по очереди проверяет все пароли изssl_password_fileв порядке их следования. - Если
ssl_passwordи все пароли изssl_password_fileневерны или ни один из них не задан, Tarantool считает закрытый ключ незашифрованным.
См. также:
Тип: string
Значение по умолчанию: nil
Переменные окружения: TT_IPROTO_ADVERTISE_PEER_PARAMS_SSL_PASSWORD,
TT_IPROTO_ADVERTISE_SHARDING_PARAMS_SSL_PASSWORD
(Необязательный) Текстовый файл с одним или несколькими паролями для
зашифрованных закрытых SSL-ключей, заданных с помощью ssl_key_file (по
одному на каждой строке). Также пароль можно задать в ssl_password.
См. также:
Тип: string
Значение по умолчанию: nil
Переменные окружения: TT_IPROTO_ADVERTISE_PEER_PARAMS_SSL_PASSWORD_FILE, TT_IPROTO_ADVERTISE_SHARDING_PARAMS_SSL_PASSWORD_FILE
В секции groups можно определить
полную топологию кластера Tarantool.
Имя группы.
К именам групп применяются следующие правила:
- Максимальное количество символов – 63.
- Должно начинаться с буквы.
- Может содержать строчные буквы (a-z).
- Может содержать цифры (0-9).
- Может содержать следующие символы:
-,_.
Наборы реплик, входящие в эту группу. См. replicasets.
Любой параметр конфигурации, который можно определить в области видимости группы. Например, параметры конфигурации iproto и database, заданные на уровне группы, применяются ко всем экземплярам в этой группе.
- replicasets.<replicaset_name>
- replicasets.<replicaset_name>.leader
- replicasets.<replicaset_name>.bootstrap_leader
- replicasets.<replicaset_name>.instances
- replicasets.<replicaset_name>.<config_parameter>
Имя набора реплик.
Правила для имен наборов реплик такие же, как для групп. Подробнее см. groups.<group_name>.
Лидер набора реплик. С помощью этого параметра можно задать лидера
набора реплик при использовании manual
replication.failover.
Для выполнения
контролируемого переключения параметр
<replicaset_name>.leader можно временно удалить или задать значение
null.
Пример
replication:failover: manualgroups:group001:replicasets:replicaset001:leader: instance001instances:instance001:iproto:listen:- uri: '127.0.0.1:3301'instance002:iproto:listen:- uri: '127.0.0.1:3302'instance003:iproto:listen:- uri: '127.0.0.1:3303'
Лидер начальной загрузки для набора реплик. Чтобы указать лидера
начальной загрузки вручную, задайте значение config для параметра
replication.bootstrap_strategy.
Пример
groups:group001:replicasets:replicaset001:replication:bootstrap_strategy: configbootstrap_leader: instance001instances:instance001:iproto:listen:- uri: '127.0.0.1:3301'instance002:iproto:listen:- uri: '127.0.0.1:3302'instance003:iproto:listen:- uri: '127.0.0.1:3303'
Экземпляры, входящие в этот набор реплик. См. instances.
Любой параметр конфигурации, который можно определить в области видимости набора реплик. Например, параметры конфигурации iproto и database, заданные на уровне набора реплик, применяются ко всем экземплярам в этом наборе реплик.
Имя экземпляра.
Обратите внимание, что правила для имени экземпляра те же, что и для групп. Подробнее см. groups.<group_name>.
Любой параметр конфигурации, который можно определить в области видимости экземпляра. Например, параметры конфигурации iproto и database, заданные на уровне экземпляра, применяются только к этому экземпляру.
изолированный режим –––
Начиная с версии 3.3.0,
в конфигурацию экземпляра добавлен новый параметр isolated.
Параметр принимает логические значения, по умолчанию – false.
Значение isolated: true переводит экземпляр, к которому оно применено,
в изолированный режим.
Изолированный режим предназначен для временной изоляции экземпляра и выполнения работ по обслуживанию.
В изолированном режиме:
- Экземпляр переводится в режим чтения
- iproto прекращает прослушивание новых соединений
- iproto разрывает все текущие соединения
- Экземпляр отключается от всех источников репликации
- Другие участники набора реплик исключают изолированный экземпляр из источников репликации
Пример
Ниже показано, как изолировать экземпляр:
groups:g:replicasets:r:instances:i-001: {}i-002: {}i-003: {}i-004:isolated: true
В разделе labels можно добавлять пользовательские атрибуты в
конфигурацию. Атрибуты должны представлять собой пары key: value со
строковыми ключами и значениями.
Значение метки с указанным именем.
Пример
В примере ниже показано, как задать метки на уровнях набора реплик и экземпляра:
labels:dc: 'east'production: 'false'
См. также: configuration_labels
Раздел log определяет параметры конфигурации, связанные с
логированием. Для работы с логированием в приложении используйте
модуль log.
Определяет место, куда Tarantool отправляет логи. Этот параметр принимает следующие значения:
stderr: запись логов в стандартный поток вывода ошибок.file: запись логов в файл (см. log.file).pipe: запуск программы и запись логов в её стандартный ввод (см. log.pipe).syslog: запись логов в системный журнал (см. log.syslog.*).
Тип: string
Значение по умолчанию: 'stderr'
Переменная окружения: TT_LOG_TO
Указывает файл для записи логов. Чтобы записывать логи в файл, задайте
параметру log.to значение file. В
противном случае log.file игнорируется.
Пример
В примере ниже показано, как записывать логи в файл, расположенный в указанном каталоге:
log:to: filefile: var/log/{{ instance_name }}/instance.log
Пример на GitHub: log_file
Тип: string
Значение по умолчанию: 'var/log/{{ instance_name }}/tarantool.log'
Переменная окружения: TT_LOG_FILE
Указывает формат записи лога. Поддерживаются следующие форматы:
-
plain: запись лога форматируется как простой текст. Пример:2024-04-09 11:00:10.369 [12089] main/104/interactive I> log level 5 (INFO) -
json: запись лога форматируется как JSON и включает дополнительные поля. Пример:{"time": "2024-04-09T11:00:57.174+0300","level": "INFO","message": "log level 5 (INFO)","pid": 12160,"cord_name": "main","fiber_id": 104,"fiber_name": "interactive","file": "src/main.cc","line": 498}
Тип: string
Значение по умолчанию: 'plain'
Переменная окружения: TT_LOG_FORMAT
Указывает уровень детализации логов. Предусмотрены следующие уровни:
- 0 –
fatal - 1 –
syserror - 2 –
error - 3 –
crit - 4 –
warn - 5 –
info - 6 –
verbose - 7 –
debug
Задавая log.level, можно включить логирование всех событий с уровнем
важности выше или равным указанному.
Пример
В примере ниже показано, как логировать все события с уровнем важности
VERBOSE и выше.
log:level: 'verbose'
Пример на GitHub: log_level
Тип: number, string
Значение по умолчанию: 5
Переменная окружения: TT_LOG_LEVEL
Настройка указанных уровней логирования (log.level) для различных модулей.
Уровень логирования можно задать для следующих типов модулей:
- Модули (файлы), использующие логгер по умолчанию. Пример: Настройка уровней логирования для файлов, использующих логгер по умолчанию.
- Модули, использующие пользовательские логгеры, созданные с помощью функции log.new(). Пример: Настройка уровней логирования для модулей, использующих пользовательские логгеры.
- Модуль
tarantool, с помощью которого настраивается уровень логирования для сообщений ядра Tarantool. В частности, с его помощью настраивается уровень логирования для сообщений, записываемых из кода, не написанного на Lua, включая модули на C. Пример: Настройка уровня логирования для модулей на C.
Пример 1: Настройка уровней логирования для файлов, использующих логгер по умолчанию
Предположим, есть два одинаковых модуля, расположенных по следующим
путям: test/module1.lua и test/module2.lua. Эти модули используют
логгер по умолчанию и выглядят следующим образом:
return {say_hello = function()local log = require('log')log.info('Info message from module1')end}
Для настройки уровней логирования необходимо указать имена модулей, соответствующие путям к этим модулям:
log:modules:test.module1: 'verbose'test.module2: 'error'app:file: 'app.lua'
Чтобы загрузить эти модули в приложении (app.lua), необходимо добавить
соответствующие директивы require:
Поскольку для module1 задан уровень логирования verbose, а для
module2 – error, вызов module1.say_hello() выведет сообщение, а
module2.say_hello() будет подавлен:
Пример на GitHub: log_existing_modules
Пример 2: Настройка уровней логирования для модулей, использующих пользовательские логгеры
В этом примере показано, как задать уровень verbose для module1 и
уровень error для module2:
log:modules:module1: 'verbose'module2: 'error'app:file: 'app.lua'
Для создания пользовательских логгеров в приложении (app.lua) вызовите
функцию log.new():
Поскольку для module1 задан уровень логирования verbose, а для
module2 – error, вызов module1_log.info() выведет сообщение, а
module2_log.info() будет подавлен:
Пример на GitHub: log_new_modules
Пример 3: Настройка уровня логирования для модулей на C
В этом примере показано, как задать уровень info для модуля
tarantool:
log:modules:tarantool: 'info'app:file: 'app.lua'
Указанный уровень влияет на сообщения, записываемые из модулей на C:
ffi = require('ffi')-- Prints 'info' messages --ffi.C._say(ffi.C.S_INFO, nil, 0, nil, 'Info message from C module')--[[[6024] main/103/interactive I> Info message from C module---...--]]-- Swallows 'debug' messages --ffi.C._say(ffi.C.S_DEBUG, nil, 0, nil, 'Debug message from C module')--[[---...--]]
В примере выше используется библиотека LuaJIT
ffi для вызова функций на C,
предоставляемых модулем say.
Пример на GitHub: log_existing_c_modules
Тип: map
Значение по умолчанию: [box.NULL](../../reference_lua/box/box_null#box-null)
Переменная окружения: TT_LOG_MODULES
Определяет поведение при логировании, если система не готова к записи.
Если установлено значение true, Tarantool не блокируется при
логировании, если система недоступна для записи, и вместо этого выводит
сообщение. Использование этого значения может повысить
производительность логирования ценой потери некоторых сообщений лога.
Тип: boolean
Значение по умолчанию: false
Переменная окружения: TT_LOG_NONBLOCK
Запускает программу и записывает логи в её стандартный ввод (stdin).
Чтобы отправлять логи в стандартный ввод программы, задайте параметру
log.to значение pipe.
Пример
В примере ниже Tarantool записывает логи в стандартный ввод программы
cronolog:
log:to: pipepipe: 'cronolog tarantool.log'
Пример на GitHub: log_pipe
Тип: string
Значение по умолчанию: [box.NULL](../../reference_lua/box/box_null#box-null)
Переменная окружения: TT_LOG_PIPE
Указывает средство syslog (facility), используемое при включенном
syslog. Чтобы записывать логи в syslog, задайте параметру
log.to значение syslog.
Тип: string
Возможные значения: 'auth', 'authpriv', 'cron', 'daemon',
'ftp', 'kern', 'lpr', 'mail', 'news', 'security',
'syslog', 'user', 'uucp', 'local0', 'local1', 'local2',
'local3', 'local4', 'local5', 'local6', 'local7'
Значение по умолчанию: 'local7'
Переменная окружения: TT_LOG_SYSLOG_FACILITY
Указывает имя приложения, используемое для идентификации сообщений
Tarantool в логах syslog. Чтобы записывать логи в syslog, задайте
параметру log.to значение syslog.
Тип: string
Значение по умолчанию: 'tarantool'
Переменная окружения: TT_LOG_SYSLOG_IDENTITY
Указывает расположение сервера syslog. Этот параметр принимает одно из следующих значений:
- IPv4-адрес. Пример:
127.0.0.1:514. - Путь к Unix-сокету, начинающийся с
unix:. Примеры:unix:/dev/logна Linux илиunix:/var/run/syslogна macOS.
Чтобы записывать логи в syslog, задайте параметру
log.to значение syslog.
Пример
В примере ниже Tarantool записывает логи на сервер syslog, ожидающий
сообщения логирования на адресе 127.0.0.1:514:
log:to: syslogsyslog:server: '127.0.0.1:514'
Пример на GitHub: log_syslog
Тип: string
Значение по умолчанию: box.NULL
Переменная окружения: TT_LOG_SYSLOG_SERVER
Раздел lua описывает параметры конфигурации, относящиеся к среде Lua в
Tarantool.
Задает максимальный объем памяти, доступный для Lua-скриптов, в байтах.
Если указанное значение превышает текущее использование памяти, новый лимит вступает в силу немедленно без перезапуска. Однако если указанное значение меньше текущего использования памяти, для применения изменения требуется перезапуск экземпляра.
Пример установки лимита памяти Lua в 4 ГБ:
lua:memory: 4294967296
Тип: integer
Значение по умолчанию: 2147483648 (2 ГБ)
Переменная окружения: TT_LUA_MEMORY
Раздел memtx используется для настройки параметров, связанных с
механизмом memtx.
- memtx.allocator
- memtx.max_tuple_size
- memtx.memory
- memtx.min_tuple_size
- memtx.slab_alloc_factor
- memtx.slab_alloc_granularity
- memtx.sort_threads
Указывает аллокатор, управляющий памятью для кортежей memtx. Возможные
значения:
system– память выделяется по мере необходимости с проверкой, что квота не превышена. Аллокатор основан на функцииmalloc.small– slab-аллокатор. Аллокатор многократно использует блок памяти для размещения объектов одного типа. Обратите внимание, что этот аллокатор подвержен неисправимой фрагментации при определенных нагрузках, поэтому в таких случаях можно переключиться наsystem.
Тип: string
Значение по умолчанию: 'small'
Переменная окружения: TT_MEMTX_ALLOCATOR
Размер наибольшей единицы выделения памяти для механизма хранения memtx в байтах. Значение может быть увеличено, если необходимо хранить большие кортежи.
Тип: integer
Значение по умолчанию: 1048576
Переменная окружения: TT_MEMTX_MAX_TUPLE_SIZE
Объем памяти в байтах, выделяемый Tarantool для хранения кортежей. При
достижении лимита запросы INSERT и
UPDATE завершаются с ошибкой
ER_MEMORY_ISSUE. Сервер не выходит
за пределы лимита memtx.memory при выделении памяти под кортежи,
однако дополнительная память используется для хранения индексов и
информации о соединениях.
Пример
В примере ниже размер памяти установлен равным 1 ГБ (1073741824 байт).
memtx:memory: 1073741824
Тип: integer
Значение по умолчанию: 268435456
Переменная окружения: TT_MEMTX_MEMORY
Размер наименьшей единицы выделения памяти в байтах. Значение может быть уменьшено, если большинство кортежей очень маленькие.
Тип: integer
Значение по умолчанию: 16
Возможные значения: от 8 до 1048280 включительно
Переменная окружения: TT_MEMTX_MIN_TUPLE_SIZE
Множитель для вычисления размеров блоков памяти, в которых хранятся кортежи. Меньшее значение может привести к меньшим потерям памяти в зависимости от общего объема доступной памяти и распределения размеров элементов.
См. также: memtx.slab_alloc_granularity
Тип: number
Значение по умолчанию: 1.05
Возможные значения: от 1 до 2 включительно
Переменная окружения: TT_MEMTX_SLAB_ALLOC_FACTOR
Указывает гранулярность выделения памяти в байтах в
small-аллокаторе. Значение
memtx.slab_alloc_granularity должно соответствовать следующим
условиям:
- Значение является степенью двойки.
- Значение больше или равно 4.
Ниже приведены несколько рекомендаций по настройке параметра
memtx.slab_alloc_granularity:
- Если кортежи в спейсе маленькие и имеют примерно одинаковый размер, установите значение параметра равным 4 байтам для экономии памяти.
- Если кортежи имеют разные размеры, увеличьте значение параметра, чтобы
выделять кортежи из одного
mempool(пула памяти).
См. также: memtx.slab_alloc_factor
Тип: integer
Значение по умолчанию: 8
Переменная окружения: TT_MEMTX_SLAB_ALLOC_GRANULARITY
Количество потоков из пула потоков,
используемых для сортировки ключей вторичных индексов при загрузке базы
данных memtx. Минимальное значение – 1, максимальное значение –
256. По умолчанию используются все доступные ядра.
Тип: integer
Значение по умолчанию: box.NULL
Переменная окружения: TT_MEMTX_SORT_THREADS
Раздел metrics определяет параметры конфигурации для
метрик.
Массив, содержащий метрики, которые нужно отключить. Массив может
содержать те же значения, что и параметр конфигурации exclude,
передаваемый в metrics.cfg().
Пример
metrics:include: [ all ]exclude: [ vinyl ]labels:alias: '{{ instance_name }}'
Тип: массив
По умолчанию: ````
Переменная окружения: TT_METRICS_EXCLUDE
Массив, содержащий метрики, которые нужно включить. Массив может
содержать те же значения, что и параметр конфигурации include,
передаваемый в metrics.cfg().
Тип: массив
По умолчанию: [ all ]
Переменная окружения: TT_METRICS_INCLUDE
Глобальные метки, добавляемые к каждому наблюдению.
Тип: map
По умолчанию: { alias = names.instance_name }
Переменная окружения: TT_METRICS_LABELS
Секция process определяет параметры конфигурации процесса Tarantool в
системе.
- process.background
- process.coredump
- process.title
- process.pid_file
- process.strip_core
- process.username
- process.work_dir
Запуск сервера в качестве демона.
Если для этого параметра установлено значение true, расположение
журнала Tarantool, заданное параметром
log.to, должно быть установлено в
file, pipe или syslog --- любое значение, кроме stderr (по
умолчанию), так как процесс-демон отсоединяется от терминала и не может
писать в stderr терминала.
Тип: boolean
По умолчанию: false
Переменная окружения: TT_PROCESS_BACKGROUND
Создание файлов core dump.
Обычно администратору необходимо выполнить ulimit -c unlimited (или
задать соответствующие параметры в unit-файле systemd) перед запуском
процесса Tarantool для получения core dump. Если параметр
process.coredump включен, Tarantool устанавливает соответствующее
ограничение ресурса самостоятельно, и администратору не нужно выполнять
ulimit -c unlimited (см. man 3
setrlimit).
Этот параметр также устанавливает состояние атрибута dumpable, который
включен по умолчанию, но может быть сброшен при определённых
обстоятельствах (согласно man 2
prctl, см.
PR_SET_DUMPABLE).
Тип: boolean
По умолчанию: false
Переменная окружения: TT_PROCESS_COREDUMP
Добавление указанной строки к заголовку процесса сервера (отображается в
колонке COMMAND для команд Linux ps -ef и top -c).
Например, если задать для параметра значение
myservice - {{ instance_name }}:
process:title: myservice - {{ instance_name }}
Команда ps -ef может показать процесс
сервера Tarantool следующим образом:
$ ps -ef | grep tarantool503 68100 68098 0 10:33 pts/2 00:00.10 tarantool <running>: myservice instance1
Тип: string
По умолчанию: 'tarantool - {{ instance_name }}'
Переменная окружения: TT_PROCESS_TITLE
Сохранение идентификатора процесса в указанном файле.
Этот параметр может содержать относительный путь к файлу. В этом случае он интерпретируется относительно process.work_dir.
Тип: string
По умолчанию: 'var/run/{{ instance_name }}/tarantool.pid'
Переменная окружения: TT_PROCESS_PID_FILE
Определяет, должны ли файлы core dump исключать память, выделенную для
кортежей, --- эта память может быть большой при высокой нагрузке на
Tarantool. Значение true означает «не включать».
Тип: boolean
По умолчанию: true
Переменная окружения: TT_PROCESS_STRIP_CORE
Имя системного пользователя, на которого переключается процесс после запуска.
Тип: string
По умолчанию: box.NULL
Переменная окружения: TT_PROCESS_USERNAME
Каталог для хранения рабочих файлов Tarantool (файлов базы данных,
журналов, PID-файла, Unix-сокета консоли и других файлов, если
приложение создаёт их в текущем каталоге). Экземпляр сервера
переключается в process.work_dir с помощью
chdir(2) после запуска.
Если задан как относительный путь, он отсчитывается от текущего рабочего каталога, из которого запускается Tarantool. Если не указан, используется текущий рабочий каталог.
Другие параметры каталогов и файлов, если они заданы как относительные
пути, интерпретируются относительно process.work_dir, например,
каталоги для хранения
снапшотов и журналов предзаписи.
Тип: string
По умолчанию: box.NULL
Переменная окружения: TT_PROCESS_WORK_DIR
Раздел replication определяет параметры конфигурации, связанные с
репликацией.
- replication.anon
- replication.autoexpel
- replication.anon
- replication.bootstrap_strategy
- replication.connect_timeout
- replication.election_mode
- replication.election_timeout
- replication.election_fencing_mode
- replication.failover
- replication.peers
- replication.skip_conflict
- replication.sync_lag
- replication.sync_timeout
- replication.synchro_queue_max_size
- replication.synchro_quorum
- replication.synchro_timeout
- replication.threads
- replication.timeout
Определяет, будет ли текущий экземпляр работать как анонимная реплика. Анонимные реплики доступны только для чтения и могут использоваться, например, для резервного копирования.
Чтобы указанный экземпляр работал как анонимная реплика, задайте
параметру replication.anon значение true:
instance003:replication:anon: true
Полный пример доступен на GitHub: anonymous_replica.
Анонимные реплики не отображаются в разделе box.info.replication. Проверить их статус можно с помощью box.info.replication_anon().
Хотя анонимные реплики доступны только для чтения, записывать данные
можно в локальные для репликации и временные спейсы
(созданные с is_local = true и
temporary = true соответственно). Поскольку изменения в локальных для
репликации спейсах разрешены, анонимная реплика может увеличить
компонент 0 значения vclock.
Ниже приведены ограничения при наличии анонимных реплик в наборе реплик:
- Набор реплик должен содержать как минимум один неанонимный экземпляр.
- Анонимную реплику нельзя настроить как экземпляр для записи, задав
параметру database.mode
значение
rwили сделав ее лидером с помощью replicasets.<replicaset_name>.leader. - Если для параметра
replication.failover
задано значение
election, для анонимной реплики можно задать только значениеoffдля параметра replication.election_mode. - Если для параметра
replication.failover
задано значение
supervised, внешний координатор отказоустойчивости не учитывает анонимные реплики при выборе лидера для начальной загрузки или набора реплик.
Тип: boolean
Значение по умолчанию: false
Переменная окружения: TT_REPLICATION_ANON
Начиная с: 3.3.0
Параметр replication.autoexpel предназначен для управления
динамическими кластерами с использованием конфигураций на основе YAML.
Он включает автоматическое исключение экземпляров, удаленных из
конфигурации YAML.
К исключению рассматриваются только экземпляры с именами, соответствующими заданному префиксу; все остальные исключаются из рассмотрения. Кроме того, экземпляры без постоянного имени игнорируются.
Если экземпляр находится в режиме чтения-записи и имеет последнюю версию схемы базы данных, он инициирует исключение экземпляров, которые:
- Соответствуют заданному префиксу
- Отсутствуют в обновленной конфигурации YAML
Процесс исключения следует стандартной процедуре, включающей удаление
экземпляра из системного спейса _cluster.
Логика autoexpel активируется при определенных событиях:
- Запуск. При запуске кластера
autoexpelпроверяет и удаляет экземпляры, не соответствующие обновленной конфигурации. - Переконфигурация. При перезагрузке конфигурации YAML
autoexpelсравнивает текущее состояние с обновленной конфигурацией и выполняет необходимые исключения. - Событие ``box.status`` watcher. Изменения, обнаруженные
наблюдателем (watcher)
box.status, также запускают механизмautoexpel.
autoexpel не выполняет никаких действий над новыми присоединившимися
экземплярами, пока не произойдет одно из инициирующих событий. Это
означает, что экземпляр, соответствующий критерию autoexpel, может
присоединиться к кластеру, но может быть удален позже во время
переконфигурации или при последующих инициирующих событиях.
Поля конфигурации
by(строка, по умолчанию:nil): задает критерийautoexpel. В настоящее время поддерживается толькоprefix, и его необходимо задавать явно.enabled(логическое значение, по умолчанию:false): включает или отключает логикуautoexpel.prefix(строка, по умолчанию:nil): определяет шаблон для имен экземпляров, которые считаются частью кластера.
Назначение replication.autoexpel_by --- определить критерий, используемый для определения того, какие экземпляры в кластере подлежат процессу autoexpel.
Поле by помогает различать:
- Экземпляры, которые являются частью кластера и должны соответствовать конфигурации YAML.
- Экземпляры или инструменты (например, инструменты CDC), которые используют канал репликации, но не являются частью конфигурации кластера.
Значение by по умолчанию – nil, это означает, что критерий
autoexpel не применяется, если не задан явно.
В настоящее время единственное поддерживаемое значение для by –
prefix. Значение prefix указывает системе идентифицировать
экземпляры по их именам, сопоставляя их с шаблоном префикса, заданным
в конфигурации.
Если функция autoexpel включена (enabled: true), полю by
необходимо явно задать значение prefix.
Отсутствие этого поля или использование неподдерживаемого значения приведет к ошибкам конфигурации.
replication:autoexpel:enabled: trueby: prefixprefix: '{{ replicaset_name }}'
Тип: string
Значение по умолчанию: nil
Переменная окружения: TT_REPLICATION_AUTOEXPEL_BY
Поле replication.autoexpel_enabled --- это логический параметр конфигурации, определяющий, активна ли логика autoexpel для кластера.
: Эта функция предназначена для автоматического управления динамическими конфигурациями кластера путем удаления экземпляров, которые больше не присутствуют в конфигурации YAML.
Поле prefix фильтрует экземпляры для исключения, различая экземпляры
кластера (из конфигурации YAML) и внешние сервисы (например, инструменты
CDC). Рассматриваются только экземпляры, соответствующие префиксу.
Единообразный шаблон именования гарантирует, что системный спейс
_cluster будет автоматически синхронизироваться с конфигурацией YAML.
Если поле prefix не задано (nil), логика autoexpel не сможет идентифицировать экземпляры для исключения, и функция не будет работать.
: Это поле обязательно, если для параметра
replication.autoexpel_enabled задано значение true.
Как это работает:
- Префикс фильтрует имена экземпляров (например,
{{ replicaset_name }}для имен, специфичных для набора реплик, илиi-для имен, начинающихся сi-). - Экземпляры, соответствующие префиксу и удаленные из конфигурации YAML, исключаются.
3. Безымянные экземпляры или те, что не соответствуют префиксу, игнорируются.
Динамический префикс на основе имени набора реплик:
replication:autoexpel:enabled: trueby: prefixprefix: '{{ replicaset_name }}'
В этой конфигурации:
-
Экземпляры группируются по именам наборов реплик (например,
r-001-i-001длянабора реплик r-001). -
Префикс гарантирует, что при удалении из конфигурации автоматически исключаются только те экземпляры, имена которых соответствуют имени набора реплик.
Статический префикс для сопоставления шаблонов:
replication:autoexpel:enabled: trueby: prefixprefix: 'i-'В этой конфигурации:
-
Все экземпляры с именами, начинающимися на
i-(например,i-001,i-002), рассматриваются для исключения. -
Это полезно, когда экземпляры следуют единой схеме именования.
Тип: string
Значение по умолчанию: nil
Переменная окружения: TT_REPLICATION_AUTOEXPEL_PREFIX
Создайте файл `config.yaml` со следующим содержимым:
: ``` yamlcredentials:users:guest:roles: [super]replication:failover: manualautoexpel:enabled: trueby: prefixprefix: '{{ replicaset_name }}'iproto:listen:- uri: 'unix/:./var/run/{{ instance_name }}.iproto'groups:g-001:replicasets:r-001:leader: r-001-i-001instances:r-001-i-001: {}r-001-i-002: {}r-001-i-003: {}```This configuration:- Sets up authentication with a guest user assigned the superrole.- Enables the `autoexpel` option to automatically expelinstances not present in the YAML file.- Defines instance names based on a prefix pattern:`{{ replicaset_name }}`.- Lists three instances: `r-001-i-001`, `r-001-i-002`, and`r-001-i-003`.2. Open terminal window and start three instances using thefollowing commands:``` luatarantool –name r-001-i-001 –config config.yaml -i`````` luatarantool –name r-001-i-002 –config config.yaml -i`````` luatarantool –name r-001-i-003 –config config.yaml -i```3. Edit `config.yaml` and remove the following entry for`r-001-i-003`:``` luar-001-i-003: {}```The updated `config.yaml` should look like this:``` yamlgroups:g-001:replicasets:r-001:leader: r-001-i-001instances:r-001-i-001: {}r-001-i-002: {}```Save the file.4. For the leader instance (`r-001-i-001`), check the`_cluster` space:hint::: titleHintThe `_cluster` system space in Tarantool stores metadata aboutall instances currently recognized as part of the cluster. Itshows which instances are registered and active.You should see `r-001-i-003` still listed in the `_cluster`system space.5. Reload the configuration:``` luaconfig = require('config')config:reload()```6. Verify the changes:``` luabox.space._cluster:fselect()```After the reload, `r-001-i-003` should no longer appear in the`_cluster` system space.
Задает стратегию, используемую для начальной загрузки набора реплик. Доступны следующие стратегии:
-
auto: узел не загружается, если не подключена половина или более других узлов в наборе реплик. Например, если набор реплик содержит 2 или 3 узла, узлу требуется 2 подключенных экземпляра. В случае 4 или 5 узлов требуется как минимум 3 подключенных экземпляра. Более того, лидер начальной загрузки не сможет загрузиться, если каждый подключенный узел не выбрал его лидером начальной загрузки. -
config: для начальной загрузки набора реплик используется указанный узел. Чтобы указать лидера начальной загрузки, используйте параметр replicasets.<replicaset_name>.bootstrap_leader. -
supervised: лидер начальной загрузки не выбирается автоматически, а должен быть назначен с помощью box.ctl.make_bootstrap_leader() на нужном узле. Управление лидером начальной загрузки является ответственностью пользователя, если только для параметра replication.failover не задано значениеsupervised. В этом случае управление лидером начальной загрузки осуществляет координатор отказоустойчивости. -
native(начиная с 3.4.0): лидер начальной загрузки управляется на уровне конфигурации YAML синхронно с управлением режимом чтения/записи. С точки зрения пользователя эта стратегия похожа наauto: Tarantool или координатор отказоустойчивости выполняет начальную загрузку автоматически. Внутреннеnativeоснована наsupervised, что позволяет избежать ограниченийauto, таких как требование к подключаемой реплике подключиться ко всем экземплярам, зарегистрированным в системном спейсе_cluster.При инициализации набора реплик
nativeиспользует box.ctl.make_bootstrap_leader({graceful . После начальной загрузки, когда экземпляр переключается в режим чтения-записи,nativeиспользует box.ctl.make_bootstrap_leader(), чтобы запись о лидере начальной загрузки указывала на текущий экземпляр с доступом на запись. Экземпляр, выбранный для инициализации набора реплик, зависит от replication.failover:off: первый экземпляр с доступом на запись в лексикографическом порядке.manual: экземпляр, настроенный как лидер набора реплик.election: первый неанонимный кандидат в лексикографическом порядке.supervised: координатор отказоустойчивости выбирает лидера начальной загрузки.
-
legacy(устарело с 2.11.0): узлу требуется подключение replication_connect_quorum числа других узлов. Этот параметр добавлен для сохранения совместимости с текущими версиями Cartridge и может быть удален в будущем.
Тип: string
Значение по умолчанию: auto
Переменная окружения: TT_REPLICATION_BOOTSTRAP_STRATEGY
Время ожидания (в секундах), в течение которого реплика ожидает подключения к мастеру в кластере. Подробнее см. в разделе статус orphan.
Этот параметр отличается от replication.timeout, который используется мастером для отключения реплики, если мастер не получает подтверждений сообщений heartbeat.
Тип: number
Значение по умолчанию: 30
Переменная окружения: TT_REPLICATION_CONNECT_TIMEOUT
Роль узла набора реплик в процессе выбора лидера.
Возможные значения:
off: узел не участвует в выборах.voter: узел может участвовать в процессе выборов, но не может быть лидером.candidate: узел может стать лидером.manual: позволяет явно контролировать, какой экземпляр является лидером, вместо полагания на автоматический выбор лидера. По умолчанию экземпляр действует как избиратель (voter) --- он доступен только для чтения и может голосовать за другие экземпляры-кандидаты. Как только вызывается box.ctl.promote(), экземпляр становится кандидатом и начинает новый раунд выборов. Если экземпляр выигрывает выборы, он становится лидером, но не будет участвовать в новых выборах.
Тип: string
Значение по умолчанию: [box.NULL](../../reference_lua/box/box_null#box-null) (фактическое значение по умолчанию
зависит от
replication.failover)
Переменная окружения: TT_REPLICATION_ELECTION_MODE
Задает время ожидания (в секундах) между раундами выборов в процессе выбора лидера, если предыдущий раунд завершился разделением голосов.
Это значение довольно велико, и в большинстве случаев его можно снизить до 300-400 мс.
Чтобы избежать повторного разделения голосов, время ожидания на каждом узле рандомизируется при каждом новом голосовании от 100% до 110% от исходного значения времени ожидания. Например, если время ожидания составляет 300 мс и 3 узла начинают выборы одновременно в одном и том же термине, они могут установить время ожидания выборов равным 300, 310 и 320 соответственно, или 305, 302 и 324 и так далее. Таким образом, голоса никогда не будут разделены, так как выборы на разных узлах не будут перезапущены одновременно.
Тип: number
Значение по умолчанию: 5
Переменная окружения: TT_REPLICATION_ELECTION_TIMEOUT
Задает режим ограждения лидера, который
влияет на процесс выборов лидера. Если для параметра задано значение
soft или strict, лидер слагает с себя полномочия, если у него меньше
replication.synchro_quorum
активных подключений к узлам кластера. Слагающий с себя полномочия лидер
получает статус ведомого (follower) в текущем терме выборов и переходит
в режим только для чтения.
- В режиме
softсоединение считается неработающим, если нет ответов в течение 4 * replication.timeout секунд как от текущего лидера, так и от ведомых. - В режиме
strictсоединение считается неработающим, если нет ответов в течение 2 * replication.timeout секунд от текущего лидера и 4 * replication.timeout секунд от ведомых. Это повышает шансы того, что в любой момент времени будет только один лидер.
Ограждение применяется к экземплярам, для которых параметр
replication.election_mode
имеет значение candidate или manual. Чтобы отключить ограждение
лидера, задайте для параметра election_fencing_mode значение off.
Тип: string
Значение по умолчанию: soft
Possible values: off`, `soft`, `strict
Переменная окружения: TT_REPLICATION_ELECTION_FENCING_MODE
Режим отказоустойчивости, используемый для перехвата роли мастера при сбое текущего мастер-экземпляра. Доступны следующие режимы:
-
off. Лидерство в наборе реплик управляется с помощью параметра database.mode. В этом случае можно задать параметруdatabase.modeзначениеrwна всех экземплярах в наборе реплик для создания конфигурации мастер-мастер.Значение
database.modeпо умолчанию определяется следующим образом:rw, если в наборе реплик один экземпляр;ro, если экземпляров несколько. -
manual. Лидерство в наборе реплик управляется с помощью параметра replicasets.<replicaset_name>.leader. В этом случае конфигурация мастер-мастер запрещена.В режиме
manualпараметр database.mode не может быть задан явно. Лидер настроен в режиме чтения-записи, все остальные экземпляры доступны только для чтения. -
election. Для управления лидерством в наборе реплик используется автоматический выбор лидера.В режиме
electionпараметры database.mode и replicasets.<replicaset_name>.leader не следует задавать явно. -
supervised(только Enterprise Edition). Лидерство в наборе реплик управляется с помощью внешнего координатора отказоустойчивости.В режиме
supervisedпараметры database.mode и replicasets.<replicaset_name>.leader не следует задавать явно.
См. также: Руководства по репликации
Пример
В приведенном ниже примере заданы следующие параметры конфигурации:
- В разделе credentials создается
пользователь
replicatorс рольюreplication. - iproto.advertise.peer
указывает, что другие экземпляры должны подключаться к адресу,
заданному в iproto.listen,
используя пользователя
replicator. replication.failoverуказывает, что мастер-экземпляр должен быть задан вручную.- replicasets.<replicaset_name>.leader назначает
instance001лидером набора реплик.
credentials:users:replicator:password: 'topsecret'roles: [replication]iproto:advertise:peer:login: replicatorreplication:failover: manualgroups:group001:replicasets:replicaset001:leader: instance001instances:instance001:iproto:listen:- uri: '127.0.0.1:3301'instance002:iproto:listen:- uri: '127.0.0.1:3302'instance003:iproto:listen:- uri: '127.0.0.1:3303'
Тип: string
Значение по умолчанию: off
Переменная окружения: TT_REPLICATION_FAILOVER
URI экземпляров, составляющих набор реплик. Эти URI используются экземпляром для подключения к другому экземпляру в качестве реплики.
Кроме того, можно использовать iproto.advertise.peer, чтобы указать URI, используемый для информирования других членов кластера о текущем экземпляре.
Пример
В приведенном ниже примере заданы следующие параметры конфигурации:
- В разделе credentials создается
пользователь
replicatorс рольюreplication. replication.peersзадает URI экземпляров набора реплик.
credentials:users:replicator:password: 'topsecret'roles: [replication]replication:peers:- replicator:topsecret@127.0.0.1:3301- replicator:topsecret@127.0.0.1:3302- replicator:topsecret@127.0.0.1:3303
Тип: array
Значение по умолчанию: [box.NULL](../../reference_lua/box/box_null#box-null)
Переменная окружения: TT_REPLICATION_PEERS
По умолчанию, если реплика добавляет уникальный ключ, который уже
добавила другая реплика, репликация
останавливается с
ошибкой ER_TUPLE_FOUND. Если для параметра
replication.skip_conflict задано значение true, такие ошибки
игнорируются.
Тип: boolean
Значение по умолчанию: false
Переменная окружения: TT_REPLICATION_SKIP_CONFLICT
Максимальная задержка (в секундах) между моментом записи данных на
мастере и моментом их записи на реплике. Если для параметра
replication.sync_lag задано значение nil или 365 * 100 * 86400
(TIMEOUT_INFINITY), реплика всегда считается «синхронизированной».
Тип: number
Значение по умолчанию: 10
Переменная окружения: TT_REPLICATION_SYNC_LAG
Время ожидания (в секундах), в течение которого узел ожидает
синхронизации с другими узлами в наборе реплик после подключения или во
время обновления конфигурации.
Синхронизация может завершиться неудачей бесконечно, если значение
replication.sync_lag
меньше сетевой задержки или если реплика не успевает за обновлениями
мастера. Если время ожидания replication.sync_timeout истекает,
реплика переходит в статус orphan.
Тип: number
Значение по умолчанию: 0
Переменная окружения: TT_REPLICATION_SYNC_TIMEOUT
Начиная с: 3.3.0
Максимальный размер очереди синхронных транзакций на мастер-узле в байтах. Ограничение размера не является строгим, то есть если есть хотя бы один свободный байт, весь запрос на запись помещается в очередь без блокировки. Этот параметр гарантирует, что очередь не будет расти бесконечно, что потенциально может повлиять на производительность и использование ресурсов, и применяется только к мастер-узлу.
Значение 0 отключает ограничение.
Если синхронная очередь достигает заданного ограничения размера, новые
транзакции, пытающиеся попасть в очередь, отбрасываются. В таких случаях
система возвращает пользователю ошибку:
The synchronous transaction queue is full.
Это ограничение размера не применяется во время процесса восстановления. Транзакции, обрабатываемые во время восстановления, не подвержены влиянию ограничения размера очереди.
Чтобы просмотреть текущий размер очереди синхронных транзакций, используйте следующую команду:
box.info.synchro.queue.size
undefined
tarantool> box.info.synchro
: ---
- queue:
: owner: 1 size: 60 busy: false len: 1 term: 2 quorum: 2
Задайте ограничение размера очереди синхронных транзакций в конфигурационном файле:
replication:synchro_queue_max_size: 33554432 # Limit set to 32 MB
Тип: integer
Значение по умолчанию: 16777216 (16 MB)
Переменная окружения: TT_REPLICATION_SYNCHRO_QUEUE_MAX_SIZE
Количество реплик, которые должны подтвердить получение синхронной транзакции перед завершением ее фиксации.
Этот параметр поддерживает динамическое вычисление значения кворума.
Например, значение по умолчанию --- N / 2 + 1, где N --- текущее
количество реплик, зарегистрированных в кластере. При добавлении или
удалении реплик выражение перевычисляется автоматически.
Обратите внимание, что значение по умолчанию
(не менее 50% размера кластера + 1) гарантирует надежность данных.
Использование значения меньше канонического может привести к
непредвиденным результатам, включая
split-brain.
replication.synchro_quorum не используется на репликах. При отказе
мастера ожидающие синхронные транзакции на репликах будут находиться в
ожидании, пока не будет выбран новый мастер.
Тип: string, number
Значение по умолчанию: N / 2 + 1
Переменная окружения: TT_REPLICATION_SYNCHRO_QUORUM
Только для синхронной репликации. Задает время ожидания в секундах для достижения кворума синхронной транзакции, по истечении которого транзакция признается неудачной и откатывается.
Не используется на репликах, поэтому при отказе мастера ожидающие синхронные транзакции на репликах будут находиться в ожидании, пока не будет выбран новый мастер.
Тип: number
Значение по умолчанию: 5
Переменная окружения: TT_REPLICATION_SYNCHRO_TIMEOUT
Количество потоков, создаваемых для декодирования входящих данных репликации.
В большинстве случаев одного потока достаточно для всех входящих данных. Возможные значения --- от 1 до 1000. При наличии нескольких потоков репликации обслуживаемые подключения распределяются между потоками равномерно.
Тип: integer
Значение по умолчанию: 1
Переменная окружения: TT_REPLICATION_THREADS
Интервал времени (в секундах), через который мастер отправляет запросы heartbeat реплике, если нет обновлений для отправки этой реплике. На каждый запрос реплика должна возвращать подтверждение heartbeat.
Если мастер или реплика не получает сообщение heartbeat в течение
4 * replication.timeout секунд, соединение разрывается, и реплика
пытается переподключиться к мастеру.
См. также: Мониторинг набора реплик
Тип: number
Значение по умолчанию: 1
Переменная окружения: TT_REPLICATION_TIMEOUT
В этом разделе описаны параметры конфигурации, связанные с ролями приложения.
Указывает роли экземпляра. Чтобы задать конфигурацию роли, используйте параметр roles_cfg.
См. также: configuration_application_roles
Тип: array
Значение по умолчанию: nil
Переменная окружения: TT_ROLES
Указывает конфигурацию роли. Этот параметр принимает имя роли в качестве ключа, а конфигурацию роли --- в качестве значения. Чтобы указать роли экземпляра, используйте параметр roles.
См. также: configuration_application_roles
Тип: map
Значение по умолчанию: nil
Переменная окружения: TT_ROLES_CFG
Раздел security определяет параметры конфигурации, связанные с
различными настройками безопасности.
- security.auth_delay
- security.auth_retries
- security.auth_type
- security.disable_guest
- security.password_enforce_digits
- security.password_enforce_lowercase
- security.password_enforce_specialchars
- security.password_enforce_uppercase
- security.password_history_length
- security.password_lifetime_days
- security.password_min_length
- security.secure_erasing
Задаёт период времени (в секундах), в течение которого конкретный пользователь должен ожидать перед следующей попыткой после неудачной аутентификации.
Параметр
security.auth_retries
задаёт количество попыток аутентификации, которые клиент может выполнить
до применения security.auth_delay.
В приведённой ниже конфигурации клиент может выполнить до трёх попыток
аутентификации с одним и тем же именем пользователя. При четвёртой
попытке применяется задержка аутентификации, заданная параметром
security.auth_delay. Это означает, что после первой неудачной попытки
клиенту необходимо ожидать 10 секунд.
security:auth_delay: 10auth_retries: 2
Тип: number
Значение по умолчанию: 0
Переменная окружения: TT_SECURITY_AUTH_DELAY
Задаёт максимальное количество повторных попыток аутентификации до
применения
security.auth_delay.
Значение по умолчанию --- 0, что означает применение
security.auth_delay после первой неудачной попытки аутентификации.
Счётчик попыток сбрасывается по истечении security.auth_delay секунд с
момента первой неудачной попытки. Например, если клиент пытается
аутентифицироваться менее security.auth_retries раз в течение
security.auth_delay секунд, задержка аутентификации не применяется.
Счётчик попыток также сбрасывается после любой успешной попытки
аутентификации.
Тип: integer
Значение по умолчанию: 0
Переменная окружения: TT_SECURITY_AUTH_RETRIES
Задаёт протокол, используемый для аутентификации пользователей. Возможные значения:
chap-sha1: используется протокол CHAP с хешированиемSHA-1для паролей.pap-sha256: используется аутентификация PAP с алгоритмом хешированияSHA256.
Обратите внимание, что CHAP хранит хеши паролей в спейсе _user без
использования соли. Если злоумышленник получит доступ к базе данных, он
может подобрать пароль, например, с использованием радужной
таблицы. В случае PAP
пароль солится уникальной для пользователя солью перед сохранением в
базе данных, что защищает базу данных от подбора с использованием
радужной таблицы.
Чтобы включить PAP, задайте параметр security.auth_type следующим
образом:
security:auth_type: 'pap-sha256'
Тип: string
Значение по умолчанию: 'chap-sha1'
Переменная окружения: TT_SECURITY_AUTH_TYPE
Если true, отключает доступ через удалённые подключения для неаутентифицированных пользователей или пользователей guest. Этот параметр влияет на соединения между членами кластера и подключения net.box.
Тип: boolean
Значение по умолчанию: false
Переменная окружения: TT_SECURITY_DISABLE_GUEST
Если true, пароль должен содержать цифры (0-9).
Тип: boolean
Значение по умолчанию: false
Переменная окружения: TT_SECURITY_PASSWORD_ENFORCE_DIGITS
Если true, пароль должен содержать строчные буквы (a-z).
Тип: boolean
Значение по умолчанию: false
Переменная окружения: TT_SECURITY_PASSWORD_ENFORCE_LOWERCASE
Если true, пароль должен содержать хотя бы один специальный символ
(например, &|?!@$).
Тип: boolean
Значение по умолчанию: false
Переменная окружения: TT_SECURITY_PASSWORD_ENFORCE_SPECIALCHARS
Если true, пароль должен содержать заглавные буквы (A-Z).
Тип: boolean
Значение по умолчанию: false
Переменная окружения: TT_SECURITY_PASSWORD_ENFORCE_UPPERCASE
Задаёт количество уникальных новых паролей пользователя, прежде чем старый пароль может быть использован повторно.
Тип: integer
Значение по умолчанию: 0
Переменная окружения: TT_SECURITY_PASSWORD_HISTORY_LENGTH
Задаёт максимальный период времени (в днях), в течение которого пользователь может использовать один и тот же пароль. По истечении этого периода при попытке входа пользователь получает ошибку «Password expired». Для восстановления доступа таких пользователей используйте box.schema.user.passwd.
Тип: integer
Значение по умолчанию: 0
Переменная окружения: TT_SECURITY_PASSWORD_LIFETIME_DAYS
Задаёт минимальное количество символов в пароле.
Тип: integer
Значение по умолчанию: 0
Переменная окружения: TT_SECURITY_PASSWORD_MIN_LENGTH
Если true, Tarantool перезаписывает файл данных несколько раз перед
удалением, чтобы сделать восстановление удалённого файла невозможным.
Параметр применяется как к файлам .xlog и .snap, так и к файлам
данных Vinyl.
Тип: boolean
Значение по умолчанию: false
Переменная окружения: TT_SECURITY_SECURE_ERASING
Раздел sharding определяет параметры конфигурации, связанные с
шардированием.
Общее количество бакетов в кластере. Подробнее см. vshard_config_bucket_count.
Пример
sharding:bucket_count: 1000
Тип: integer
Значение по умолчанию: 3000
Переменная окружения: TT_SHARDING_BUCKET_COUNT
Режим фоновой службы discovery, используемой роутером для поиска бакетов. Подробнее см. vshard.router.discovery_set().
Тип: string
Значение по умолчанию: 'on'
Possible values: 'on', 'off', 'once'
Переменная окружения: TT_SHARDING_DISCOVERY_MODE
Время ожидания (в секундах), по истечении которого узел считается недоступным при отсутствии ответов в течение этого периода. Для определения недоступности узла используется служба failover.
Тип: number
Значение по умолчанию: 5
Переменная окружения: TT_SHARDING_FAILOVER_PING_TIMEOUT
Определяет, заблокирован ли набор реплик. Заблокированный набор реплик не может принимать новые бакеты и мигрировать собственные бакеты.
Тип: boolean
Значение по умолчанию: nil
Переменная окружения: TT_SHARDING_LOCK
Максимальный порог дисбаланса бакетов (в процентах). Дисбаланс вычисляется для каждого набора реплик по следующей формуле:
|etalon_bucket_count - real_bucket_count| / etalon_bucket_count * 100
Тип: number
Значение по умолчанию: 1
Переменная окружения: TT_SHARDING_REBALANCER_DISBALANCE_THRESHOLD
Максимальное количество бакетов, которые могут быть получены параллельно одним набором реплик. Это число необходимо ограничивать, так как ребалансер отправляет большое количество бакетов из существующих наборов реплик в новый добавленный набор. Это создает высокую нагрузку на новый набор реплик.
Пример
Предположим, значение rebalancer_max_receiving равно 100, а
bucket_count --- 1000. Имеется 3 набора реплик с 333, 333 и 334
бакетами соответственно. При добавлении нового набора реплик значение
etalon_bucket_count каждого набора становится равным 250. Вместо
получения всех 250 бакетов за один раз новый набор реплик
последовательно получает 100, 100 и 50 бакетов.
Тип: integer
Значение по умолчанию: 100
Переменная окружения: TT_SHARDING_REBALANCER_MAX_RECEIVING
Степень параллелизма для параллельного ребалансирования.
Тип: integer
Значение по умолчанию: 1
Maximum: 15
Переменная окружения: TT_SHARDING_REBALANCER_MAX_SENDING
Начиная с: 3.1.0
Настройка выбора ребалансера:
auto(по умолчанию): если нет наборов реплик с ролью шардированияrebalancer(sharding.roles), набор реплик с ребалансером выбирается автоматически среди всех наборов реплик.manual: один из наборов реплик должен иметь роль шардированияrebalancer. Ребалансер находится в этом наборе реплик.off: ребалансирование отключено независимо от того, существует ли набор реплик с ролью шардированияrebalancerили нет.
Тип: string
Значение по умолчанию: 'auto'
Переменная окружения: TT_SHARDING_REBALANCER_MODE
Роли набора реплик в контексте шардирования. Набор реплик может иметь следующие роли:
router: набор реплик выступает в роли роутера.storage: набор реплик выступает в роли хранилища.rebalancer: набор реплик выступает в роли ребалансера.
Роль rebalancer необязательна. Если она не указана, ребалансер
выбирается автоматически из мастер-экземпляров наборов реплик.
Может быть не более одного набора реплик с ролью rebalancer. Кроме
того, этот набор реплик должен иметь роль storage.
Пример
replicasets:storage-a:sharding:roles: [storage, rebalancer]
См. также: vshard_config_sharding_roles
Тип: array
Значение по умолчанию: nil
Переменная окружения: TT_SHARDING_ROLES
Квота планировщика на перемещение бакетов, используемая ребалансером.
sched_move_quota определяет, сколько перемещений бакетов может быть
выполнено подряд при наличии ожидающих storage refs. После этого
перемещения бакетов блокируются, и роутер продолжает выполнять
map-reduce запросы.
См. также: sharding.sched_ref_quota
Тип: number
Значение по умолчанию: 1
Переменная окружения: TT_SHARDING_SCHED_MOVE_QUOTA
Квота планировщика на storage refs, используемая map-reduce API роутера. Например, функция vshard.router.map_callrw() реализует консистентный map-reduce по всему кластеру.
sched_ref_quota определяет, сколько storage refs, а следовательно, и
map-reduce запросов, может быть выполнено на хранилище подряд при
наличии ожидающих перемещений бакетов. После этого storage refs
блокируются, и ребалансер продолжает перемещение бакетов.
См. также: sharding.sched_move_quota
Тип: number
Значение по умолчанию: 300
Переменная окружения: TT_SHARDING_SCHED_REF_QUOTA
Имя или идентификатор TREE-индекса по идентификатору бакета. Спейсы без этого индекса не участвуют в шардированном кластере Tarantool и при необходимости могут использоваться как обычные спейсы. Необходимо указать первую часть индекса, остальные части необязательны.
См. также: vshard-define-spaces
Тип: string
Значение по умолчанию: 'bucket_id'
Переменная окружения: TT_SHARDING_SHARD_INDEX
Время ожидания синхронизации старого мастера с репликами перед понижением. Используется при переключении мастера или при ручном вызове функции sync().
Тип: number
Значение по умолчанию: 1
Переменная окружения: TT_SHARDING_SYNC_TIMEOUT
Начиная с: 3.1.0
Относительный объем данных, который может хранить набор реплик. Подробнее см. vshard-replica-set-weights.
Тип: number
Значение по умолчанию: 1
Переменная окружения: TT_SHARDING_WEIGHT
Зона, которую можно задать для роутеров и реплик. Это позволяет отправлять запросы на чтение не только на мастер-экземпляр, но и на любую доступную реплику, ближайшую к роутеру.
Тип: integer
Значение по умолчанию: nil
Переменная окружения: TT_SHARDING_ZONE
Секция snapshot определяет параметры конфигурации, связанные с
файлами снимков. Подробнее о конфигурации снимков
см. на странице Persistence.
Директория, в которой memtx хранит файлы снимков (.snap). Относительный
путь в этом параметре интерпретируется относительно process.work_dir.
По умолчанию файлы снимков и WAL-файлы хранятся в одной директории.
Однако можно задать разные значения для параметров snapshot.dir и
wal.dir, чтобы хранить их на разных
физических дисках для повышения производительности.
Тип: string
Значение по умолчанию: 'var/lib/{{ instance_name }}'
Переменная окружения: TT_SNAPSHOT_DIR
Снижает влияние
box.snapshot() на производительность операций INSERT/UPDATE/DELETE путем
ограничения количества мегабайт в секунду, записываемых на диск. Того же
эффекта можно добиться, разделив расположения
wal.dir и
snapshot.dir и перенеся снимки
на отдельный диск. Ограничение также влияет на то, что
box.stat.vinyl().regulator
может показывать для скорости записи дампов в файлы .run и .index.
Тип: number
Значение по умолчанию: box.NULL
Переменная окружения: TT_SNAPSHOT_SNAP_IO_RATE_LIMIT
Максимальное количество снимков, хранящихся в директории
snapshot.dir. Если после
создания нового снимка их количество превышает это значение,
сборщик мусора Tarantool
удаляет старые снимки. Если для параметра snapshot.count задано
значение 0, сборщик мусора не удаляет старые снимки.
Пример
В этом примере демон- контрольных точек создает снимок каждые два часа, пока не будет создано три снимка. После создания нового снимка (четвертого) самый старый снимок и все связанные с ним файлы журнала предзаписи удаляются.
snapshot:by:interval: 7200count: 3
Тип: integer
Значение по умолчанию: 2
Переменная окружения: TT_SNAPSHOT_COUNT
Интервал в секундах между запусками
демона контрольных точек.
Если для параметра задано значение больше нуля и есть активность,
изменяющая базу данных, то демон контрольных точек вызывает
box.snapshot() каждые snapshot.by.interval секунд, создавая каждый раз
новый файл снимка. Если для параметра задано значение 0, демон
контрольных точек отключен.
Пример
В этом примере демон контрольных точек создает новый снимок базы данных каждые два часа при наличии активности.
by:interval: 7200
Тип: number
Значение по умолчанию: 3600
Переменная окружения: TT_SNAPSHOT_BY_INTERVAL
Пороговое значение общего размера в байтах для всех WAL-файлов, созданных с момента последнего снимка. При превышении заданного порога поток WAL уведомляет демона контрольных точек о необходимости создать новый снимок и удалить старые WAL-файлы.
Тип: integer
Значение по умолчанию: 10\^18
Переменная окружения: TT_SNAPSHOT_BY_WAL_SIZE
Раздел sql определяет параметры конфигурации, относящиеся к
SQL.
- sql.cache_size .. configuration_reference_sql_cache_size:
Максимальный размер кэша (в байтах) для всех подготовленных SQL-операторов. Чтобы узнать фактический размер кэша, используйте box.info.sql().cache.size.
Тип: integer
Значение по умолчанию: 5242880
Переменная окружения: TT_SQL_CACHE_SIZE
Раздел vinyl определяет параметры конфигурации, относящиеся к
движку хранения vinyl.
- vinyl.bloom_fpr
- vinyl.cache
- vinyl.defer_deletes
- vinyl.dir
- vinyl.max_tuple_size
- vinyl.memory
- vinyl.page_size
- vinyl.range_size
- vinyl.read_threads
- vinyl.run_count_per_level
- vinyl.run_size_ratio
- vinyl.timeout
- vinyl.write_threads .. configuration_reference_vinyl_bloom_fpr:
Частота ложных срабатываний фильтра Блума --- допустимая вероятность
того, что фильтр Блума
выдаст неверный результат. Параметр vinyl.bloom_fpr является значением
по умолчанию для опции bloom_fpr, передаваемой в
space_object:create_index().
Тип: number
Значение по умолчанию: 0.05
Переменная окружения: TT_VINYL_BLOOM_FPR
Размер кэша для движка хранения vinyl. Размер кэша может изменяться динамически.
Тип: integer
Значение по умолчанию: 128 * 1024 * 1024
Переменная окружения: TT_VINYL_CACHE
Включает оптимизацию отложенных DELETE в vinyl. Эта оптимизация была отключена по умолчанию начиная с версии Tarantool 2.10 во избежание возможного снижения производительности при чтении из вторичных индексов.
Тип: boolean
Значение по умолчанию: false
Переменная окружения: TT_VINYL_DEFER_DELETES
Каталог, в котором будут храниться файлы или подкаталоги vinyl.
Этот параметр может содержать относительный путь к файлу. В этом случае он интерпретируется как относительный к process.work_dir.
Тип: string
Значение по умолчанию: 'var/lib/{{ instance_name }}'
Переменная окружения: TT_VINYL_DIR
Размер наибольшей единицы выделения памяти для движка хранения vinyl. Значение может быть увеличено, если необходимо хранить большие кортежи.
Тип: integer
Значение по умолчанию: 1024 * 1024
Переменная окружения: TT_VINYL_MAX_TUPLE_SIZE
Максимальный объем оперативной памяти в байтах, используемой vinyl.
Тип: integer
Значение по умолчанию: 128 * 1024 * 1024
Переменная окружения: TT_VINYL_MEMORY
Размер страницы. Страница - это единица чтения/записи для дисковых
операций vinyl. Параметр vinyl.page_size является значением по
умолчанию для опции page_size, передаваемой в
space_object:create_index().
Тип: integer
Значение по умолчанию: 8 * 1024
Переменная окружения: TT_VINYL_PAGE_SIZE
Максимальный размер диапазона по умолчанию для индекса vinyl, в байтах. Максимальный размер диапазона влияет на решение о разделении диапазона.
Если параметр vinyl.range_size задан (значение не null и не 0), он
используется как значение по умолчанию для опции
range_size, передаваемой в
space_object:create_index().
Если параметр vinyl.range_size не задан (или явно установлен в null
или 0), а range_size не указан при создании индекса, Tarantool задает
значение позже, исходя из соображений производительности. Чтобы узнать
фактическое значение, используйте
index_object:stat().range_size.
Тип: integer
Значение по умолчанию: box.NULL (означает, что эффективное значение по
умолчанию определяется во время выполнения)
Переменная окружения: TT_VINYL_RANGE_SIZE
Максимальное количество потоков чтения, которые vinyl может использовать для параллельных операций, таких как ввод-вывод и сжатие.
Тип: integer
Значение по умолчанию: 1
Переменная окружения: TT_VINYL_READ_THREADS
Максимальное количество прогонов на уровень в LSM-дереве vinyl. При
превышении этого количества создается новый уровень. Параметр
vinyl.run_count_per_level является значением по умолчанию для опции
run_count_per_level, передаваемой в
space_object:create_index().
Тип: integer
Значение по умолчанию: 2
Переменная окружения: TT_VINYL_RUN_COUNT_PER_LEVEL
Отношение между размерами различных уровней в LSM-дереве. Параметр
vinyl.run_size_ratio является значением по умолчанию для опции
run_size_ratio, передаваемой в
space_object:create_index().
Тип: number
Значение по умолчанию: 3.5
Переменная окружения: TT_VINYL_RUN_SIZE_RATIO
В движке хранения vinyl имеется планировщик, выполняющий компактизацию.
При нехватке доступной памяти планировщик компактизации может не
успевать обрабатывать входящие запросы на обновление. В такой ситуации
запросы могут завершаться по истечении времени ожидания в vinyl.timeout секунд. Это
должно происходить редко, так как обычно vinyl ограничивает скорость
вставок при нехватке пропускной способности для компактизации.
Компактизацию также можно запустить вручную с помощью
index_object:compact().
Тип: integer
Значение по умолчанию: 60
Переменная окружения: TT_VINYL_TIMEOUT
Максимальное количество потоков записи, которые vinyl может использовать для некоторых параллельных операций, таких как ввод-вывод и сжатие.
Тип: integer
Значение по умолчанию: 4
Переменная окружения: TT_VINYL_WRITE_THREADS
Секция wal определяет параметры конфигурации, относящиеся к
журналу предзаписи. Подробнее о конфигурации WAL см. на
странице Сохранение данных.
- wal.cleanup_delay
- wal.dir
- wal.dir_rescan_delay
- wal.max_size
- wal.mode
- wal.queue_max_size
- wal.retention_period
- wal.ext.* ..
Задержка в секундах, предотвращающая немедленное удаление файлов
журнала предзаписи
сборщиком мусора Tarantool
после перезапуска узла. Эта задержка исключает возможные ошибочные
ситуации, когда мастер-узел удаляет WAL-файлы, необходимые
репликам, после перезапуска. В результате реплики
синхронизируются с мастер-узлом быстрее после его перезапуска и не
нуждаются в повторном скачивании всех данных. После того как все узлы в
наборе реплик запущены и работают, плановая сборка мусора
возобновляется, даже если срок wal.cleanup_delay еще не истек.
См. также: wal.retention_period
Тип: number
Значение по умолчанию: 14400
Переменная окружения: TT_WAL_CLEANUP_DELAY
Директория, в которой хранятся файлы журнала предзаписи (.xlog).
Относительный путь в этом параметре интерпретируется как относительный к
process.work_dir.
По умолчанию WAL-файлы и снимки хранятся в одной директории. Однако
можно задать разные значения для параметров wal.dir и
snapshot.dir, чтобы хранить их
на разных физических дисках для повышения производительности.
Тип: string
Значение по умолчанию: 'var/lib/{{ instance_name }}'
Переменная окружения: TT_WAL_DIR
Интервал времени в секундах между периодическими сканированиями директории файлов журнала предзаписи при проверке изменений в WAL-файлах для репликации или горячего резерва.
Тип: number
Значение по умолчанию: 2
Переменная окружения: TT_WAL_DIR_RESCAN_DELAY
Максимальное количество байт в одном файле журнала предзаписи. Если
запрос приведет к тому, что размер .xlog-файла превысит
wal.max_size, Tarantool создает новый WAL-файл.
Тип: integer
Значение по умолчанию: 268435456
Переменная окружения: TT_WAL_MAX_SIZE
Задает режим синхронизации фибер-WAL-диск:
none: журнал предзаписи не ведется. Узел с параметромwal.mode, установленным в значениеnone, не может быть мастер-узлом репликации.write: фиберы ожидают записи своих данных в журнал предзаписи (безfsync(2)).fsync: фиберы ожидают записи своих данных,fsync(2)выполняется после каждогоwrite(2).
Тип: string
Значение по умолчанию: 'write'
Переменная окружения: TT_WAL_MODE
Размер очереди в байтах, используемой репликой для отправки новых транзакций в журнал предзаписи (WAL). Этот параметр помогает ограничить скорость, с которой реплика отправляет транзакции в WAL.
Ограничение размера очереди может быть полезно, когда реплика пытается синхронизироваться с мастер-узлом и считывает новые транзакции быстрее, чем записывает их в WAL.
Тип: integer
Значение по умолчанию: 16777216
Переменная окружения: TT_WAL_QUEUE_MAX_SIZE
Начиная с: 3.1.0 (только Enterprise Edition)
Задержка в секундах, предотвращающая удаление
сборщиком мусора Tarantool
файла журнала предзаписи после его закрытия. При
перезапуске узла отсчет wal.retention_period ведется от времени
последней модификации файла журнала предзаписи.
Сборщик мусора не отслеживает журналы предзаписи, которые должны быть переданы анонимным репликам, таким как:
- Анонимные реплики, добавленные как часть конфигурации кластера (см. replication.anon).
- CDC (Change Data Capture), извлекающий данные с помощью анонимной репликации.
В случае простоя реплики или CDC необходимые журналы предзаписи могут
быть удалены. В результате для такой реплики потребуется повторная
начальная загрузка. Параметр wal.retention_period позволяет
предотвратить подобные проблемы.
Параметр wal.cleanup_delay
также задает задержку, предотвращающую удаление журналов предзаписи
сборщиком мусора Tarantool. Отличие в том, что сборщик мусора не
учитывает wal.cleanup_delay, если все узлы в наборе реплик запущены и
работают, что может привести к удалению необходимых журналов предзаписи.
Тип: number
Значение по умолчанию: 0
Переменная окружения: TT_WAL_RETENTION_PERIOD
В этой секции описаны параметры, относящиеся к расширениям WAL.
Включает сохранение нового кортежа для каждой выполненной CRUD-операции. Параметр действует для всех спейсов. Чтобы настроить параметр для отдельных спейсов, используйте параметр wal.ext.spaces.
Тип: boolean
Значение по умолчанию: false
Переменная окружения: TT_WAL_EXT_NEW
Включает сохранение старого кортежа для каждой выполненной CRUD-операции. Параметр действует для всех спейсов. Чтобы настроить параметр для отдельных спейсов, используйте параметр wal.ext.spaces.
Тип: boolean
Значение по умолчанию: false
Переменная окружения: TT_WAL_EXT_OLD
Явно включает или отключает сохранение старого и нового кортежа в записи WAL для заданного спейса. Конфигурация для отдельных спейсов имеет приоритет над конфигурацией в параметрах wal.ext.new и wal.ext.old.
Параметр представляет собой пару «ключ-значение»:
- Ключ - имя спейса (строка).
- Значение - таблица, включающая два необязательных логических
параметра:
oldиnew. Формат и значения по умолчанию этих параметров описаны вwal.ext.oldиwal.ext.new.
Пример
В примере только новые кортежи добавляются в журнал для спейса bands.
ext:new: trueold: truespaces:bands:old: false
Тип: map
Значение по умолчанию: nil
Переменная окружения: TT_WAL_EXT_SPACES