Настройка внешних БД для ADB Control

Содержание

В production-средах рекомендуется использовать внешние базы данных PostgreSQL и ClickHouse для хранения данных ADB Control (см. Query DB и Metrics DB в статье Обзор Arenadata DB Control) по следующим причинам:

  • У вас будет возможность настроить внешние БД на хостах с ресурсами, необходимыми для обеспечения высокой производительности, а также предусмотреть отказоустойчивость (High Availability, HA).

  • Процесс восстановления ADB Control после сбоев будет проходить значительно проще и состоять по большей части из шагов по настройке сервисов.

Ниже приведены шаги, необходимые для настройки внешних БД начиная с версии ADB Control 4.7.5.

PostgreSQL

  1. Выполните следующие запросы на стороне PostgreSQL. Запросы следует запускать под пользователем с правами superuser:

    CREATE ROLE <user_name> LOGIN PASSWORD '<user_password>';
    ALTER ROLE <user_name> SET search_path TO public, adcc;
    CREATE DATABASE <database_name> WITH owner <user_name>;
  2. Подключитесь к созданной базе данных <database_name> под суперпользователем и выполните:

    CREATE SCHEMA adcc;
    ALTER SCHEMA adcc OWNER TO <user_name>;
    
    CREATE EXTENSION IF NOT EXISTS pgcrypto WITH schema public;
    CREATE EXTENSION IF NOT EXISTS btree_gin WITH schema public;
    CREATE EXTENSION IF NOT EXISTS pg_trgm WITH schema public;
    
    GRANT SELECT ON ALL TABLES IN SCHEMA pg_catalog TO <user_name>;
    
    CREATE OPERATOR adcc.^| (PROCEDURE = jsonb_exists_any, LEFTARG = jsonb, RIGHTARG = _text, RESTRICT = contsel, JOIN = contjoinsel);
    ALTER OPERATOR adcc.^|(jsonb, text[]) OWNER TO <user_name>;
    CREATE OPERATOR CLASS adcc.jsonb_ops_custom
    FOR TYPE jsonb USING gin AS
    OPERATOR 7 pg_catalog.@>(jsonb, jsonb),
    OPERATOR 10 adcc.^| (jsonb, _text),
    FUNCTION 1  gin_compare_jsonb(text, text),
    FUNCTION 2  gin_extract_jsonb(jsonb, internal, internal),
    FUNCTION 3  gin_extract_jsonb_query(jsonb, internal, smallint, internal, internal, internal, internal),
    FUNCTION 4  gin_consistent_jsonb(internal, smallint, jsonb, integer, internal, internal, internal, internal),
    FUNCTION 6  gin_triconsistent_jsonb(internal, smallint, jsonb, integer, internal, internal, internal);
    ALTER OPERATOR CLASS adcc.jsonb_ops_custom USING GIN OWNER TO <user_name>;

    где <user_name> — имя созданного на предыдущем шаге пользователя.

    Если есть возможность назначить права superuser пользователю в PostgreSQL (под которым будет выполняться подключение из ADB Control), достаточно создать роль и базу данных в PostgreSQL перед установкой или реконфигурацией ADB Control для использования внешней БД:

    CREATE ROLE <user_name> LOGIN PASSWORD '<user_password>' SUPERUSER;
    ALTER ROLE <user_name> SET search_path TO public, adcc;
    CREATE DATABASE <database_name> WITH owner <user_name>;
  3. Опционально можно запустить следующий запрос для отключения синхронной записи в WAL-файлы с целью увеличения производительности:

    ALTER DATABASE <database_name> SET synchronous_commit = OFF;

    где <database_name> — имя созданной выше БД.

  4. Обеспечьте возможность доступа хоста с ADB Control к внешней базе данных PostgreSQL. Для этого на стороне сервера PostgreSQL требуется добавить запись следующего вида в файл pg_hba.conf.

  • Без SSL

  • С использованием SSL

host    <database_name>  <user_name>       <adbc_address>      trust

где:

  • <database_name> — имя созданной выше БД.

  • <user_name> — имя созданного выше пользователя.

  • <adbc_address> — IP-адрес ADB Control с подсетью.

hostssl    all  all       0.0.0.0/0      md5

Дополнительную информацию о предварительной настройке PostgreSQL для использования SSL можно получить в статье Шифрование SSL.

  1. На странице конфигурирования сервиса ADB Control переведите в активное положение переключатель External database parameters и заполните параметры в открывшемся списке. Назначение параметров описано в разделе Конфигурационные параметры → ADB Control → External database parameters.

    Параметры для подключения к внешней БД PostgreSQL
    Параметры для подключения к внешней БД PostgreSQL
  2. После заполнения параметров нажмите Save для сохранения конфигурации ADB Control.

  3. Выполните установку сервиса ADB Control с помощью сервисного действия Install либо примените действие Reconfigure & Restart к ранее установленному сервису ADB Control.

ClickHouse

ВАЖНО
  • Для использования кластеризованного ClickHouse в качестве внешней БД (вместо одиночной ноды) предварительно требуется создать логический кластер с именем adcc_cluster на стороне ClickHouse.

  • В случае использования SSL-шифрования в ADB Control необходимо предварительно настроить SSL на стороне ClickHouse в соответствии со статьей Шифрование SSL и в параметрах подключения к хостам ClickHouse указывать порт 8443 (см. External ADQM parameters ниже).

  1. Выполните следующие запросы для создания пользователя с необходимыми правами на стороне ClickHouse:

    CREATE USER <user_name> NOT IDENTIFIED;
    GRANT SELECT, INSERT, ALTER, CREATE, DROP, TRUNCATE ON *.* TO <user_name>
  2. На странице конфигурирования сервиса ADB Control переведите в активное положение переключатель External ADQM parameters и заполните параметры в открывшемся списке. Назначение параметров описано в разделе Конфигурационные параметры → ADB Control → External ADQM parameters.

    Параметры для подключения к внешней БД ClickHouse
    Параметры для подключения к внешней БД ClickHouse
  3. После заполнения параметров нажмите Save для сохранения конфигурации ADB Control.

  4. Выполните установку сервиса ADB Control с помощью сервисного действия Install либо примените действие Reconfigure & Restart к ранее установленному сервису ADB Control.

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней