Tarantool CE/EE Documentation portal logo
Помощь
Обновлена 2 ноября 2026 г. в 15:35

Подключения

Для настройки кластера Tarantool необходимо обеспечить взаимодействие между его экземплярами, независимо от того, работают ли они на одном или на разных хостах. Для этого требуется настроить параметры подключения, включающие:

  • Один или несколько URI для прослушивания входящих запросов.
  • URI для объявления экземпляра другим членам кластера. Этот URI сообщает другим членам кластера, как подключиться к текущему экземпляру Tarantool.
  • (Необязательно) Параметры SSL для защиты подключений между экземплярами.

Настройка параметров подключения также требуется для обеспечения взаимодействия кластера Tarantool с внешними системами. Например, это может быть администрирование членов кластера с помощью tt, управление кластерами с помощью Tarantool Cluster Manager или использование коннекторов для разных языков программирования.

В этом разделе описано, как задать параметры подключения в разделе iproto конфигурации YAML.

URI для прослушивания

Чтобы настроить URI для прослушивания входящих запросов, используйте параметр конфигурации iproto.listen.

Один адрес прослушивания

В примере ниже показано, как задать IP-адрес прослушивания 127.0.0.1:3301 для instance001:

instance001:  iproto:    listen:    - uri: '127.0.0.1:3301'

Несколько адресов прослушивания

В этом примере instance001 прослушивает два IP-адреса:

instance001:  iproto:    listen:    - uri: '127.0.0.1:3301'    - uri: '127.0.0.1:3302'

Порт прослушивания

В iproto.listen можно передать только значение порта:

instance001:  iproto:    listen:    - uri: '3301'

В этом случае данный порт используется для всех IP-адресов, которые прослушивает сервер.

Параметры SSL

SSL для подключения можно включить с помощью раздела params указанного URI:

instance001:  iproto:    listen:    - uri: '127.0.0.1:3301'      params:        transport: 'ssl'        ssl_cert_file: 'certs/server.crt'        ssl_key_file: 'certs/server.key'

Подробнее см. в Защита подключений с помощью SSL.

Unix-сокет

Для локальной разработки взаимодействие между членами кластера можно обеспечить с помощью Unix-сокетов:

instance001:  iproto:    listen:    - uri: 'unix/:./var/run/{{ instance_name }}/tarantool.iproto'

URI для объявления

URI для объявления (iproto.advertise.*) сообщает другим членам кластера или клиентам, как подключиться к текущему экземпляру Tarantool:

  • iproto.advertise.peer определяет, как объявить экземпляр другим членам кластера.
  • iproto.advertise.sharding определяет, как объявить экземпляр роутеру и ребалансировщику.
  • iproto.advertise.client принимает URI, используемый для объявления экземпляра клиентам.

iproto.advertise.<peer_or_sharding> может включать учетные данные, необходимые для подключения к этому экземпляру, URI для прослушивания входящих запросов и параметры SSL.

Если iproto.advertise.<peer_or_sharding>.uri не задан явно, используется URI для прослушивания этого экземпляра. В этом случае необходимо как минимум указать учетные данные для подключения к этому экземпляру.

Учетные данные для подключения

В примере ниже параметр iproto.advertise.peer используется, чтобы сообщить другим членам набора реплик, что для подключения к текущему экземпляру следует использовать пользователя replicator:

iproto:  advertise:    peer:      login: replicator

В шардированном кластере iproto.advertise.sharding указывает, что роутер и ребалансировщик должны использовать пользователя storage для подключения к хранилищам:

iproto:  advertise:    peer:      login: replicator    sharding:      login: storage

URI

При необходимости URI для объявления можно задать явно с помощью параметра iproto.advertise. В примере ниже iproto.listen включает два URI, которые можно использовать для подключения к instance001, но только второй используется для объявления этого экземпляра другим членам набора реплик:

instance001:  iproto:    listen:    - uri: '127.0.0.1:3301'    - uri: '127.0.0.1:4401'    advertise:      peer:        uri: '127.0.0.1:4401'

Параметр iproto.advertise.<peer_or_sharding>.uri может также принимать FQDN вместо IP-адреса:

instance001:  iproto:    listen:    - uri: '192.168.0.101:3301'    advertise:      peer:        uri: 'server001.example.com:3301'

Об особенностях настройки параметров SSL для URI для объявления см. Особенности URI для объявления.

Защита подключений с помощью SSL

Tarantool поддерживает использование SSL-подключений для шифрования обмена данными между клиентом и сервером в целях повышения безопасности. Чтобы включить SSL, используйте параметры (uri.params.*), которые можно применять как к URI для прослушивания, так и к URI для объявления.

Без центра сертификации

В примере ниже показано, как включить шифрование трафика с помощью самоподписанного сертификата сервера. Для каждого экземпляра указаны следующие параметры:

  • ssl_cert_file: путь к файлу SSL-сертификата.
  • ssl_key_file: путь к файлу закрытого SSL-ключа.
instances:

Полный пример доступен здесь: ssl_without_ca.

С центром сертификации

В примере ниже показано, как включить шифрование трафика с помощью сертификата сервера, подписанного доверенным центром сертификации. В этом случае все члены набора реплик проверяют подлинность друг друга.

