Конфигурация кластера в YAML (Cartridge)
Документ рассматривает параметры YAML-конфигурации кластеров Tarantool Cartridge,
необходимые для взаимодействия с TCF.
Например, вы можете задать TCF-специфичные настройки кластера, отправив HTTP-запрос
с необходимой YAML-конфигурацией на адрес /admin/config.
Для работы кластера Tarantool Cartridge с TCF используется блок конфигурации cluster_federation.
Блок конфигурации cluster_federation содержит следующие параметры:
- cluster_1
- cluster_2
- initial_status
- dml_users
- replication_user
- replication_password
- storage
- storage_params
- gateway
- destination
- authorization
- status_ttl
- enable_system_check
- failover_timeout
- health_check_delay
- max_suspect_counts
Имя кластера, для которого применяется конфигурация. Имя используется в качестве префикса etcd для хранения информации о состоянии кластера.
Тип: string
Пример:
cluster_federation:cluster_1: cluster_acluster_2: cluster_b# ...
Имя соседнего кластера. Имя используется в качестве префикса etcd для хранения информации о состоянии кластера.
Тип: string
Состояние, в которое кластер переходит при первом запуске с использованием TCF.
Возможные значения: active, passive
Пример:
cluster_federation:initial_status: active# ...
Список пользователей, доступ которым заблокирован на пассивном кластере.
После смены состояния балансировщик может не сразу получить информацию об изменении состояния и какое-то время продолжит направлять трафик на пассивный кластер.
dml_users необходима, чтобы заблокировать пользователя, от имени которого приложение отправляет запросы на пассивный кластер.
Тип: array
Пример:
cluster_federation:# ...dml_users:- db_user
Имя пользователя для подключения репликаторов TCF.
Тип: string
Пример:
cluster_federation:# ...replication_user: replicatorreplication_password: foobar
Пароль пользователя replication_user.
Тип: string
Тип хранилища конфигурации, которое используется для хранения состояния кластеров.
Возможные значения: config_storage, etcd_v3, etcd_v2.
Параметры хранилища конфигурации.
Набор параметров зависит от выбранного типа хранилища конфигурации –
config_storage, etcd_v3 или etcd_v2.
Для типа config_storage доступны следующие параметры:
endpoints– массив узлов хранилищаconfig_storageс возможностью указания нескольких подключений. Параметр доступен начиная с версии 0.6.0. Тип:array. Возможные параметры:uri– адрес master-узла хранилища конфигурации для типаconfig_storage, указанный внутри каждого объекта в массивеendpoints. Тип:string;login– имя пользователя для доступа к хранилищу конфигурации. Тип:string;password– пароль для доступа к хранилищу конфигурации. Тип:string;params– дополнительные параметры подключения к хранилищу. Возможные параметры:ssl_key_file– путь к закрытому ключу. Тип:string;ssl_cert_file– путь к сертификату. Тип:string;ssl_ca_file– путь к корневому сертификату. Тип:string;ssl_ciphers– список наборов шифров TLS, разделенных двоеточиями. Тип:string;ssl_password– пароль для зашифрованного закрытого ключа SSL. Тип:string;ssl_password_file– текстовый файл, содержащий пароли для зашифрованных ключей SSL. Тип:string;
uri– адрес master-узла хранилища конфигурации для типаconfig_storage. Параметр удален начиная с версии 0.6.0. Тип:string,key-value;login– имя пользователя для доступа к хранилищу конфигурации. Параметр удален начиная с версии 0.6.0. Тип:string;password– пароль для доступа к хранилищу конфигурации. Параметр удален начиная с версии 0.6.0. Тип:string;timeout– время ожидания выполнения запроса в секундах. Тип:number. Значение по умолчанию: 1. В версии 0.7.0 параметр переименован изrequest_timeoutвtimeout;prefix– префикс, под которым хранится конфигурация. Параметр доступен начиная с версии 0.4.0. Тип:string;params– дополнительные параметры подключения к хранилищу. Набор параметров совпадает со списком опций функции Tarantool net_box.connect(). Параметр удален начиная с версии 0.6.0;uri.params- настройки SSL. Параметр удален начиная с версии 0.6.0. Возможные параметры:ssl_key_file– путь к закрытому ключу. Тип:string;ssl_cert_file– путь к сертификату. Тип:string;ssl_ca_file– путь к корневому сертификату. Тип:string;ssl_ciphers– список наборов шифров TLS, разделенных двоеточиями. Тип:string;ssl_password– пароль для зашифрованного закрытого ключа SSL. Тип:string;ssl_password_file– текстовый файл, содержащий пароли для зашифрованных ключей SSL. Тип:string.
Для типа etcd_v3 доступны следующие параметры:
endpoints– URI экземпляров хранилища конфигурации. Тип:array;login– имя пользователя для доступа к хранилищу конфигурации. Тип:string;password– пароль для доступа к хранилищу конфигурации. Тип:string;prefix– префикс, под которым хранится конфигурация. Значение по умолчанию:/tcf. Параметр доступен начиная с версии 0.4.0. Тип:string;lock_delay– время в секундах, в течение которого блокировка остается активной после разрыва соединения. После этого она автоматически снимается. Тип:number;request_timeout– время в секундах, в течение которого должен выполниться запрос к etcd. Если за это время ответа нет, запрос считается неудачным. Тип:number;http.request.timeout– время ожидания выполнения запроса в секундах. Тип:number. Значение по умолчанию: 1;http.request.unix_socket– Unix-сокет для подключения к хранилищу конфигурации. Тип:string;ssl.ca_file– путь к корневому сертификату. Тип:string;ssl.ca_path– путь к директории, содержащей сертификаты. Тип:string;ssl.ssl_cert– путь к сертификату. Тип:string;ssl.ssl_key– путь к закрытому ключу. Тип:string;ssl.verify_host– верифицировать имя сертификата (CN) с указанным хостом. Тип:boolean;ssl.verify_peer– верифицировать SSL-сертификаты. Тип:boolean;watchers.reconnect_max_attempts– максимальное число попыток подключения к хранилищу в случае ошибок подключения. Тип:integer;watchers.reconnect_timeout– время ожидания в секундах между попытками подключения к хранилищу в случае ошибок подключения. Тип:number.
Для типа etcd_v2 доступны следующие параметры:
endpoints– URI экземпляров хранилища конфигурации. Тип:array;username– имя пользователя для доступа к хранилищу конфигурации. Тип:string;password– пароль для доступа к хранилищу конфигурации. Тип:string;prefix– префикс, под которым хранится конфигурация. Значение по умолчанию:/tcf. Параметр доступен начиная с версии 0.4.0. Тип:string;lock_delay– длительность блокировки в секундах. Тип:number. Значение по умолчанию: 10.
Параметры экземпляра Gateway.
Тип: map
Если эта опция задана, TCF-worker будет управлять состоянием Gateway: автоматически отключать Gateway на пути из пассивного кластера
в активный и включать Gateway на пути из активного кластера в пассивный с помощью HTTP-адресов обработчиков запросов /api/v1/start и /api/v1/stop.
При этом репликация будет односторонней. Если секция cluster_federation.gateway отсутствует, репликация будет двусторонней.
Поддерживаемые параметры:
uri– URI для подключения к экземпляру Gateway. Тип:string;http_server– параметры для установки соединения к серверу. Тип:map. Поддерживаемые параметры:ssl_ca_file– путь к файлу корневого сертификата, который используется для проверки подлинности клиента при установке TLS-соединения. Тип:string;ssl_cert_file– путь к файлу сертификата сервера. Тип:string;ssl_key_file– путь к файлу закрытого ключа сервера. Тип:string.
Пример:
cluster_federation:gateway:uri: "http://localhost:8080"http_server:ssl_cert_file: "/etc/certs/gateway.crt"ssl_key_file: "/etc/certs/gateway.key"ssl_ca_file: "/etc/certs/gateway.ca"# ...
Параметры экземпляра Destination.
Тип: map
Опция cluster_federation.destination делает возможным плавное переключение без потери данных (graceful toggle),
если при отправке запроса на HTTP-адрес обработчика /api/v1/status приходит ответ с HTTP-кодом 200
и в теле ответа содержится статус connected (соединение установлено) или streaming (репликация активна).
Поддерживаемые параметры:
uri– URI для подключения к экземпляру Gateway. Тип:string;http_server– параметры для установки соединения к серверу. Тип:map. Поддерживаемые параметры:ssl_ca_file– путь к файлу корневого сертификата, который используется для проверки подлинности клиента при установке TLS-соединения. Тип:string;ssl_cert_file– путь к файлу сертификата сервера. Тип:string;ssl_key_file– путь к файлу закрытого ключа сервера. Тип:string.
Пример:
cluster_federation:destination:uri: "http://localhost:8080"http_server:ssl_cert_file: "/etc/certs/destination.crt"ssl_key_file: "/etc/certs/destination.key"ssl_ca_file: "/etc/certs/destination.ca"# ...
Доступно с версии 0.9.0.
Параметры авторизации для HTTP API кластера Tarantool Cartridge.
Поддерживаемые параметры:
provider– имя провайдера. На текущий момент поддерживается только значениеkeycloak. Тип:string;provider_params– параметры провайдера Keycloak. Тип:map. Поддерживаемые параметры:url– URL сервера Keycloak. Тип:string;ssl– параметры TLS для HTTP API Keycloak. Тип:map. Поддерживаемые параметры:ca_file– путь к файлу корневого сертификата, который используется для проверки подлинности клиента при установке TLS-соединения. Тип:string;cert_file– путь к файлу сертификата сервера. Тип:string;key_file– путь к файлу закрытого ключа сервера. Тип:string;
roles– список с соответствием ролей из Keycloak и правил авторизации для кластера Tarantool Cartridge. Тип:map. Поддерживаемые параметры:info– чтение статусов кластеров и метрик. Дает доступ к HTTP-адресам обработчиков запросов: /tcf/status, /tcf/is_active, /tcf/clusters (TCF-worker) и /api/v1/status (Destination). Значение по умолчанию:TCF_INFO. Тип:string;toggle– управление репликацией. Дает доступ ко всем адресам обработчиков запросов, кроме /api/v1/rebootstrap (Destination). Значение по умолчанию:TCF_TOGGLE. Тип:string;admin– полный доступ ко всем адресам обработчиков запросов, включая/api/v1/rebootstrap. Значение по умолчанию:TCF_ADMIN. Тип:string;
client_id– имя сервисного клиента. Тип:string;client_secret_path– путь к файлу с секретом клиента. Тип:string. Для повышения безопасности необходимо создать текстовый файл с секретом внутри;realm– имя областиrealm, в которой создан сервисный клиент. Тип:string.
Компоненты Gateway и Destination предоставляют HTTP API, к которому технологическая роль TCF-worker делает запросы внутри кластера Tarantool Cartridge.
Для таких внутренних запросов используются параметры client_id, client_secret_path и realm.
Чтобы эти запросы работали корректно:
-
Заполните поля cluster_federation.gateway или cluster_federation.destination в конфигурации TCF-worker.
-
Создайте конфиденциального клиента с включенным сервис-аккаунтом
serviceAccountsEnabled=true. Клиент должен иметь рольtoggleилиadmin. Через этого клиента будут выписываться токены для обращения TCF-worker к компонентам Gateway/Destination. -
Добавьте параметры
authorization.provider_params.client_id,authorization.provider_params.client_secret_pathиauthorization.provider_params.realmв конфигурацию.
Узнайте также про настройку обнаружения отзыва токена для Gateway и Destination.
Пример:
cluster_federation:authorization:provider: keycloakprovider_params:url: "https://keycloak.example.com/"roles:info: ORDERDB_TCF_INFOtoggle: ORDERDB_TCF_TOGGLEadmin: ORDERDB_TCF_ADMINclient_id: "client"client_secret_path: "/path/to/file"realm: "myrealm"ssl:ca_file: "/etc/ssl/certs/keycloak-ca.pem"cert_file: "/etc/ssl/certs/client.pem"key_file: "/etc/ssl/private/client-key.pem"
Время (в секундах), через которое может произойти автоматическое переключение состояния кластеров.
Тип: number
Значение по умолчанию: 4
Включить сервис проверки доступности файловой системы.
Тип: boolean
Значение по умолчанию: true
Время (в секундах) захвата флага активным координатором. Если активный координатор вышел из строя и в активном кластере не осталось доступных координаторов, будет произведено переключение статусов кластеров.
Тип: number
Значение по умолчанию: 20
Периодичность (в секундах) опроса проверки состояния кластера координатором.
Каждая последующая неудачная проверка увеличивает счетчик suspect_counts на 1.
См. также max_suspect_count.
Тип: number
Значение по умолчанию: 3
Максимальное значение счетчика suspects_counts, после которого координатор складывает полномочия и производится переключение состояния кластеров.
См. также health_check_delay.
Тип: number
Значение по умолчанию: 3