Развёртывание кластера ClickHouse в Docker Swarm
Данная инструкция предназначена для развёртки трёх и более экземпляров ClickHouse.
Остановите платформу, выполнив следующую команду:
/var/lib/visiology/scripts/run.sh --stop
Выполните шаги 1 - 6, описанные в разделе Ускорение загрузки данных (в пункте 5 заменять значения для
RefreshDataJob__ParallelWorkers
иHangfire__WorkerCount
необязательно).В файле
/var/lib/visiology/scripts/v3/visiology3.yml
для каждого экземпляра Clickhouse, добавленного на втором шаге (в секцииclickhouse-1
,clickhouse-2
,clickhouse-n
), необходимо внести в секциюenvironment
переменную с соответствующим ему значением:SERVER_ID: 1 SERVER_ID: 2 SERVER_ID: n
В том же файле
/var/lib/visiology/scripts/v3/visiology3.yml
для каждой секцииclickhouse-1
,clickhouse-2
,clickhouse-n
и т.д. добавить строки в секциюconfigs
:- source: clickhousecluster target: /etc/clickhouse-server/config.d/clickhousecluster.xml
В файле
/var/lib/visiology/scripts/v3/visiology3.yml
services
добавьте нужное количество сервисовclickhouse-keeper
следующего вида:clickhouse-keeper-1: image: ${CLICKHOUSE_KEEPER_TAG} environment: SERVER_ID: 1 configs: - source: clickhousekeeper target: /etc/clickhouse-keeper/keeper_config.xml <<: [ *logging-options ] networks: visiology-3: labels: component: "v3-clickhouse-keeper-1"
Обратите внимание, что при копировании следует заменить индексы в строчках 1, 4, 12.
В файле
/var/lib/visiology/scripts/v3/visiology3.yml
в секцииdata-management-service/environment
заменить строкуCLICKHOUSE_HOST: ${CLICKHOUSE_HOST_1}
наОтредактируйте конфигурацию
formula-engine
в файле/var/lib/visiology/scripts/v3/configs/viqube2.json
, изменив поля следующим образом:где
EtlNodes
– ноды, на которых будет выполняться ETL. Вы можете, например, выделить ноды только для ETL, чтобы не влиять на производительность DAX-запросов.QueryNodes
– ноды, на которые будут отправляться запросы DAX.TargetReplicaNodesCount
– количество узлов-реплик, на которых должна храниться копия данных или выполняться операция. То есть, кластер будет пытаться хранить данные на таком количестве узлов.ConfirmationReplicaNodesCount
– количество узлов-реплик, которые должны подтвердить выполнение операции, прежде чем эта операция будет считаться завершённой и подтверждённой.Предположим, что
TargetReplicaNodesCount = 3
, аConfirmationReplicaNodesCount = 2
. Это означает, что кластер будет пытаться загрузить данные на три узла. Если один из узлов выйдет из строя в процессе загрузки, то загрузка будет считаться успешной, т.к. только двум узлам нужно подтвердить успешность операции. Соответственно, для достижения отказоустойчивости, значениеConfirmationReplicaNodesCount
должен быть меньше, чем значениеTargetReplicaNodesCount
.
Отредактируйте конфигурацию
data-management-service
в файле/var/lib/visiology/scripts/v3/configs/datamanagementservice.json
, добавив в секциюConnectionStrings
строки"clickhouse2", "clickhouse3", "clickhouseN"
В каждой строке нужно поменять цифру на соответствующую в частиHost={{ env "CLICKHOUSE_HOST_1" }}
Загрузите образы
clickhouse, clickhouse-keeper, jdbc-bridge, cadvisor, node-exporter, promtail
в память докера на каждом сервере.Пересоздайте конфигурационные файлы, выполнив следующую команду:
Запустите платформу, выполнив следующую команду:
/var/lib/visiology/scripts/run.sh --start v3