Ускорение загрузки данных
Вы можете увеличить скорость обработки запросов за счет распределения данных на нескольких узлах (горизонтальное масштабирование), что позволит ускорить загрузку данных. Для этого необходимо выполнить следующие шаги:
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. Добавьте лейблы на каждый сервер, начиная с главного, где необходимо подставить нужные идентификаторы нод. Обратите внимание, что цифра после 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
…
3. Внесите следующие изменения в файл /var/lib/visiology/scripts/v3/visiology3.yml
:
скопируйте секции
clickhouse-1
иjdbc-bridge-1
в количестве, равном количеству ваших серверов. В скопированных секциях необходимо заменить все единицы (1
) на2
,3
,4
и т.д.
Пример (надо заменить цифры в строках 1, 30, 40, 50, 52, 62, 72):
в секцию
environment
разделаformula-engine
необходимо добавить следующие строки:
CLICKHOUSE_HOST_2: ${CLICKHOUSE_HOST_2}
CLICKHOUSE_HOST_3: ${CLICKHOUSE_HOST_3}
и т.д.
4. Внесите следующие изменения в файл /var/lib/visiology/scripts/v3/configs/viqube2.json
:
в секцию
ClickHouseSettings.Nodes
добавьте объекты:
Обратите внимание, что структура этого файла отличается от той, которая используется в версии 3.8.
Запятые должны быть во всех строках, кроме последней.
Не забудьте запятую после объекта
"clickhouse1"
.
В каждой строке нужно поменять цифру на соответствующую в части Host={{ env "CLICKHOUSE_HOST_1" }}
.
5. Внесите следующие изменения в файл /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
и т.д.Замените значения
RefreshDataJob__ParallelWorkers
иHangfire__WorkerCount
на количество баз данных Clickhouse, умноженное на 2, т.е. для четырех баз Clickhouse требуется указать значение 8.Убедитесь, что есть пустая строка в конце файла.
6. Внесите следующие изменения в файл /var/lib/visiology/scripts/v3/backup-service.yml
:
Замените поле
CLICKHOUSE_HOSTS
наCLICKHOUSE_HOSTS: ${CLICKHOUSE_HOST_1} ${CLICKHOUSE_HOST_2}
и т.д.
7. Загрузите образы clickhouse, jdbc-bridge, cadvisor, node-exporter, promtail
в память докера на каждом сервере.
8. Выполните следующую команду на главном сервере:
9. Запустите платформу.
Смотрите также