Развёртывание кластера 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.ymlservicesдобавьте нужное количество сервисов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}наCLICKHOUSE_HOST_1: ${CLICKHOUSE_HOST_1} CLICKHOUSE_HOST_2: ${CLICKHOUSE_HOST_2} CLICKHOUSE_HOST_3: ${CLICKHOUSE_HOST_3}Отредактируйте конфигурацию
formula-engineв файле/var/lib/visiology/scripts/v3/configs/viqube2.json, изменив поля следующим образом:"EtlNodes": ["clickhouse1", "clickhouse2", "clickhouse3"], "QueryNodes": ["clickhouse1", "clickhouse2", "clickhouse3"], "ReplicationEnabled": true, "TargetReplicaNodesCount": 3, "ConfirmationReplicaNodesCount": 2,где
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" }}"ClickHouseSettings": { "ConnectionStrings": { "clickhouse1": "Compression=True;CheckCompressedHash=False;Compressor=lz4;Host={{ env "CLICKHOUSE_HOST_1" }};Port={{ env "CLICKHOUSE_PORT" }};Username={{ secret "CLICKHOUSE_FE_USER" }};Password={{ secret "CLICKHOUSE_FE_PASSWORD" }};Database={{ env "DM_CLICKHOUSE_DB" }};UseSession=true;set_max_execution_time=120;set_cancel_http_readonly_queries_on_client_close=1;", "clickhouse2": "Compression=True;CheckCompressedHash=False;Compressor=lz4;Host={{ env "CLICKHOUSE_HOST_2" }};Port={{ env "CLICKHOUSE_PORT" }};Username={{ secret "CLICKHOUSE_FE_USER" }};Password={{ secret "CLICKHOUSE_FE_PASSWORD" }};Database={{ env "DM_CLICKHOUSE_DB" }};UseSession=true;set_max_execution_time=120;set_cancel_http_readonly_queries_on_client_close=1;", "clickhouse3": "Compression=True;CheckCompressedHash=False;Compressor=lz4;Host={{ env "CLICKHOUSE_HOST_3" }};Port={{ env "CLICKHOUSE_PORT" }};Username={{ secret "CLICKHOUSE_FE_USER" }};Password={{ secret "CLICKHOUSE_FE_PASSWORD" }};Database={{ env "DM_CLICKHOUSE_DB" }};UseSession=true;set_max_execution_time=120;set_cancel_http_readonly_queries_on_client_close=1;" }, "MaxResultRows": 1000000Загрузите образы
clickhouse, clickhouse-keeper, jdbc-bridge, cadvisor, node-exporter, promtailв память докера на каждом сервере.Пересоздайте конфигурационные файлы, выполнив следующую команду:
/var/lib/visiology/scripts/v3/prepare-config.sh --force-regenerate-configsЗапустите платформу, выполнив следующую команду:
/var/lib/visiology/scripts/run.sh --start v3