BYOC (Bring Your Own Cloud) для AWS
Обзор
BYOC (Bring Your Own Cloud) позволяет вам развернуть ClickHouse Cloud на вашей собственной облачной инфраструктуре. Это полезно, если у вас есть специфические требования или ограничения, которые не позволяют вам использовать управляемый сервис ClickHouse Cloud.
Если вы хотите получить доступ, пожалуйста, свяжитесь с нами. Ознакомьтесь с нашими Условиями обслуживания для получения дополнительной информации.
В настоящее время BYOC поддерживается только для AWS, разработки для GCP и Microsoft Azure находятся в процессе.
BYOC предназначен специально для развертываний в крупном масштабе и требует от клиентов подписать обязательный контракт.
Глоссарий
- VPC ClickHouse: VPC, принадлежащий ClickHouse Cloud.
- VPC клиента BYOC: VPC, принадлежащий облачному аккаунту клиента, создаваемый и управляемый ClickHouse Cloud и выделенный для развертывания BYOC ClickHouse Cloud.
- VPC клиента: Другие VPC, принадлежащие облачному аккаунту клиента, используемые для приложений, которым необходимо подключаться к VPC клиента BYOC.
Архитектура
Метрики и логи хранятся в VPC клиента BYOC. В данный момент логи хранятся локально в EBS. В будущих обновлениях логи будут храниться в LogHouse, который является сервисом ClickHouse в VPC клиента BYOC. Метрики реализованы с помощью стека Prometheus и Thanos, хранится локально в VPC клиента BYOC.

Процесс регистрации
Клиенты могут инициировать процесс регистрации, обратившись к нам. Клиенты должны иметь выделенный аккаунт AWS и знать регион, который они будут использовать. В настоящее время мы разрешаем пользователям запускать услуги BYOC только в тех регионах, которые поддерживаются для ClickHouse Cloud.
Подготовка выделенного аккаунта AWS
Клиенты должны подготовить выделенный аккаунт AWS для размещения развертывания ClickHouse BYOC, чтобы обеспечить лучшую изоляцию. С этим и начальными организационными данными админу вы можете обратиться в техническую поддержку ClickHouse.
Применение шаблона CloudFormation
Настройка BYOC инициализируется с помощью стека CloudFormation, который создает только роль, позволяющую контроллерам BYOC от ClickHouse Cloud управлять инфраструктурой. Ресурсы S3, VPC и вычислительные ресурсы для запуска ClickHouse не включены в этот стек.
Настройка инфраструктуры BYOC
После создания стека CloudFormation вам будет предложено настроить инфраструктуру, включая S3, VPC и кластер EKS, из облачной консоли. Некоторые конфигурации должны быть определены на этом этапе, так как их нельзя будет изменить позже. В частности:
- Регион, который вы хотите использовать: вы можете выбрать один из любых публичных регионов, которые мы имеем для ClickHouse Cloud.
- CIDR диапазон VPC для BYOC: По умолчанию мы используем
10.0.0.0/16
для CIDR диапазона VPC BYOC. Если вы планируете использовать VPC-пиринг с другим аккаунтом, убедитесь, что CIDR диапазоны не перекрываются. Выделите соответствующий CIDR диапазон для BYOC, минимальный размер которого должен составлять/22
, чтобы учесть необходимые рабочие нагрузки. - Зоны доступности для VPC BYOC: Если вы планируете использовать VPC-пиринг, согласование зон доступности между исходным и BYOC аккаунтами может помочь снизить расходы на межзоновой трафик. В AWS суффиксы зон доступности (
a, b, c
) могут представлять разные физические идентификаторы зон в разных аккаунтах. См. руководство AWS для получения дополнительной информации.
Необязательно: Настройка VPC-пиринга
Чтобы создать или удалить VPC-пиринг для ClickHouse BYOC, выполните следующие шаги:
Шаг 1 Включение частного балансировщика нагрузки для ClickHouse BYOC
Свяжитесь с поддержкой ClickHouse для включения частного балансировщика нагрузки.
Шаг 2 Создание соединения пиринга
- Перейдите на панель управления VPC в аккаунте ClickHouse BYOC.
- Выберите "Соединения пиринга".
- Нажмите "Создать соединение пиринга".
- Установите VPC-запрос для ID VPC ClickHouse.
- Установите VPC-акцептор для целевого ID VPC. (Выберите другой аккаунт, если применимо)
- Нажмите "Создать соединение пиринга".

