Конфигурация и запуск кластеров¶
Для работы TCF требуется настроить два идентичных кластера, один из которых в системе TCF будет активным, а другой пассивным:
активный кластер принимает запросы от приложения;
пассивный кластер содержит копию данных активного кластера, но не принимает запросы от приложения.
В этом разделе описано, как задать конфигурацию для каждого из кластеров, а затем запустить их. В приведенном примере разворачиваются два кластера Tarantool DB, каждый кластер состоит из набора реплик с 4 узлами (1 роутером и 3 экземплярами хранилища). Для корректной работы примера необходимо использовать Tarantool DB версии 2.2.0 или выше. Поддерживаемые типы кластеров описаны в соответствующем разделе.
Перед настройкой и запуском кластеров требуется выполнить следующие шаги:
Распаковать архивы с TCF и TDB версии 2.2.0 или выше. Для этого необходимо заранее выполнить шаги из соответствующего раздела руководства по установке.
Подготовить и запустить кластер хранилища состояния на основе etcd или Tarantool – в этом кластере хранятся конфигурация кластеров и их состояние активный-пассивный. В данном примере используется хранилище состояния на основе Tarantool.
Создание конфигурации кластеров Tarantool DB¶
Конфигурация для каждого из кластеров задается в отдельном YAML-файле конфигурации. Эта конфигурация задает топологию кластера и параметры его экземпляров. Полный список опций конфигурации для кластеров Tarantool и продуктов на его основе приведен в справочнике в документации Tarantool.
Файлы с финальной конфигурацией активного и пассивного кластеров config_cluster_a.yml
и config_cluster_b.yml
приведены в разделе Создание кластеров этого руководства.
Настройка пользователей и соединения¶
Создайте файл config_cluster_a.yml
, в который будет добавлена конфигурация активного кластера (далее кластер А).
В созданном файле в секции credentials.users задайте пользователей, которые взаимодействуют с компонентами Tarantool или TCF и
укажите, какие права они имеют:
credentials:
users:
dbadmin:
password: secret
roles: [super]
replicator:
password: replicator_password
roles:
- replication
- dictionary_api_service
tcm_tarantool:
password: tcm_tarantool_password
roles: [super]
storage:
password: storage_password
roles: [sharding]
tcf_replicator:
password: secret
roles: [super]
tcf_dml:
password: secret
roles: [super]
Здесь:
dbadmin
– администратор TCF;replicator
– пользователь для соединения узлов кластера А друг с другом;tcm_tarantool
– пользователь для подключения TCM к экземплярам кластера А;storage
– пользователь используется при запросах роутера к экземплярам хранилища;tcf_replicator
– пользователь для репликации между кластерами, которыми управляет TCF;tcf_dml
– пользователь используется внешними пользователями/приложениями для выполнения операций с данными (DML – Data Manipulation Language).
Подробнее о пользователях, необходимых для корректной работы TCF, можно узнать в разделе Роли и пользователи.
Для корректной работы кластера Tarantool нужно настроить связь между его экземплярами. Параметры подключения можно задать в секции iproto:
iproto:
advertise:
peer:
login: replicator
sharding:
login: storage
В секции credentials
создаются пользователи replicator
и storage
.
iproto.advertise.peer.login
указывает, что другие экземпляры кластера А должны подключаться к адресу, определенному в
опции iproto.listen
, с помощью пользователя replicator
.
iproto.advertise.sharding.login
указывает, что роутер должен подключаться к экземплярам хранилища на адрес,
определенный в iproto.listen
, с помощью пользователя storage
.
Узнать больше: Конфигурация соединений в Tarantool.
Настройка репликации¶
Настройки репликации можно задать в секции replication:
replication:
failover: manual
bootstrap_strategy: config
#..
groups:
routers:
replicasets:
rsrouter001:
leader: router001
bootstrap_leader: router001
#..
Здесь:
replication.failover
– режим выбора узла лидера в наборе реплик. В примере узел лидера назначается явно в опции<replicaset_name>.leader
;replication.bootstrap_strategy
– выбранная стратегия для первоначальной загрузки набора реплик. В примере узел для первоначальной загрузки задается в опции<replicaset_name>.bootstrap_leader
.
Конфигурация наборов реплик и экземпляров¶
Чтобы задать топологию кластера и определить настройки для конкретных экземпляров, в файле конфигурации используются секции
groups
, replicasets
и instances
.
Узнать больше: Общая информация о конфигурации в Tarantool.
groups:
routers:
replicasets:
rsrouter001:
#...
instances:
router001:
#...
iproto:
listen:
- uri: 127.0.0.1:3307
advertise:
client: 127.0.0.1:3307
app:
module: app.vshard_bootstrapper
sharding:
roles: [router]
#...
Здесь:
iproto.listen.uri
– адрес и порт для приема входящих запросов, заданный для конкретного экземпляра;iproto.advertise.client
– адрес и порт, позволяющий другим экземплярам кластера или клиенту подключиться к текущему экземпляру.
Настройка технологических ролей¶
Технологическая роль – это модуль, реализующий определенные функции или логику. Подробная информация о технологических ролях приведена в документации Tarantool. Для работы непосредственно TCF в конфигурации кластеров используются две технологические роли – roles.tcf-worker и roles.tcf-coordinator. Другие технологические роли, заданные для экземпляров в этом руководстве, используются для работы самих кластеров Tarantool DB.
Включить или выключить нужную технологическую роль для конкретных экземпляров в конфигурации можно без перезапуска этих экземпляров. Технологическая роль запускается при загрузке или перезагрузке конфигурации.
groups:
routers:
#...
roles: [ roles.tcf-worker, roles.tcf-coordinator, roles.httpd, roles.crud-router, dictionary.roles.router ]
Здесь roles
– список технологических ролей, заданных на конкретных экземплярах кластера.
В этом руководстве в конфигурации кластера используются следующие технологические роли:
roles.tcf-worker
– TCF-worker инициализирует и координирует переключение статусов кластеров (активный ↔ пассивный) и предоставляет базовый HTTP API для управления TCF. Назначается всем экземплярам типаstorage
иrouter
в кластере Tarantool, которыми управляет TCF;roles.tcf-coordinator
– TCF-координатор отвечает за автоматическое переключение состояния. Чтобы обеспечить отказоустойчивость, в каждом кластере должно быть запущено два и более экземпляра Tarantool с этой ролью. Назначается выборочным экземплярам типаstorage
иrouter
в кластере Tarantool, которыми управляет TCF;roles.httpd
– работа с HTTP-запросами для управления TCF. Роль задается на всех экземплярах кластера. Адрес отправки HTTP-запроса для конкретного экземпляра определяется в секцииroles.httpd.default.listen
;roles.crud-router
– предоставляет IPROTO API для CRUD-операций (создание, чтение, обновление, удаление) на кластере. Задается на узлах-роутерах. Используется совместно с рольюroles.crud-storage
, которая задается на узлах типаstorage
для выполнения CRUD-операций. Узнать больше в документации Tarantool DB;dictionary.roles.router
– внешнее управление словарями в Tarantool DB. Задается на узлах-роутерах. Используется совместно с рольюdictionary.roles.storage
, которая задается на узлах типаstorage
для хранения данных словарей. Узнать больше в документации Tarantool DB;roles.expirationd
– контроль за устаревающими данными. Узнать больше в документации Tarantool DB.
Настройки технологических ролей для конкретного экземпляра или группы экземпляров задаются в секции roles_cfg
.
Пример конфигурации roles.tcf-worker
:
roles_cfg:
roles.tcf-worker:
cluster_1: cluster_a
cluster_2: cluster_b
initial_status: active
dml_users: [ tcf_dml ]
replication_user: tcf_replicator
replication_password: secret
storage: config_storage
storage_params:
endpoints:
- uri: 127.0.0.1:3301
login: tarantool_config_storage
password: tarantool_config_storage_password
- uri: 127.0.0.1:3302
login: tarantool_config_storage
password: tarantool_config_storage_password
- uri: 127.0.0.1:3303
login: tarantool_config_storage
password: tarantool_config_storage_password
В примере настройки технологической роли roles.tcf-worker
заданы на верхнем уровне конфигурации (global level), поскольку
эти настройки одинаковые для всех экземпляров кластера.
Здесь:
cluster_1
– имя кластера, для которого применяется конфигурация;cluster_2
– имя соседнего кластера в системе TCF. Для кластера B значения параметровcluster_1
иcluster_2
меняются местами:сluster_1
:cluster_b
;сluster_2
:cluster_a
;
initial_status
– состояние (активный-пассивный), в которое кластер переходит при первом запуске с использованием TCF. Для кластера А состояние при первом запуске будетactive
, для кластера B –passive
;dml_users
– список пользователей, доступ которым заблокирован на пассивном кластере;replication_user
иreplication_password
– имя и пароль пользователя для подключения репликаторов TCF;storage
– тип хранилища конфигурации;storage_params
– параметры хранилища конфигурации:endpoints.uri
– адреса узлов хранилища конфигурации;endpoints.login
– пользователь для подключения экземпляров кластера к узлам хранилища конфигурации;endpoints.password
– пароль для подключения экземпляров кластера к узлам хранилища конфигурации.
Пример конфигурации roles.tcf-coordinator
:
replicasets:
rsrouter001:
#...
instances:
router001:
roles_cfg:
#...
roles.tcf-coordinator:
storage: config_storage
storage_params:
endpoints:
- uri: 127.0.0.1:3301
login: tarantool_config_storage
password: tarantool_config_storage_password
- uri: 127.0.0.1:3302
login: tarantool_config_storage
password: tarantool_config_storage_password
- uri: 127.0.0.1:3303
login: tarantool_config_storage
password: tarantool_config_storage_password
Note
Если для хранения конфигурации кластера и состояния TCF используется одно и то же хранилище конфигурации, секции
roles.tcf-coordinator.storage и
roles.tcf-coordinator.storage_params` в конфигурации можно опустить.
Полный список поддерживаемых опций конфигурации roles.tcf-worker
и roles.tcf-coordinator
можно найти в разделе
Конфигурация кластера в YAML (Tarantool 3.x).
Настройка кластеров Tarantool DB¶
Создание кластеров¶
Перейдите в директорию
tarantooldb
и выполните в ней команду tt init. Команда создаст новое окружение для консольной утилиты tt CLI, в том числе файл конфигурацииtt.yaml
.В директории
instances.enabled
созданного окружения создайте директории кластеровcluster_a
иcluster_b
.В директории
instances.enabled/cluster_a
добавьте файлcluster_config_a.yml
с конфигурацией кластера А, приведенной ниже. Экземпляры в этой конфигурации принимают входящие запросы на порты 3304–3307. Особенности конфигурации кластеров были описаны ранее в разделе Создание конфигурации кластеров Tarantool DB.credentials: users: dbadmin: password: secret roles: [super] replicator: password: replicator_password roles: - replication - dictionary_api_service tcm_tarantool: password: tcm_tarantool_password roles: [super] storage: password: storage_password roles: [sharding] tcf_replicator: password: secret roles: [super] tcf_dml: password: secret roles: [super] replication: failover: manual bootstrap_strategy: config iproto: advertise: peer: login: replicator sharding: login: storage roles_cfg: roles.tcf-worker: cluster_1: cluster_a cluster_2: cluster_b initial_status: active dml_users: [ tcf_dml ] replication_user: tcf_replicator replication_password: secret storage: config_storage storage_params: endpoints: - uri: 127.0.0.1:3301 login: tarantool_config_storage password: tarantool_config_storage_password - uri: 127.0.0.1:3302 login: tarantool_config_storage password: tarantool_config_storage_password - uri: 127.0.0.1:3303 login: tarantool_config_storage password: tarantool_config_storage_password groups: routers: replicasets: rsrouter001: leader: router001 bootstrap_leader: router001 instances: router001: roles_cfg: roles.tcf-coordinator: storage: config_storage storage_params: endpoints: - uri: 127.0.0.1:3301 login: tarantool_config_storage password: tarantool_config_storage_password - uri: 127.0.0.1:3302 login: tarantool_config_storage password: tarantool_config_storage_password - uri: 127.0.0.1:3303 login: tarantool_config_storage password: tarantool_config_storage_password roles.httpd: default: listen: localhost:10001 iproto: listen: - uri: 127.0.0.1:3307 advertise: client: 127.0.0.1:3307 app: module: app.vshard_bootstrapper sharding: roles: [router] roles: - roles.tcf-worker - roles.tcf-coordinator - roles.httpd - roles.crud-router - dictionary.roles.router roles_cfg: roles.crud-router: stats: true stats_driver: metrics stats_quantiles: true stats_quantile_tolerated_error: 0.001 stats_quantile_age_buckets_count: 5 stats_quantile_max_age_time: 180 storages: memtx: memory: 536870912 #512MiB replicasets: replicaset001: leader: instance004 bootstrap_leader: instance004 instances: instance004: roles_cfg: roles.httpd: default: listen: localhost:10101 roles.tcf-worker: cluster_1: cluster_a cluster_2: cluster_b initial_status: active dml_users: [ tcf_dml ] replication_user: tcf_replicator replication_password: secret storage: config_storage storage_params: endpoints: - uri: 127.0.0.1:3301 login: tarantool_config_storage password: tarantool_config_storage_password - uri: 127.0.0.1:3302 login: tarantool_config_storage password: tarantool_config_storage_password - uri: 127.0.0.1:3303 login: tarantool_config_storage password: tarantool_config_storage_password iproto: listen: - uri: 127.0.0.1:3304 advertise: client: 127.0.0.1:3304 instance005: roles_cfg: roles.httpd: default: listen: localhost:10102 iproto: listen: - uri: 127.0.0.1:3305 advertise: client: 127.0.0.1:3305 instance006: roles_cfg: roles.httpd: default: listen: localhost:10103 iproto: listen: - uri: 127.0.0.1:3306 advertise: client: 127.0.0.1:3306 sharding: roles: [storage] roles: - roles.tcf-worker - roles.httpd - roles.crud-storage - roles.expirationd - dictionary.roles.storage roles_cfg: roles.expirationd: []
В директории
instances.enabled/cluster_a
создайте файлinstances.yml
– список экземпляров, которые будут запущены в текущем окружении:instance004: instance005: instance006: router001:
В директории
instances.enabled/cluster_a
создайте файлconfig.yml
– с настройками хранилища конфигурации на основе Tarantool, запущенного ранее.config: storage: endpoints: - uri: 127.0.0.1:3301 login: tarantool_config_storage password: tarantool_config_storage_password - uri: 127.0.0.1:3302 login: tarantool_config_storage password: tarantool_config_storage_password - uri: 127.0.0.1:3303 login: tarantool_config_storage password: tarantool_config_storage_password prefix: /default1
Здесь:
config.storage.endpoints.uri
– адреса узлов хранилища конфигурации;config.storage.endpoints.login
– пользователь для подключения экземпляров кластера к узлам хранилища конфигурации;config.storage.endpoints.password
– пароль для подключения экземпляров кластера к узлам хранилища конфигурации;config.storage.prefix
– префикс кластера, под которым хранится конфигурация для конкретного кластера.
В директории
instances.enabled/cluster_b
создайте файлcluster_config_b.yml
с конфигурацией кластера B, приведенной ниже. Экземпляры в этой конфигурации принимают входящие запросы на порты 3324–3327. Особенности конфигурации кластеров были описаны ранее в разделе Создание конфигурации кластеров Tarantool DB.credentials: users: dbadmin: password: secret roles: [super] replicator: password: replicator_password roles: - replication - dictionary_api_service tcm_tarantool: password: tcm_tarantool_password roles: [super] storage: password: storage_password roles: [sharding] tcf_replicator: password: secret roles: [super] tcf_dml: password: secret roles: [super] replication: failover: manual bootstrap_strategy: config iproto: advertise: peer: login: replicator sharding: login: storage roles_cfg: roles.tcf-worker: cluster_1: cluster_b cluster_2: cluster_a initial_status: passive dml_users: [ tcf_dml ] replication_user: tcf_replicator replication_password: secret storage: config_storage storage_params: endpoints: - uri: 127.0.0.1:3301 login: tarantool_config_storage password: tarantool_config_storage_password - uri: 127.0.0.1:3302 login: tarantool_config_storage password: tarantool_config_storage_password - uri: 127.0.0.1:3303 login: tarantool_config_storage password: tarantool_config_storage_password groups: routers: replicasets: rsrouter002: leader: router002 bootstrap_leader: router002 instances: router002: roles_cfg: roles.tcf-coordinator: storage: config_storage storage_params: endpoints: - uri: 127.0.0.1:3301 login: tarantool_config_storage password: tarantool_config_storage_password - uri: 127.0.0.1:3302 login: tarantool_config_storage password: tarantool_config_storage_password - uri: 127.0.0.1:3303 login: tarantool_config_storage password: tarantool_config_storage_password roles.httpd: default: listen: localhost:20001 iproto: listen: - uri: 127.0.0.1:3327 advertise: client: 127.0.0.1:3327 app: module: app.vshard_bootstrapper sharding: roles: [router] roles: - roles.tcf-worker - roles.tcf-coordinator - roles.httpd - roles.crud-router - dictionary.roles.router roles_cfg: roles.crud-router: stats: true stats_driver: metrics stats_quantiles: true stats_quantile_tolerated_error: 0.001 stats_quantile_age_buckets_count: 5 stats_quantile_max_age_time: 180 storages: memtx: memory: 536870912 #512MiB replicasets: replicaset002: leader: instance007 bootstrap_leader: instance007 instances: instance007: roles_cfg: roles.httpd: default: listen: localhost:11101 iproto: listen: - uri: 127.0.0.1:3324 advertise: client: 127.0.0.1:3324 instance008: roles_cfg: roles.httpd: default: listen: localhost:11102 iproto: listen: - uri: 127.0.0.1:3325 advertise: client: 127.0.0.1:3325 instance009: roles_cfg: roles.httpd: default: listen: localhost:11103 iproto: listen: - uri: 127.0.0.1:3326 advertise: client: 127.0.0.1:3326 sharding: roles: [storage] roles: - roles.tcf-worker - roles.httpd - roles.crud-storage - roles.expirationd - dictionary.roles.storage roles_cfg: roles.expirationd: []
В директории
instances.enabled/cluster_b
создайте файлinstances.yml
:instance007: instance008: instance009: router002:
В директории
instances.enabled/cluster_a
создайте файлconfig.yml
с настройками хранилища конфигурации на основе Tarantool, запущенного ранее.config: storage: endpoints: - uri: 127.0.0.1:3301 login: tarantool_config_storage password: tarantool_config_storage_password - uri: 127.0.0.1:3302 login: tarantool_config_storage password: tarantool_config_storage_password - uri: 127.0.0.1:3303 login: tarantool_config_storage password: tarantool_config_storage_password prefix: /default2
Note
Префикс, заданный в
storage.prefix
, должен быть уникальным для каждого из двух кластеров.На каждом из серверов в директориях
instances.enabled/cluster_a
иinstances.enabled/cluster_b
соответственно создайте директориюmigrations/scenario
. В этой директории создайте файл миграции001_migration.lua
:local helpers = require('tt-migrations.helpers') local function apply_scenario() local space = box.schema.space.create('writers') space:format({ {name = 'id', type = 'number'}, {name = 'bucket_id', type = 'number'}, {name = 'name', type = 'string'}, {name = 'age', type = 'number'}, }) space:create_index('primary', {parts = {'id'}}) space:create_index('bucket_id', {parts = {'bucket_id'}}) helpers.register_sharding_key('writers', {'id'}) end return { apply = { scenario = apply_scenario, }, }
В миграции создан шардированный спейс
writers
с ключом шардированияid
и первичным индексомprimary
.
Запуск TCM¶
В качестве веб-интерфейса кластеров Tarantool DB используется Tarantool Cluster Manager, или TCM. Tarantool Cluster Manager – это инструмент для настройки и отслеживания кластеров Tarantool EE и управления ими. Подробная информация о TCM приведена в документации Tarantool.
Задать настройки для запуска TCM можно в файле конфигурации.
Для этого перейдите в директорию кластера А tarantooldb/instances.enabled/cluster_a
и создайте в ней файл tcm.yml
со следующей конфигурацией:
mode: production
cluster:
connection-rate-limit: 512
tarantool-timeout: 10s
tarantool-ping-timeout: 5s
tt-command: tt
refresh-state-period: 5s
refresh-state-timeout: 4s
discovery-period: 4s
sharding-index: bucket_id
skew-time: 30s
security:
bootstrap-password: secret
http:
host: 127.0.0.1
port: 8080
show-stack-trace: False
trace: False
network: tcp
tls:
enabled: False
cert-file:
key-file:
server-name:
min-version: 0
max-version: 0
curve-preferences: []
cipher-suites: []
log:
default:
show-stack-trace: False
add-source: False
level: INFO
format: struct
output: file
file:
name: /var/log/tarantool/cluster-manager/tcm.log
maxsize: 1073741824
maxage: 0
maxbackups: 10
compress: True
storage:
provider: tarantool
tarantool:
username: tcm_config_storage
password: tcm_config_storage_password
addrs:
- 127.0.0.1:3301
- 127.0.0.1:3302
- 127.0.0.1:3303
addon:
enabled: False
addons-dir:
max-upload-size: 104857600
dev-addons-dir: []
limits:
users-count: 1000
clusters-count: 10
roles-count: 100
webhooks-count: 200
user-secrets-count: 10
user-websessions-count: 10
linked-cluster-users: 10
feature:
ttgraph: False
column-store: False
tqe: False
api-token: False
tcf: True
initial-settings:
clusters:
- name: Tarantool Cluster 1
id: 00000000-0000-0000-0000-000000000000
storage-connection:
provider: tarantool
tarantool-connection:
prefix: /default1
username: tcm_config_storage
password: tcm_config_storage_password
endpoints:
- 127.0.0.1:3301
- 127.0.0.1:3302
- 127.0.0.1:3303
tarantool-connection:
username: tcm_tarantool
password: tcm_tarantool_password
Здесь:
http.host
– адрес и порт, на которых будет запущен TCM. Если порт в команде не указан, TCM будет по умолчанию запущен на порту 8080;security.bootstrap-password
– пароль для первичного входа в TCM;storage
– настройки хранилища конфигурации и его узлов:provider
– тип хранилища конфигурации;tarantool.username
– имя пользователя для подключения TCM к хранилищу конфигурации на основе Tarantool;tarantool.password
– пароль пользователя для подключения TCM к хранилищу конфигурации на основе Tarantool;
initial-settings
– сущности, которые создаются автоматически при первом запуске TCM. Сущности в примере – это два кластера Tarantool DB.clusters.<cluster>.prefix
– префикс кластера. Кластеры используют общее хранилище конфигурации на основе Tarantool, но должны иметь различные префиксы. В конфигурации выше задан префикс/default1
для кластера Tarantool Cluster 1. Префикс для второго кластера будет задан позже в веб-интерфейсе TCF;clusters.<cluster>.storage-connection.tarantool-connection.username
– имя пользователя для подключения TCM к хранилищу конфигурации;clusters.<cluster>.storage-connection.tarantool-connection.password
– пароль пользователя для подключения TCM к хранилищу конфигурации;clusters.<cluster>.storage-connection.tarantool-connection.endpoints
– адреса узлов хранилища конфигурации;clusters.<cluster>.tarantool-connection.username
– имя пользователя для подключения TCM к экземплярам кластера;clusters.<cluster>.tarantool-connection.password
– пароль пользователя для подключения TCM к экземплярам кластера.
Полная информация об опциях конфигурации TCM (в частности, опции настройки etcd) приведена в документации TCM.
Запустить TCM с конфигурацией из файла можно так:
$ tcm -c tcm.yaml &
См. также Начало работы с TCM.
Настройка конфигурации кластера А¶
Перед запуском кластеров нужно загрузить их конфигурацию в TCM и задать необходимые настройки.
Определите текущий master-узел хранилища конфигурации с помощью команды
tt status
. В этом руководстве это узелinstance003
, имеющий адрес127.0.0.1:3303
:tt status configstorage INSTANCE STATUS PID MODE CONFIG BOX UPSTREAM configstorage:instance001 RUNNING 269163 RO ready running -- configstorage:instance002 RUNNING 269164 RO ready running -- configstorage:instance003 RUNNING 269165 RW ready running --
Вернитесь в домашнюю директорию и загрузите файл конфигурации кластера А
cluster_config_a.yml
в хранилище конфигурации. В параметрах команды при необходимости обновите адрес текущего master-узла хранилища конфигурации:$ tt cluster publish http://dbadmin:secret@127.0.0.1:3303/default1 tarantooldb/instances.enabled/cluster_a/cluster_config_a.yml
Чтобы войти в TCM, откройте в браузере адрес http://localhost:8080. Логин и пароль для входа:
Username:
admin
Password:
secret
Пароль для входа указан в конфигурации TCM в файле
tcm.yml
(см. опцию TCMsecurity.bootstrap-password
).При успешном применении конфигурации топология кластера A появится на вкладке Stateboard. Состояние экземпляров кластера А при этом будет отображаться как неактивное, так как они еще не запущены.
Настройка конфигурации кластера B¶
Перед запуском экземпляров кластеров A и B нужно создать кластер B в TCM и настроить его конфигурацию. Для этого:
В TCM откройте вкладку Clusters и нажмите кнопку Add.
На первом экране настройки (General) введите имя нового кластера
Tarantool Cluster 2
в поле Name.Переключитесь на второй экран настройки (Config storage connection), нажав кнопку Next.
На втором экране настройки (Config storage connection) укажите следующие значения:
в поле Provider –
tarantool
;в поле Prefix –
/default2
. Префиксы кластеров А и B должны отличаться друг от друга. В примере кластер А имеет префикс /default1, а кластер B -- /default2
;в поле Endpoints укажите узлы хранилища конфигурации:
127.0.0.1:3301 127.0.0.1:3302 127.0.0.1:3303
в поле Username –
tcm_config_storage
;в поле Password –
tcm_config_storage_password
.
Переключитесь на третий экран настройки (Tarantool connection), нажав кнопку Next.
На третьем экране настройки (Tarantool connection) укажите следующие значения:
в поле Username –
tcm_tarantool
;в поле Password –
tcm_tarantool_password
.
Нажмите Add, чтобы сохранить настройки нового кластера.
Загрузите файл конфигурации кластера B
cluster_config_b.yml
в хранилище конфигурации. В параметрах команды при необходимости обновите адрес текущего master-узла хранилища конфигурации TCF.$ tt cluster publish http://dbadmin:secret@127.0.0.1:3303/default2 tarantooldb/instances.enabled/cluster_b/cluster_config_b.yml
Запуск активного кластера¶
Скопируйте директории модулей в директории кластеров А и В:
cp -r tarantooldb/.rocks tarantooldb/instances.enabled/cluster_a cp -r tarantooldb/.rocks tarantooldb/instances.enabled/cluster_b cp -r tarantooldb/app tarantooldb/instances.enabled/cluster_a cp -r tarantooldb/app tarantooldb/instances.enabled/cluster_b
Перейдите в директорию
tarantooldb
и запустите активный кластер А:$ cd tarantooldb $ tt start cluster_a • Starting an instance [cluster_a:instance004]... • Starting an instance [cluster_a:instance005]... • Starting an instance [cluster_a:instance006]... • Starting an instance [cluster_a:router001]..
Проверьте состояние запущенных узлов кластера А:
$ tt status cluster_a INSTANCE STATUS PID MODE CONFIG BOX UPSTREAM cluster_a:instance004 RUNNING 417847 RW ready running -- cluster_a:instance005 RUNNING 417848 RO ready running -- cluster_a:instance006 RUNNING 417849 RO ready running -- cluster_a:router001 RUNNING 417850 RW ready running --
Загрузите файл миграции
001_migration.lua
в кластер А:$ tt migrations publish http://dbadmin:secret@127.0.0.1:3303/default1 ./instances.enabled/cluster_a/migrations • 001_migration.lua: successfully published to key "001_migration.lua"
Примените загруженные миграции:
$ tt migrations apply http://dbadmin:secret@127.0.0.1:3302/default1 --tarantool-username=dbadmin --tarantool-password=secret • replicaset001: • 001_migration.lua: successfully applied • rsrouter001: • 001_migration.lua: successfully applied
Запуск пассивного кластера¶
Запустите пассивный кластер B:
$ tt start cluster_b • Starting an instance [cluster_b:instance007]... • Starting an instance [cluster_b:instance008]... • Starting an instance [cluster_b:instance009]... • Starting an instance [cluster_b:router002]..
Проверьте состояние запущенных узлов кластера В:
$ tt status cluster_b INSTANCE STATUS PID MODE CONFIG BOX UPSTREAM cluster_b:instance007 RUNNING 418077 RW ready running -- cluster_b:instance008 RUNNING 418078 RO ready running -- cluster_b:instance009 RUNNING 418079 RO ready running -- cluster_b:router002 RUNNING 418080 RW ready running --
Загрузите файл миграции
001_migration.lua
в кластер В:$ tt migrations publish http://dbadmin:secret@127.0.0.1:3303/default2 ./instances.enabled/cluster_b/migrations • 001_migration.lua: successfully published to key "001_migration.lua"
Примените загруженные миграции:
$ tt migrations apply http://192.168.64.9:3301/tdb2 --tarantool-username=admin --tarantool-password=secret-cluster-cookie • replicaset002: • 001_migration.lua: successfully applied • rsrouter002: • 001_migration.lua: successfully applied
Проверка работы кластеров¶
Чтобы проверить состояние кластеров, в TCM выберите нужный кластер (Tarantool Cluster 1 или Tarantool Cluster 2) над вкладкой Stateboard в выпадающем списке Clusters. Всё настроено правильно, если на вкладке Stateboard все узлы в кластере подсвечены зеленым цветом.
Чтобы проверить примененную миграцию, перейдите на вкладку Tuples. При успешной миграции в списке появится спейс
writers
.Чтобы проверить текущее состояние кластеров, откройте вкладку TCF. Видно, что
cluster_a
перешел в активное состояние, а `cluster_b – в пассивное.Note
В Tarantool DB вкладка TCF в TCM поддерживается начиная с версии Tarantool DB 2.1.0. В более ранних версиях Tarantool DB 2.x используйте для проверки состояния кластеров соответствующий HTTP GET-запрос.