Развёртывание кластера ClickHouse в Docker Swarm

Данная инструкция предназначена для развёртки трёх и более экземпляров ClickHouse.

  1. Остановите платформу, выполнив следующую команду:
    /var/lib/visiology/scripts/run.sh --stop

  2. Выполните шаги 1 - 6, описанные в разделе Ускорение загрузки данных (в пункте 5 заменять значения для RefreshDataJob__ParallelWorkers и Hangfire__WorkerCount необязательно).

  3. В файле /var/lib/visiology/scripts/v3/visiology3.yml для каждого экземпляра Clickhouse, добавленного на втором шаге (в секции clickhouse-1, clickhouse-2, clickhouse-n), необходимо внести в секцию environment переменную с соответствующим ему значением:

    SERVER_ID: 1 SERVER_ID: 2 SERVER_ID: n
  4. В том же файле /var/lib/visiology/scripts/v3/visiology3.yml для каждой секции clickhouse-1, clickhouse-2, clickhouse-n и т.д. добавить строки в секцию configs:

    - source: clickhousecluster target: /etc/clickhouse-server/config.d/clickhousecluster.xml
  5. В файле /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.

  6. В файле /var/lib/visiology/scripts/v3/visiology3.yml в секции data-management-service/environment заменить строку CLICKHOUSE_HOST: ${CLICKHOUSE_HOST_1} на

  7. Отредактируйте конфигурацию formula-engine в файле /var/lib/visiology/scripts/v3/configs/viqube2.json, изменив поля следующим образом:

    где

    • EtlNodes – ноды, на которых будет выполняться ETL. Вы можете, например, выделить ноды только для ETL, чтобы не влиять на производительность DAX-запросов.

    • QueryNodes – ноды, на которые будут отправляться запросы DAX.

    • TargetReplicaNodesCount – количество узлов-реплик, на которых должна храниться копия данных или выполняться операция. То есть, кластер будет пытаться хранить данные на таком количестве узлов.

    • ConfirmationReplicaNodesCount – количество узлов-реплик, которые должны подтвердить выполнение операции, прежде чем эта операция будет считаться завершённой и подтверждённой.

        Предположим, что TargetReplicaNodesCount = 3, а ConfirmationReplicaNodesCount = 2. Это означает, что кластер будет пытаться загрузить данные на три узла. Если один из узлов выйдет из строя в процессе загрузки, то загрузка будет считаться успешной, т.к. только двум узлам нужно подтвердить успешность операции. Соответственно, для достижения отказоустойчивости, значение ConfirmationReplicaNodesCount должен быть меньше, чем значение TargetReplicaNodesCount.

  8. Отредактируйте конфигурацию data-management-service в файле /var/lib/visiology/scripts/v3/configs/datamanagementservice.json, добавив в секцию ConnectionStrings строки "clickhouse2", "clickhouse3", "clickhouseN"
    В каждой строке нужно поменять цифру на соответствующую в части Host={{ env "CLICKHOUSE_HOST_1" }}

  9. Загрузите образы clickhouse, clickhouse-keeper, jdbc-bridge, cadvisor, node-exporter, promtail в память докера на каждом сервере.

  10. Пересоздайте конфигурационные файлы, выполнив следующую команду:

  11. Запустите платформу, выполнив следующую команду:
    /var/lib/visiology/scripts/run.sh --start v3

Время чтения: 1 мин.


Нужна дополнительная помощь?

Свяжитесь с технической поддержкой.