Для каждого экземпляра указаны следующие параметры:

  • ssl_ca_file: путь к файлу доверенных центров сертификации (CA).
  • ssl_cert_file: путь к файлу SSL-сертификата.
  • ssl_key_file: путь к файлу закрытого SSL-ключа.
  • ssl_password (instance001): пароль для зашифрованного закрытого SSL-ключа.
  • ssl_password_file (instance002 и instance003): текстовый файл, содержащий пароли для зашифрованных SSL-ключей.
  • ssl_ciphers: разделенный двоеточиями список наборов шифров SSL, которые могут использоваться для подключения.
instances:  instance001:    iproto:      listen:      - uri: '127.0.0.1:3301'        params:          transport: 'ssl'          ssl_ca_file: 'certs/root_ca.crt'          ssl_cert_file: 'certs/instance001/server001.crt'          ssl_key_file: 'certs/instance001/server001.key'          ssl_password: 'qwerty'          ssl_ciphers: 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256'  instance002:    iproto:      listen:      - uri: '127.0.0.1:3302'        params:          transport: 'ssl'          ssl_ca_file: 'certs/root_ca.crt'          ssl_cert_file: 'certs/instance002/server002.crt'          ssl_key_file: 'certs/instance002/server002.key'          ssl_password_file: 'certs/ssl_passwords.txt'          ssl_ciphers: 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256'  instance003:    iproto:      listen:      - uri: '127.0.0.1:3303'        params:          transport: 'ssl'          ssl_ca_file: 'certs/root_ca.crt'          ssl_cert_file: 'certs/instance003/server003.crt'          ssl_key_file: 'certs/instance003/server003.key'          ssl_password_file: 'certs/ssl_passwords.txt'          ssl_ciphers: 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256'

Полный пример доступен здесь: ssl_with_ca.

Особенности URI для объявления

Параметры SSL для URI для объявления следует задавать только в том случае, если URI для объявления указан явно. В противном случае используются параметры SSL URI для прослушивания, и дополнительная настройка не требуется.

Настройка параметров SSL для URI для объявления зависит от того, задан ли файл доверенных центров сертификации (CA). Без файла CA достаточно задать для параметра iproto.advertise.<peer_or_sharding>.params.transport значение ssl, как показано ниже:

instance001:  iproto:    listen:    - uri: '192.168.0.101:3301'      params:        transport: 'ssl'        ssl_cert_file: 'certs/server.crt'        ssl_key_file: 'certs/server.key'    advertise:      peer:        uri: 'server.example.com:3301'        params:          transport: 'ssl'

Если для URI для прослушивания задан файл CA, также необходимо настроить ssl_cert_file и ssl_key_file для этого URI для объявления:

instance001:  iproto:    listen:    - uri: '192.168.0.101:3301'      params:        transport: 'ssl'        ssl_ca_file: 'certs/root_ca.crt'        ssl_cert_file: 'certs/instance001/server001.crt'        ssl_key_file: 'certs/instance001/server001.key'    advertise:      peer:        uri: 'server001.example.com:3301'        params:          transport: 'ssl'          ssl_cert_file: 'certs/instance001/server001.crt'          ssl_key_file: 'certs/instance001/server001.key'

Перезагрузка сертификатов

Чтобы перезагрузить файлы SSL-сертификатов, указанные в конфигурации, откройте административную консоль и перезагрузите конфигурацию с помощью config.reload():

require('config'):reload()

Новые сертификаты будут использоваться для новых подключений. Существующие подключения продолжат использовать старые SSL-сертификаты до тех пор, пока не потребуется переподключение — например, из-за истечения срока действия сертификата или проблем с сетью.

Мониторинг истечения срока действия SSL-сертификата

Since: 3.9.0

Tarantool периодически проверяет файлы SSL-сертификатов, используемых для зашифрованных соединений, и выдает предупреждение для каждого сертификата, который невозможно прочитать, срок действия которого истекает или уже истек. Проверка выполняется сразу после применения конфигурации, а затем каждые 12 часов. Предупреждение появляется не позднее чем за 30 дней до истечения срока действия сертификата и остается актуальным после истечения срока действия. Проверяется только первый сертификат в PEM-файле.

Отслеживаются следующие файлы сертификатов:

  • iproto.ssl.ssl_cert — используется как SSL-сертификат по умолчанию для URI iproto.listen и iproto.advertise.*, для которых ssl_cert_file не задан явно в собственных params.
  • (только Enterprise Edition) config.etcd.ssl.ssl_cert, если в config.etcd.endpoints настроена конечная точка (endpoint) с включенным SSL.
  • (только Enterprise Edition) ssl_cert_file каждой конечной точки с включенным SSL в config.storage.endpoints.
  • (только Enterprise Edition) SSL-сертификат, который координатор управляемого переключения при отказе использует для подключения к экземпляру набора реплик, если peer URI этого экземпляра SSL-включен. Эта проверка выполняется независимо от описанной выше и формирует отдельное оповещение о переключении при отказе (failover alert), а не предупреждение о некорректной конфигурации (configuration alert).

Если один и тот же файл сертификата используется более чем одним из перечисленных выше источников, в одном предупреждении перечисляются все они, например:

SSL certificate "/etc/tarantool/certs/server.crt" expires at2026-11-29T00:00:00Z (components: config_etcd, iproto)

Выданное предупреждение автоматически снимается, как только соответствующий файл сертификата заменяется, становится доступным для чтения или перестает использоваться всеми отслеживаемыми источниками. Чтобы обновить сертификат до истечения срока его действия, замените файл сертификата и перезагрузите конфигурацию с помощью config:reload() — проверка также выполняется сразу после перезагрузки, поэтому не нужно дожидаться следующей плановой проверки.