Перейти к основному содержимому
Перейти к основному содержимому

BYOC (Принесите свой облачный сервис) для AWS

Обзор

BYOC (Принесите свой облачный сервис) позволяет вам развернуть ClickHouse Cloud на вашей собственной облачной инфраструктуре. Это полезно, если у вас есть особые требования или ограничения, которые не позволяют вам использовать управляемый сервис ClickHouse Cloud.

Если вы хотите получить доступ, пожалуйста, свяжитесь с нами. Ознакомьтесь с нашими Условиями обслуживания для получения дополнительной информации.

В настоящее время BYOC поддерживается только для AWS. Вы можете присоединиться к списку ожидания для GCP и Azure здесь.

примечание

BYOC разработан специально для развертываний большого масштаба и требует от клиентов подписания обязательного контракта.

Глоссарий

  • VPC ClickHouse: VPC, принадлежащий ClickHouse Cloud.
  • VPC клиента BYOC: VPC, принадлежащий облачному аккаунту клиента, который предоставляется и управляется ClickHouse Cloud и предназначен для развертывания ClickHouse Cloud BYOC.
  • 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 учетными записями может помочь снизить затраты на трафик между AZ. В AWS суффиксы зон доступности (a, b, c) могут представлять различные физические идентификаторы зон в разных учетных записях. См. Руководство AWS для получения дополнительных деталей.

Назначительно: Настройка VPC Пиринга

Чтобы создать или удалить VPC пиринг для ClickHouse BYOC, выполните следующие шаги:

Шаг 1 Включение Private Load Balancer для ClickHouse BYOC

Свяжитесь со службой поддержки ClickHouse, чтобы включить Private Load Balancer.

Шаг 2 Создание пирингового соединения

  1. Перейдите на панель VPC в учетной записи ClickHouse BYOC.
  2. Выберите Пиринговые соединения.
  3. Нажмите Создать пиринговое соединение.
  4. Установите VPC Запросчика на идентификатор VPC ClickHouse.
  5. Установите VPC Приемника на целевой идентификатор VPC. (Выберите другую учетную запись, если это применимо).
  6. Нажмите Создать пиринговое соединение.


Шаг 3 Принять запрос пирингового соединения

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



Шаг 4 Добавление назначения в таблицы маршрутов VPC ClickHouse

В учетной записи ClickHouse BYOC,

  1. Выберите Таблицы маршрутов в панели VPC.
  2. Найдите идентификатор VPC ClickHouse. Отредактируйте каждую таблицу маршрутов, прикрепленную к частным подсетям.
  3. Нажмите кнопку Редактировать на вкладке Маршруты.
  4. Нажмите Добавить другой маршрут.
  5. Введите CIDR диапазон целевого VPC для назначения.
  6. Выберите "Пиринговое соединение" и идентификатор пирингового соединения для цели.


Шаг 5 Добавление назначения в таблицы маршрутов целевого VPC

В пиринговой учетной записи AWS,

  1. Выберите Таблицы маршрутов в панели VPC.
  2. Найдите идентификатор целевого VPC.
  3. Нажмите кнопку Редактировать на вкладке Маршруты.
  4. Нажмите Добавить другой маршрут.
  5. Введите CIDR диапазон VPC ClickHouse для назначения.
  6. Выберите "Пиринговое соединение" и идентификатор пирингового соединения для цели.


Шаг 6 Редактирование группы безопасности, чтобы разрешить доступ к пиринговому VPC

В учетной записи ClickHouse BYOC,

  1. В учетной записи ClickHouse BYOC перейдите в EC2 и найдите Private Load Balancer, названный, как infra-xx-xxx-ingress-private.


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


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



Сервис ClickHouse теперь должен быть доступен из пирингового VPC.

Чтобы получить доступ к ClickHouse приватно, для безопасного подключения из пирингового VPC пользователяProvisioning private load balancer and endpoint are provisioned. Приватный конечный пункт следует формату публичного конечного пункта с суффиксом -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 и другие компоненты.

Хотя мы стремимся к бесшовным обновлениям (например, поэтапные обновления и перезагрузки), некоторые из них, такие как изменения версии ClickHouse и обновления узлов EKS, могут повлиять на сервис. Клиенты могут указать окно обслуживания (например, каждый вторник в 1:00 по тихоокеанскому времени), обеспечивая, чтобы такие обновления происходили только в назначенное время.

примечание

Окна обслуживания не применяются к исправлениям безопасности и уязвимостям. Они обрабатываются как внецикловые обновления, с быстрым уведомлением для координации подходящего времени и минимизации операционного влияния.

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 позволяет компоненту Control Plane ClickHouse Cloud согласовывать необходимые пользовательские ресурсы, такие как ClickHouseCluster и виртуальный сервис/шлюз Istio.

Сетевые границы

Этот раздел охватывает различные сетевые потоки трафика к и от VPC клиента BYOC:

  • Входящий: Трафик, входящий в VPC клиента BYOC.
  • Исходящий: Трафик, исходящий из VPC клиента BYOC и отправленный на внешнее назначение.
  • Публичный: Сетевой конечный пункт, доступный из публичного интернета.
  • Приватный: Сетевой конечный пункт, доступный только через частные соединения, такие как VPC пиринг, VPC Private Link или Tailscale.

Вход в систему Istio разворачивается за AWS NLB для приема трафика клиентов 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 gateway.

Уведомления

Исходящий, Публичный

AlertManager настроен на отправку уведомлений в ClickHouse Cloud, когда кластер ClickHouse клиента находится в нерабочем состоянии.

Метрики и журналы хранятся в VPC клиента BYOC. Журналы в настоящее время хранятся локально в EBS. В будущем они будут храниться в LogHouse, сервисе ClickHouse в VPC BYOC. Метрики используют стек Prometheus и Thanos, хранящийся локально в VPC BYOC.

Состояние сервиса

Исходящий

Exporter состояния отправляет информацию о состоянии сервиса 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 включает в себя продвинутую панель наблюдаемости, которая отображает метрики, такие как использование памяти, частота запросов и ввод-вывод. Это можно получить в разделe Мониторинг веб-интерфейса 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.