Chproxy
chproxy — это высокопроизводительный HTTP-прокси для ClickHouse, разработанный для балансировки нагрузки между узлами кластера и защиты базы данных от перегрузки. Решение автоматически обнаруживает узлы кластера ClickHouse в Yandex Cloud и распределяет запросы между ними, обеспечивая высокую доступность и производительность.
chproxy предоставляет централизованную точку доступа к кластеру ClickHouse, упрощая управление подключениями и повышая безопасность за счет изоляции клиентов от прямого доступа к узлам базы данных.
Основные возможности и преимущества
- Балансировка нагрузки. Автоматическое распределение запросов между узлами кластера ClickHouse для оптимального использования ресурсов.
- Автоматическое обнаружение узлов. Интеграция с Yandex Cloud для автоматического обнаружения и мониторинга узлов кластера ClickHouse.
- Кеширование запросов. Система кеширует запросы на 150 секунд с ограниченным объемом кеша до 10 GB. Для отключения кеширования конкретного запроса передайте query-параметр
no_cache=1в HTTP-запросе. - Ограничение скорости. Защита кластера от перегрузки путем ограничения количества одновременных запросов и скорости их выполнения.
- TLS-шифрование. Поддержка HTTPS с использованием сертификатов из Certificate Manager или самоподписанных сертификатов.
- Прозрачность. Работает как прозрачный прокси — клиенты подключаются к chproxy так же, как к обычному ClickHouse.
- Мониторинг. Встроенные метрики и логирование для отслеживания производительности и диагностики проблем.
- Гибкая конфигурация. Настройка правил маршрутизации и ограничений для разных пользователей и типов запросов.
- Убедитесь, что у вас есть развернутый Managed Service for ClickHouse кластер.
- Создайте сервисный аккаунт с ролями
compute.editor,iam.serviceAccounts.admin,resource-manager.admin,vpc.admin,managed-clickhouse.viewer(рольadminвключает большинство указанных ролей). - Создайте секрет Lockbox с двумя ключами:
CLICKHOUSE_PASSWORD— пароль пользователя ClickHouse для подключения к кластеру.CHPROXY_PASSWORD— пароль для аутентификации клиентов в chproxy.
- (Опционально) Создайте сертификат для использования в TLS-соединении или загрузите существующий.
- В консоли управления выберите сервис Cloud Apps.
- На панели слева выберите Магазин приложений.
- Выберите chproxy и нажмите кнопку Использовать.
- Укажите:
- Имя приложения.
- (Опционально) Описание приложения.
- Сервисный аккаунт, созданный ранее.
- Кластер ClickHouse, к которому будет подключаться chproxy.
- Имя пользователя ClickHouse для подключения к кластеру (это же имя пользователя используется для подключения клиентов к chproxy).
- Секрет Lockbox с паролями пользователя ClickHouse и chproxy.
- Способ настройки TLS соединения к chproxy:
- Certificate Manager — выберите сертификат из Certificate Manager (сервис поможет вам выписать публично доверенный сертификат Let’s Encrypt или вы можете загрузить в него выпущенный вами сертификат).
- Self-Signed — выпуск самоподписанного сертификата; в этом случае вы можете опционально указать Hostname, на который будет выписан самоподписанный сертификат.
- Облачную подсеть, из той же VPC сети, в которой расположен выбранный кластер ClickHouse.
- Маску IP-адресов, с которых будет открыт доступ к chproxy; если поле оставить пустым — дополнительных ограничений по IP не будет.
- (Опционально) Имя и публичный ключ пользователя для SSH-доступа к виртуальной машине.
- Нажмите кнопку Установить и дождитесь, пока приложение установится.
- В разделе Ресурсы приложения перейдите по ссылке
compute-instanceи на открывшейся странице в разделе Сетевой интерфейс найдите значение параметра Публичный IPv4-адрес. - Подключитесь к ClickHouse через chproxy, используя HTTP интерфейс и порт 8443 по инструкции.
В случае использования самоподписанного сертификата его можно скачать с помощью командыopenssl s_client -connect <chproxy-ip-address>:8443 </dev/null | openssl x509 -outform PEM -out <certificate-export-filename> - Выполните тестовый запрос для проверки работоспособности. Вы будете получать различное имя хоста при каждом запросе (не забудьте добавить параметр запроса no_cache=1:
SELECT hostName();
- Балансировка нагрузки между узлами кластера ClickHouse для повышения производительности и отказоустойчивости.
- Централизованное управление доступом к кластеру ClickHouse с единой точкой аутентификации.
- Защита кластера от перегрузки путем ограничения количества одновременных запросов.
- Изоляция клиентских приложений от прямого доступа к узлам базы данных для повышения безопасности.
Служба технической поддержки Yandex Cloud отвечает на запросы 24 часа в сутки, 7 дней в неделю. Доступные виды запросов и срок их обработки зависят от тарифного плана. Подключить платную поддержку можно в консоли управления. Подробнее о порядке оказания технической поддержки.
| Тип ресурса | Количество |
|---|---|
| Виртуальная машина | 1 |
| VPC IP-адрес | 1 |
| VPC группа безопасности | 1 |
| Сервисный аккаунт | 1 |
| Пользователи каталога | 4 |