Проксирование

Для балансировки нагрузки и распределения доступа к базе данных ADQM можно использовать Chproxy — HTTP-прокси, который может обеспечить:

  • равномерное распределение запросов между всеми узлами кластера ADQM (предполагается, что все узлы в кластере равноценны);

  • проверку работоспособности узлов кластера и предотвращение отправки запросов на недоступные узлы;

  • ограничение доступа по HTTP списком разрешенных IP-адресов/IP-масок;

  • безопасную авторизацию пользователей — Chproxy может сопоставлять пользователей, отправляющих запросы, с пользователями кластера ADQM, не раскрывая реальные имена пользователей и пароли, используемые в ADQM.

Установка Chproxy

Chproxy входит в список сервисов ADQM версии Enterprise (начиная с версии 22.3.7.28.1.b1) и может быть установлен в кластер ADQM через интерфейс ADCM, как другие сервисы. Для этого необходимо:

Конфигурация Chproxy через ADCM

Конфигурационные параметры сервиса Chproxy могут быть настроены в соответствующем окне интерфейса ADCM. Статья Настройка сервисов содержит подробные инструкции как перейти к окну конфигурации сервиса.

Конфигурация сервиса Chproxy
Конфигурация сервиса Chproxy

Для сервиса Chproxy доступны следующие параметры:

  • Network configuration:

    • Enable HTTP — прослушивание HTTP-запросов (по умолчанию включено);

    • HTTP listen port — порт, на котором сервер слушает HTTP-запросы (по умолчанию 9090);

    • HTTP allowed networks — список сетей, из которых разрешен доступ по HTTP (можно указать IP-адрес или маску подсети, по умолчанию добавлено значение 127.0.0.1);

    • Enable HTTPS — прослушивание HTTPS-запросов (по умолчанию выключено);

    • HTTPS listen port — порт, на котором сервер слушает HTTPS-запросы (по умолчанию 8543);

    • HTTPS allowed networks — список сетей, из которых разрешен доступ по HTTPS (можно указать IP-адрес или маску подсети, по умолчанию добавлено значение 127.0.0.1);

    • Certificate file — путь к файлу серверного SSL-сертификата;

    • Private key file — путь к файлу закрытого ключа серверного SSL-сертификата.

  • Proxy users configuration:

    • Clickhouse Proxy Users — конфигурации пользователей, запросы которых будут проксироваться в ADQM. С помощью параметров в этой секции для каждого пользователя можно настроить ограничение доступа по списку IP-адресов или масок подсетей, запретить или разрешить подключения по HTTP и HTTPS, включить кеширование ответов, установить ограничение продолжительности и частоты запросов, а также количества одновременно выполняемых запросов.

       
      Для сопоставления нескольких различных входящих пользователей с одним пользователем ADQM можно создать конфигурацию wildcarded-пользователя. Для этого необходимо включить опцию wildcarded_user, в качестве значения параметра user_name указать шаблон имени пользователя Chproxy вида <prefix>* или *<suffix> и в поле clickhouse_target_user указать пользователя ADQM. Например, если user_name = dba_* и clickhouse_target_user = db_admin (при этом db_admin — существующий пользователь ADQM), то любой пользователь с именем, соответствующим этому шаблону (например, dba_john и dba_mary), будет авторизован в ADQM как db_admin.

    • Users/password map — пароли пользователей Clickhouse Proxy Users.

  • Connection pool configuration:

    • Max idle connections — максимальное количество неиспользуемых соединений в пуле;

    • Max idle connections per host — максимальное количество неиспользуемых соединений на хост.

  • ADQM cluster configuration:

    • Interval — интервал проверки всех узлов кластера на доступность (по умолчанию 5s);

    • Timeout — время ожидания ответа от узлов кластера (по умолчанию 5s).

    Эти параметры используются для проверки работоспособности узлов кластера. Запрос на проверку работоспособности отправляется компонентами сервиса Chproxy всем узлам кластера ADQM с периодичностью, которую определяет параметр Interval. Если на такой запрос не получен ответ от какого-то узла кластера в течение времени, заданного параметром Timeout, Chproxy прекратит отправку запросов на этот узел.

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