Chproxy

Обновлено 1 декабря 2025 г.

Chproxy — это HTTP-прокси и балансировщик нагрузки с открытым исходным кодом, специально разработанный для базы данных ClickHouse. Это проект сообщества с открытым исходным кодом, который предоставляет мощные возможности для управления трафиком и обеспечения безопасности при работе с кластерами ClickHouse.

Chproxy представляет собой надежное и функциональное решение для организации безопасного и эффективного доступа к кластерам ClickHouse в производственных средах.

Основные возможности и особенности Chproxy:

Маршрутизация и балансировка нагрузки:

  • Проксирование запросов к различным кластерам ClickHouse в зависимости от входящего пользователя
  • Равномерное распределение запросов между репликами и узлами с использованием техники least loaded + round robin
  • Мониторинг состояния узлов и предотвращение отправки запросов на неисправные узлы

Управление пользователями и безопасность:

  • Сопоставление входящих пользователей с пользователями кластеров, что предотвращает раскрытие реальных имен пользователей и паролей
  • Возможность сопоставления нескольких различных входящих пользователей с одним пользователем ClickHouse
  • Ограничение HTTP и HTTPS доступа по спискам IP/IP-масок
  • Ограничение доступа для каждого пользователя по спискам IP/IP-масок

Контроль ресурсов и производительности:

  • Ограничение продолжительности запросов для каждого пользователя с принудительной остановкой через KILL QUERY
  • Ограничение частоты запросов для каждого пользователя
  • Ограничение количества одновременных запросов для каждого пользователя
  • Задержка выполнения запросов до соответствия пользовательским ограничениям
  • Независимая настройка всех ограничений для каждого входящего пользователя и каждого пользователя кластера

Кэширование и оптимизация:

  • Настраиваемое кэширование ответов для каждого пользователя
  • Встроенная защита кэшей ответов от проблемы thundering herd (догпайл эффект)

Безопасность соединений:

  • Поддержка входящих запросов через HTTP и HTTPS
  • Автоматическое получение и обновление HTTPS-сертификатов через Let’s Encrypt
  • Проксирование запросов к каждому настроенному кластеру через HTTP или HTTPS

Мониторинг и управление:

  • Предоставление различных полезных метрик в формате Prometheus
  • Добавление информации о пользователях и адресах в заголовок User-Agent для возможности запроса из system.query_log.http_user_agent
  • Обновление конфигурации без перезапуска через сигнал SIGHUP
  • Простое управление и запуск — достаточно передать путь к файлу конфигурации единственному бинарному файлу chproxy
Инструкция по развертыванию

Инструкция по развертыванию

В случае прод окружения не стоит использовать адрес 0.0.0.0, и hack_me_please

  1. Создайте виртуальную машину с продуктом ch-proxy (ВМ-ПРОКСИ) из Yandex Cloud Marketplace по инструкции и с публичным адресом.

  2. После запуска виртуальной машины выполните вход в консоль ВМ-ПРОКСИ по ssh (открыв доступ к ВМ по 22 порту, а также 8080 — для подключения позднее с ВМ-ТЕСТ и порт 8123 через группы безопасности).

  3. Через sudo nano /etc/chproxy/chproxy.yml укажите на ВМ-ПРОКСИ


hack_me_please: true

server:
  http:
      listen_addr: ":8080"

users:
  - name: "default"
    to_cluster: "default"
    to_user: "default"

# by default each cluster has `default` user which can be overridden by section `users`
clusters:
- name: "default"
  nodes: ["ВМ-ТЕСТ_ip:8123"]

  1. Перезапустите chproxy sudo systemctl status chproxy, sudo systemctl restart chproxy

  2. Создайте еще одну виртуальную машину (ВМ-ТЕСТ) для тестирования работы clickhouse-keeper и подключитесь к ней также по SSH

  3. Установите на ВМ-ТЕСТ clickhouse server и client + keeper (https://clickhouse.com/docs/install/debian_ubuntu) (предварительно открыв доступ этой ВМ к входящему траффику через порт 80 TCP и группы безопасности)

  4. Выполните запрос с ВМ-ТЕСТ curl "http://ВМ-ПРОКСИ_ip:8123/?query=SELECT%201"Если запрос выполнится без появления ошибок или зависаний — поздравляем, ClickHouse работает с ClickHouse-proxy

Тип тарификации
Free
Тип
Виртуальная машина
Категория
Базы данных
Издатель
Yandex Cloud
Примеры использования
  • Балансировка нагрузки между несколькими кластерами ClickHouse
  • Ограничение доступа пользователей к определенным кластерам по IP-адресам
  • Кэширование ответов для повышения производительности запросов
  • Мониторинг состояния узлов ClickHouse и автоматическое переключение трафика
  • Контроль частоты запросов и времени выполнения для каждого пользователя
  • Автоматическое получение и обновление SSL-сертификатов через Let’s Encrypt
  • Сокрытие реальных учетных данных ClickHouse от клиентских приложений
Полезные ссылки
Техническая поддержка

Служба технической поддержки Yandex Cloud отвечает на запросы 24 часа в сутки, 7 дней в неделю. Доступные виды запросов и срок их обработки зависят от тарифного плана. Подключить платную поддержку можно в консоли управления. Подробнее о порядке оказания технической поддержки.

Yandex Cloud не предоставляет техническую поддержку продукта. При возникновении проблем обращайтесь к информационным ресурсам разработчика.

Идентификаторы продукта
image_id:
fd8aonm1dcq88cn77jdo
family_id:
chproxy
Состав продукта
ПОВерсия
Ubuntu24.04
Лицензионное соглашение
Используя данный продукт, вы соглашаетесь с Условиями использования Yandex Cloud Marketplace
Тип тарификации
Free
Тип
Виртуальная машина
Категория
Базы данных
Издатель
Yandex Cloud