1. Добавьте метки на каждый узел, начиная с главного. Обратите внимание, что цифра после v3-clickhouse
меняется:
docker node update --label-add=v3-clickhouse-1=true WORKER_NODE_ID_1
docker node update --label-add=v3-clickhouse-2=true WORKER_NODE_ID_2
docker node update --label-add=v3-clickhouse-3=true WORKER_NODE_ID_3
…
docker node update --label-add=monitoring-v3=true WORKER_NODE_ID_2
docker node update --label-add=monitoring-v3=true WORKER_NODE_ID_3
…
Идентификаторы узлов (WORKER_NODE_ID
_…) можно получить с помощью следующей команды:
2. В файле /var/lib/visiology/scripts/v3/defaults.env
измените количество узлов CLICKHOUSE_COUNT
и путь к конфигурации кластера CLICKHOUSE_CLUSTER_CONFIG_PATH=/etc/clickhouse-server/config.d
3. В папке/var/lib/visiology/scripts/v3/extended-services
cоздайте копии файла /var/lib/visiology/scripts/v3/visiology3-ch-1.yml
в количестве, равном количеству узлов (..-ch-2.yml
,..-ch-3.yml
и т.д. , вместо [..]
порядковый номер файла в папке).
В копиях измените node.labels.v3-clickhouse-1 (строка 15), clickhouse-1 (строка 28)
, JDBC_BRIDGE_HOST_1 (строка 59), SERVER_ID:1 (строка 60), v3-clickhouse-1 (строка 70), , jdbc-bridge-1 (строка 75), v3-jdbc-bridge-1 (строка 84)
в соответствие с номером сервера , обозначенном в имени файла [..-ch-НОМЕР]
.
4. Внесите изменения в файл /var/lib/visiology/scripts/v3/custom-configs/cluster-formula-engine.json
:
где
EtlNodes
– узлы, на которых будет выполняться ETL. Можно выделить узлы только для ETL, чтобы не влиять на производительность DAX-запросов.
QueryNodes
– узлы, на которые будут отправляться запросы DAX.
TargetReplicaNodesCount
– количество узлов-реплик, на которых должна храниться копия данных или выполняться операция. То есть, кластер будет пытаться хранить данные на таком количестве узлов.
ConfirmationReplicaNodesCount
– количество узлов-реплик, которые должны подтвердить выполнение операции, прежде чем эта операция будет считаться завершённой и подтверждённой.
Предположим, что TargetReplicaNodesCount = 3
, а ConfirmationReplicaNodesCount = 2
. Это означает, что кластер будет пытаться загрузить данные на три узла. Если один из узлов выйдет из строя в процессе загрузки, то загрузка будет считаться успешной, т.к. только двум узлам нужно подтвердить успешность операции. Соответственно, для достижения отказоустойчивости, значение ConfirmationReplicaNodesCount
должно быть меньше, чем значение TargetReplicaNodesCount
.
В каждой строке с "ConnectionString"
нужно заменить цифру на соответствующую в части Host={{ env "CLICKHOUSE_HOST_1" }}
5. Внесите изменения в файл /var/lib/visiology/scripts/v3/custom-configs/cluster-datamanagementservice.json
:
В каждой строке с "clickhouse.."
необходимо поменять цифру на соответствующую в части Host={{ env "CLICKHOUSE_HOST_1" }}
6. Внесите изменения в файл /var/lib/visiology/scripts/v3/defaults.env
:
7. В файле /var/lib/visiology/scripts/v3/env-files/fe.env
измените значения RefreshDataJob__ParallelWorkers
и Hangfire__WorkerCount
на количество узлов с базой данных Clickhouse, умноженное на 2, т.е. для четырех узлов с базой Clickhouse требуется указать значение 8.
8. Создайте файл /var/lib/visiology/scripts/v3/extended-services/ПОРЯДКОВЫЙ_НОМЕР-backup-service.yml
:
поле CLICKHOUSE_HOSTS
перечисляет все переменные CLICKHOUSE_HOST_..
из /var/lib/visiology/scripts/v3/defaults.env
9. Переименуйте файл /var/lib/visiology/scripts/v3/extended-services/30-keepers.ym_
в /var/lib/visiology/scripts/v3/extended-services/30-keepers.yml
Преднастроены 3 сервиса. Если необходимо, добавьте дополнительные сервисы clickhouse-keeper
по аналогии, изменяя соответствующие номера.