Шаг 3 Принять запрос на соединение пиринга
Перейдите в пиринговый аккаунт, на странице (VPC -> Соединения пиринга -> Действия -> Принять запрос) клиент может утвердить этот запрос о пиринге VPC.

Шаг 4 Добавить назначение в таблицы маршрутов VPC ClickHouse
В аккаунте ClickHouse BYOC,
- Выберите "Таблицы маршрутов" в панели управления VPC.
- Найдите ID VPC ClickHouse. Отредактируйте каждую таблицу маршрутов, прикрепленную к частным подсетям.
- Нажмите кнопку "Редактировать" на вкладке маршрутов.
- Нажмите "Добавить другой маршрут".
- Введите CIDR диапазон целевого VPC в поле Назначения.
- Выберите "Соединение пиринга" и ID соединения пиринга для Цели.

Шаг 5 Добавить назначение в таблицы маршрутов целевого VPC
В пиринговом аккаунте AWS,
- Выберите "Таблицы маршрутов" в панели управления VPC.
- Найдите ID целевого VPC.
- Нажмите кнопку "Редактировать" на вкладке маршрутов.
- Нажмите "Добавить другой маршрут".
- Введите CIDR диапазон VPC ClickHouse в поле Назначения.
- Выберите "Соединение пиринга" и ID соединения пиринга для Цели.

Шаг 6 Редактировать группу безопасности, чтобы разрешить доступ к пиринговой VPC
В аккаунте ClickHouse BYOC,
- В аккаунте ClickHouse BYOC перейдите в EC2 и найдите Частный балансировщик нагрузки с именем вроде infra-xx-xxx-ingress-private.

- На вкладке Безопасность на странице деталей найдите соответствующую группу безопасности, которая следует шаблону именования, как
k8s-istioing-istioing-xxxxxxxxx
.

- Отредактируйте входящие правила этой группы безопасности и добавьте CIDR диапазон пиринговой VPC (или укажите необходимый CIDR диапазон по мере необходимости).

