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

Подключения

Для настройки кластера 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

В Enterprise Edition 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'

Подробнее см. в ссылка.

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-сертификаты до тех пор, пока не потребуется переподключение — например, из-за истечения срока действия сертификата или проблем с сетью.