Перейти к концу метаданных
Переход к началу метаданных

Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

Версия 1 Текущий »

Вы можете увеличить скорость обработки запросов за счет распределения данных на нескольких узлах (горизонтальное масштабирование), что позволит ускорить загрузку данных. Для этого необходимо выполнить следующие шаги:

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, 24, 34, 43, 45, 55, 64):

  clickhouse-2:
    # Use clickhouse/clickhouse-server:23.3.4.17-alpine
    image: ${DOCKER_REPO_PREFIX}${CH_TAG}
    ulimits:
      nofile:
        soft: 262144
        hard: 262144
    configs:
      - source: clickhousejdbcbridge
        target: /etc/clickhouse-server/config.d/clickhouse-jdbc-bridge.xml
      - source: clickhousedisabledroplimits
        target: /etc/clickhouse-server/config.d/clickhouse-disable-drop-limits.xml
      - source: clickhousetimezone
        target: /etc/clickhouse-server/config.d/clickhouse-timezone.xml
      - source: clickhousequerymaskingrulesforjdbc
        target: /etc/clickhouse-server/config.d/clickhouse-query-masking-rules-for-jdbc.xml
      - source: clickhouseentrypoint
        target: /entrypoint.sh
        mode: 0555
    environment:
      CLICKHOUSE_DB: ${CLICKHOUSE_DB}
      CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT: 1
      CLICKHOUSE_INIT_TIMEOUT: 600
      JDBC_BRIDGE_HOST: ${JDBC_BRIDGE_HOST_2}
    secrets:
      - source: CLICKHOUSE_FE_USER
        target: CLICKHOUSE_USER
      - source: CLICKHOUSE_FE_PASSWORD
        target: CLICKHOUSE_PASSWORD
    volumes:
      - clickhouse_data:/var/lib/clickhouse
    << : [*logging-options]
    labels:
      component: "v3-clickhouse-2"
    networks:
      visiology-3:
    deploy:
      endpoint_mode: dnsrr
      replicas: 1
      placement:
        max_replicas_per_node: 1
        constraints:
          - "node.labels.v3-clickhouse-2==true"

  jdbc-bridge-2:
    # Use clickhouse/jdbc-bridge:2.1.0
    image: ${DOCKER_REPO_PREFIX}${JB_TAG}
    environment:
      JDBC_BRIDGE_JVM_OPTS: ${JDBC_BRIDGE_MEM_OPTIONS}
    configs:
      - source: jdbcbridge
        target: /app/config/server.json
    << : [*logging-options]
    labels:
      component: "v3-jdbc-bridge-2"
    networks:
      visiology-3:
    deploy:
      endpoint_mode: dnsrr
      replicas: 1
      placement:
        max_replicas_per_node: 1
        constraints:
          - "node.labels.v3-clickhouse-2==true"
  • в секцию 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. ConnectionStrings добавьте строки:

"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 "CLICKHOUSE_DB" }};UseSession=true;Timeout=120;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 "CLICKHOUSE_DB" }};UseSession=true;Timeout=120;set_max_execution_time=120;set_cancel_http_readonly_queries_on_client_close=1;"
...

(warning) Обратите внимание, что запятые должны быть во всех строках, кроме последней.

В каждой строке нужно поменять цифру на соответствующую в части 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.   Выполните следующую команду:

/var/lib/visiology/scripts/v3/prepare-config.sh --force-regenerate-configs

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

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

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

  • Нет меток