Сервис ClickHouse теперь должен быть доступен из пиринговой VPC.
Для частного доступа к ClickHouse в пиринговой VPC выделяется частный балансировщик нагрузки и конечная точка для безопасного подключения. Частная конечная точка следует формату публичной конечной точки с суффиксом -private
. Например:
- Публичная конечная точка:
h5ju65kv87.mhp0y4dmph.us-west-2.aws.byoc.clickhouse.cloud
- Частная конечная точка:
h5ju65kv87-private.mhp0y4dmph.us-west-2.aws.byoc.clickhouse.cloud
Необязательно, после проверки работы пиринга вы можете запросить удаление публичного балансировщика нагрузки для ClickHouse BYOC.
Процесс обновления
Мы регулярно обновляем программное обеспечение, включая обновления версий баз данных ClickHouse, ClickHouse Operator, EKS и других компонентов.
Хотя мы стремимся к бесшовным обновлениям (например, кrolling upgrades и перезагрузкам), некоторые из них, такие как изменения версий ClickHouse и обновления узлов EKS, могут повлиять на сервис. Клиенты могут указать окно обслуживания (например, каждую вторник в 1:00 по PDT), чтобы гарантировать, что такие обновления происходят только в запланированное время.
Окна обслуживания не применяются для исправлений безопасности и уязвимостей. Они обрабатываются как внецикловые обновления с своевременным уведомлением для координации подходящего времени и минимизации операционного воздействия.
IAM роли CloudFormation
Роль IAM начальной загрузки
Роль IAM начальной загрузки имеет следующие разрешения:
- Действия EC2 и VPC: Необходимы для настройки VPC и кластеров EKS.
- Действия с S3 (например,
s3:CreateBucket
): Необходимы для создания бакетов для хранения ClickHouse BYOC. - Разрешения
route53:*
: Необходимы для внешнего DNS для настройки записей в Route 53. - Действия IAM (например,
iam:CreatePolicy
): Необходимы для контроллеров для создания дополнительных ролей (см. следующий раздел для подробностей). - Действия EKS: Ограничены ресурсами с именами, начинающимися с префикса
clickhouse-cloud
.
Дополнительные IAM роли, создаваемые контроллером
В дополнение к ClickHouseManagementRole
, созданной через CloudFormation, контроллер создаст несколько дополнительных ролей.
Эти роли предполагаются приложениями, запущенными в кластере EKS клиента:
- Роль экспорта состояния
- Компонент ClickHouse, который сообщает информацию о состоянии сервиса ClickHouse Cloud.
- Требует разрешения на запись в очередь SQS, принадлежащую ClickHouse Cloud.
- Контроллер балансировщика нагрузки
- Стандартный контроллер балансировщика нагрузки AWS.
- Контроллер EBS CSI для управления томами для услуг ClickHouse.
- Внешний DNS
- Распространяет конфигурации DNS в Route 53.
- Cert-Manager
- Предоставляет TLS сертификаты для доменов BYOC.
- Автоскейлер кластера
- Регулирует размер группы узлов по мере необходимости.
K8s-control-plane и k8s-worker роли предназначены для использования службами AWS EKS.
Наконец, data-plane-mgmt
позволяет компоненту управления ClickHouse Cloud синхронизировать необходимые настраиваемые ресурсы, такие как ClickHouseCluster
и виртуальные сервисы/шлюзы Istio.
Сетевые границы
В этом разделе рассматривается разный сетевой трафик из и в VPC клиента BYOC:
- Входящий: Трафик, входящий в VPC клиента BYOC.
- Исходящий: Трафик, исходящий из VPC клиента BYOC и отправляемый на внешние назначения.
- Публичный: Сетевой конечный пункт, доступный из публичного интернета.
- Частный: Сетевой конечный пункт, доступный только через частные соединения, такие как пиринг VPC, Частный линк VPC или Tailscale.
Ingess Istio развертывается за NLB AWS для приема трафика клиентов ClickHouse.
Входящий, Публичный (может быть Частным)
Шлюз входа Istio завершает TLS. Сертификат, предоставленный CertManager с Let's Encrypt, хранится как секрет в классе EKS. Трафик между Istio и ClickHouse шифруется AWS так как они находятся в одном и том же VPC.
По умолчанию входящий трафик является публично доступным с фильтрацией по списку разрешений IP. Клиенты могут настроить пиринг VPC, чтобы сделать его частным и отключить публичные соединения. Мы настоятельно рекомендуем настроить фильтр IP, чтобы ограничить доступ.
Устранение проблем с доступом
Входящий, Публичный (может быть Частным)
Инженеры ClickHouse Cloud требуют доступа для устранения проблем через Tailscale. Им предоставляется аутентификация на основе сертификатов с ограниченным временем действия для развертываний BYOC.
Сборщик данных
Исходящий, Частный
Сборщик данных собирает данные о выставлении счетов из ClickHouse и отправляет их в бакет S3, принадлежащий ClickHouse Cloud.
Он работает как сайдкар рядом с контейнером сервера ClickHouse, периодически собирая метрики CPU и памяти. Запросы в рамках одного региона маршрутизируются через конечные точки сервисов шлюза VPC.
Уведомления
Исходящий, Публичный
AlertManager настроен на отправку уведомлений ClickHouse Cloud, когда кластер ClickHouse клиента работает неправильно.
Метрики и логи хранятся в VPC клиента BYOC. Логи в настоящее время хранятся локально в EBS. В будущем они будут храниться в LogHouse, сервисе ClickHouse в VPC BYOC. Метрики используют стек Prometheus и Thanos, хранится локально в VPC BYOC.
Состояние сервиса
Исходящий
Экспортер состояния отправляет информацию о состоянии сервиса ClickHouse в SQS, принадлежащую ClickHouse Cloud.
Функции
Поддерживаемые функции
- SharedMergeTree: ClickHouse Cloud и BYOC используют один и тот же бинарный файл и конфигурацию. Поэтому все функции из ядра ClickHouse поддерживаются в BYOC, такие как SharedMergeTree.
- Доступ через консоль для управления состоянием сервиса:
- Поддерживает операции, такие как запуск, остановка и завершение.
- Просмотр сервисов и статуса.
- Резервное копирование и восстановление.
- Ручное вертикальное и горизонтальное масштабирование.
- Идлинг.
- Склады: Разделение вычислений
- Сеть с нулевым доверием через Tailscale.
- Мониторинг:
- Облачная консоль включает встроенные панели мониторинга для отслеживания состояния сервиса.
- Сбор метрик Prometheus для централизованного мониторинга с Prometheus, Grafana и Datadog. См. документацию по Prometheus для инструкций по настройке.
- VPC пиринг.
- Интеграции: См. полный список на этой странице.
- Безопасный S3.
- AWS PrivateLink.
Планируемые функции (текущая неподдержка)
- AWS KMS также известный как CMEK (ключи шифрования, управляемые клиентом)
- ClickPipes для приема
- Автомасштабирование
- Интерфейс MySQL
Часто задаваемые вопросы
Вычисления
Могу ли я создать несколько сервисов в одном кластере EKS?
Да. Инфраструктура должна быть подготовлена только один раз для каждой комбинации аккаунта AWS и региона.
Какие регионы вы поддерживаете для BYOC?
BYOC поддерживает такой же набор регионов, как и ClickHouse Cloud.
Будет ли какая-либо накладная нагрузка? Какие ресурсы нужны для работы сервисов, кроме экземпляров ClickHouse?
Кроме экземпляров Clickhouse (серверы ClickHouse и ClickHouse Keeper), мы запускаем такие службы, как clickhouse-operator
, aws-cluster-autoscaler
, Istio и нашу стек мониторинга.
В настоящее время у нас есть 3 узла m5.xlarge (по одному для каждой AZ) в выделенной группе узлов для выполнения этих рабочих нагрузок.
Сеть и безопасность
Можем ли мы отозвать разрешения, установленные во время установки, после завершения настройки?
В настоящее время это невозможно.
Рассматривали ли вы некоторые будущие меры безопасности, чтобы инженеры ClickHouse могли получить доступ к инфраструктуре клиента для устранения проблем?
Да. Реализация механизма, контролируемого клиентом, где клиенты могут одобрять доступ инженеров к кластеру, стоит у нас на повестке дня. В данный момент инженерам необходимо пройти наш внутренний процесс эскалации, чтобы получить доступ ко времени действия кластера. Это фиксируется и проверяется нашей командой безопасности.
Каков размер диапазона IP VPC?
По умолчанию мы используем 10.0.0.0/16
для VPC BYOC. Мы рекомендуем зарезервировать минимум /22 для потенциального будущего масштабирования, но если вы предпочитаете ограничить размер, возможно использование /23, если вам, вероятно, будет достаточно развёртывания 30 серверных подов.
Могу ли я решить частоту обслуживания
Свяжитесь с поддержкой, чтобы запланировать окна обслуживания. Ожидайте минимум еженедельного графика обновления.
Наблюдаемость
Встроенные инструменты мониторинга
Панель наблюдаемости
ClickHouse Cloud включает усовершенствованную панель наблюдаемости, которая отображает метрики, такие как использование памяти, скорость запросов и I/O. Это можно получить в разделе Мониторинг интерфейса веб-консоли ClickHouse Cloud.

Расширенная панель
Вы можете настроить панель, используя метрики из системных таблиц, такие как system.metrics
, system.events
и system.asynchronous_metrics
, чтобы детально отслеживать производительность сервера и использование ресурсов.

Интеграция с Prometheus
ClickHouse Cloud предоставляет конечную точку Prometheus, которую вы можете использовать для сбора метрик для мониторинга. Это позволяет интегрироваться с такими инструментами, как Grafana и Datadog для визуализации.
Пример запроса через HTTPS конечную точку /metrics_all
Пример ответа
Аутентификация
Для аутентификации можно использовать пару имени пользователя и пароля ClickHouse. Мы рекомендуем создавать выделенного пользователя с минимальными разрешениями для сбора метрик. Минимум, требуется разрешение READ
на таблице system.custom_metrics
на всех репликах. Например:
Настройка Prometheus
Пример конфигурации показан ниже. Эндпоинт targets
- это тот же, который используется для доступа к сервису ClickHouse.
Пожалуйста, также смотрите этот блог-пост и документы по настройке Prometheus для ClickHouse.