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

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

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

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

  1. Добавьте в Docker Swarm все используемые для загрузки сервера. Для этого необходимо сделать следующее:

    • на главном сервере выполните следующую команду для получения токена соединения для рабочих узлов:

      docker swarm join-token worker
    • на остальных серверах, для добавления рабочего узла, выполните команду с полученным токеном. Например:

      docker swarm join \ --token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \ 192.168.99.100:2377
    • убедитесь, что в Swarm указано нужное количество узлов:

      docker node ls
  2. Выполните скрипт /var/lib/visiology/script/v3/utils/make-ch-fast-loading.sh , а затем /var/lib/visiology/script/v3/utils/make-ch-cluster.sh
    Данные скрипты автоматически выполнят необходимые шаги, которые вы также можете повторить, если требуется ручная настройка.

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:

  • добавьте строки:
    CLICKHOUSE_HOST_2=clickhouse-2
    CLICKHOUSE_HOST_3=clickhouse-3
    и т.д.

  • добавьте строки:
    JDBC_BRIDGE_HOST_2=jdbc-bridge-2
    JDBC_BRIDGE_HOST_3=jdbc-bridge-3
    и т.д.

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 по аналогии, изменяя соответствующие номера.

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

  2. Запустите платформу.


Смотрите также

Загрузка данных с помощью JDBC

 

На этой странице


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


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

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

Related content