Кластерные роли¶
В этой главе приводятся рекомендации и инструкции по настройке кластерных ролей на экземплярах TDG.
В TDG существует четыре основных кластерных роли:
Core
: настройка и администрирование.Storage
: проверка и хранение данных.Runner
: исполнение бизнес-логики с помощью кода на Lua.Connector
: обмен данными с внешними системами.
Подробная информация о кластерных ролях приведена в разделе Кластерные роли главы Архитектура.
Рекомендации по назначению ролей на экземплярах¶
Исходя из сущности ролей и механизмов их работы, можно дать следующие рекомендации по организации кластера и назначению ролей на экземплярах:
Роль
core
: все экземпляры должны быть объединены в один набор реплик для обеспечения отказоустойчивой работы ядра TDG. В кластере может быть только один набор реплик с рольюcore
.Роль
storage
: для обеспечения распределения (sharding) и резервирования экземпляры должны объединяться в наборы реплик из двух и более экземпляров. Точное число экземпляров в наборе реплик определяется требованиями бизнес-решения к избыточности хранения данных. Для большей надёжности рекомендуется объединять в каждом наборе реплик экземпляры из разных дата-центров. Количество наборов репликstorage
следует масштабировать горизонтально пропорционально объему данных.Роль
runner
: все экземплярыrunner
эквивалентны и не хранят состояние, поэтому нет необходимости объединять их в наборы реплик. Количество экземпляровrunner
следует масштабировать горизонтально в зависимости от входящей нагрузки и утилизации CPU.Роль
connector
: все экземплярыconnector
эквивалентны и не хранят состояние, поэтому нет необходимости объединять их в наборы реплик. Количество экземпляровconnector
следует масштабировать горизонтально в зависимости от входящей нагрузки и утилизации CPU.Объединение ролей
connector
иrunner
: обычно имеет смысл назначать ролиconnector
иrunner
на экземпляры вместе. Таким образом минимизируется сетевое взаимодействие при обработке входящих объектов или вызове сервисов извне.
Настройка кластерных ролей через WebUI¶
Для настройки кластерных ролей через веб-интерфейс TDG используются инструменты на вкладке Cluster.
Назначение ролей новым экземплярам¶
Чтобы назначить роль экземпляру впервые, найдите его в списке Unconfigured Instances и нажмите соответствующую кнопку Configure.
В открывшемся окне вы можете назначить роль одним из двух способов:
Создать новый набор реплик с нужными ролями. Для этого введите имя нового набора реплик, выберите необходимые роли и нажмите Create replica set.
Добавить экземпляр в существующий набор реплик. Для этого перейдите на вкладку Join replica set, выберите один из существующих наборов реплик с необходимыми ролями и нажмите Join replica set.
Изменение ролей¶
Чтобы изменить роли набора реплик, откройте окно его редактирования (Edit replica set) и включите или отключите роли. Эти изменения применятся ко всем экземплярам выбранного набора реплик.
Warning
При отключении роли storage
на наборе реплик необходимо перераспределить
сегменты данных, которые на нём хранятся, на другие наборы реплик.
Для этого перед отключением роли storage
установите набору реплик вес
(Replica set weight) равным 0
и нажмите Save.
После этого убедитесь, что в наборе реплик не осталось сегментов данных
и отключите на нём роль storage
.
Настройка кластерных ролей через Ansible¶
Если вы разворачиваете кластер TDG с помощью Ansible,
вы можете определить наборы реплик и их роли в inventory-файле hosts.yml
.
Наборы реплик и их роли определяются в inventory-файле в разделе all.children
.
Для каждого набора реплик необходимо создать узел с именем replicaset_<name>
,
где <name>
– название, под которым набор реплик будет использоваться в кластере.
Пример создания набора реплик с именем storage_01
:
all:
children:
replicaset_storage_01:
В узле набора реплик задаются два раздела:
vars
– параметры набора реплик, в том числе параметрroles
– список назначенных ролей.hosts
– список узлов, входящих в набор реплик.
Пример конфигурации набора реплик с ролью storage
из двух узлов:
all:
children:
replicaset_storage_01:
vars: # replica set configuration
replicaset_alias: storage-01
weight: 1
failover_priority:
- storage-01 # leader
- storage-01-r
roles:
- 'storage'
Конфигурация кластера из пяти узлов с тремя наборами реплик (два storage
и
один с ролями core
, runner
, connector
) может выглядеть следующим образом:
all:
children:
replicaset_storage_01:
vars: # replica set configuration
replicaset_alias: storage-01
weight: 1
failover_priority:
- storage-01 # leader
- storage-01-r
roles:
- 'storage'
hosts: # replica set instances
storage-01:
storage-01-r:
replicaset_storage_02:
vars: # replica set configuration
replicaset_alias: storage-02
weight: 1
failover_priority:
- storage-02 # leader
- storage-02-r
roles:
- 'storage'
hosts: # replica set instances
storage-02:
storage-02-r:
replicaset_app_01:
vars: # replica set configuration
replicaset_alias: app-01
failover_priority:
- app-01 # leader
roles:
- 'core'
- 'connector'
- 'runner'