AWS PrivateLink
AWS PrivateLink is available in the Scale and Enterprise plans. To upgrade, visit the Plans page in the cloud console.
Вы можете использовать AWS PrivateLink для установления безопасного соединения между VPC, службами AWS, вашими локальными системами и ClickHouse Cloud без экспонирования трафика в публичный Интернет. Этот документ описывает шаги для подключения к ClickHouse Cloud с использованием AWS PrivateLink.
Чтобы ограничить доступ к вашим услугам ClickHouse Cloud исключительно через адреса AWS PrivateLink, следуйте инструкциям, предоставленным ClickHouse Cloud IP Access Lists.
ClickHouse Cloud в настоящее время поддерживает кросс-региональный PrivateLink в бета-версии.
Пожалуйста, выполните следующее, чтобы включить AWS PrivateLink:
- Получите имя службы "Endpoint".
- Создайте AWS Endpoint.
- Добавьте "Endpoint ID" в организацию ClickHouse Cloud.
- Добавьте "Endpoint ID" в белый список служб ClickHouse.
Найдите примеры Terraform здесь.
Внимание
ClickHouse пытается сгруппировать ваши службы для повторного использования одной и той же опубликованной службы endpoint в пределах региона AWS. Однако эта группировка не гарантируется, особенно если вы распределяете свои службы по нескольким организациям ClickHouse. Если у вас уже настроен PrivateLink для других услуг в вашей организации ClickHouse, вы часто можете пропустить большинство шагов из-за этой группировки и перейти непосредственно к последнему шагу: Добавьте "Endpoint ID" ClickHouse в белый список служб ClickHouse.
Предварительные условия
Перед тем как начать, вам понадобятся:
- Ваша учетная запись AWS.
- API-ключ ClickHouse с необходимыми правами для создания и управления частными эндпоинтами со стороны ClickHouse.
Шаги
Следуйте этим шагам, чтобы подключить ваши услуги ClickHouse Cloud через AWS PrivateLink.
Получите имя "Endpoint" службы
Вариант 1: Консоль ClickHouse Cloud
В консоли ClickHouse Cloud откройте службу, к которой вы хотите подключиться через PrivateLink, затем перейдите в меню Настройки.

Запишите Service name
и DNS name
, затем перейдите к следующему шагу.
Вариант 2: API
Сначала установите следующие переменные окружения перед выполнением любых команд:
Получите ваш ClickHouse INSTANCE_ID
, отфильтровав по региону, провайдеру и имени службы:
Получите endpointServiceId
и privateDnsHostname
для вашей конфигурации PrivateLink:
Эта команда должна вернуть что-то вроде:
Запишите endpointServiceId
и privateDnsHostname
, перейдите к следующему шагу.
Создайте AWS Endpoint
Этот раздел охватывает специфические для ClickHouse детали настройки ClickHouse через AWS PrivateLink. Шаги, специфичные для AWS, предоставлены как справка, чтобы указать, где искать, но они могут изменяться со временем без предварительного уведомления со стороны поставщика облачных услуг AWS. Пожалуйста, настройте AWS в зависимости от вашего конкретного случая использования.
Обратите внимание, что ClickHouse не несет ответственности за настройку необходимых AWS VPC конечных точек, правил групп безопасности или записей DNS.
Если вы ранее включили "частные DNS имена" при настройке PrivateLink и испытываете трудности с настройкой новых служб через PrivateLink, пожалуйста, свяжитесь с поддержкой ClickHouse. По любым другим вопросам, связанным с задачами конфигурации AWS, обращайтесь напрямую в поддержку AWS.
Вариант 1: Консоль AWS
Откройте консоль AWS и перейдите в VPC → Endpoints → Создать конечные точки.
Выберите Услуги конечных точек, которые используют NLB и GWLB и используйте Service name
консоль или endpointServiceId
API, который вы получили на шаге Получить имя "Endpoint" службы в поле Service Name. Нажмите Проверить службу:

Если вы хотите установить кросс-региональное соединение через PrivateLink, включите флажок "Кросс-региональный endpoint" и укажите регион службы. Регион службы — это тот, в котором работает экземпляр ClickHouse.
Если вы получаете ошибку "Имя службы не может быть проверено", пожалуйста, свяжитесь со службой поддержки, чтобы запросить добавление новых регионов в список поддерживаемых регионов.
Далее выберите ваш VPC и подсети:

В качестве дополнительного шага назначьте группы безопасности/теги:
Убедитесь, что порты 443
, 8443
, 9440
, 3306
разрешены в группе безопасности.
После создания VPC Endpoint запишите значение Endpoint ID
; оно потребуется вам для следующего шага.

Вариант 2: AWS CloudFormation
Затем вам необходимо создать VPC Endpoint, используя Service name
консоль или endpointServiceId
API, который вы получили на шаге Получите имя "Endpoint" службы.
Убедитесь, что вы используете правильные ID подсетей, группы безопасности и ID VPC.
После создания VPC Endpoint запишите значение Endpoint ID
; оно потребуется вам для следующего шага.
Вариант 3: Terraform
service_name
ниже — это Service name
консоль или endpointServiceId
API, который вы получили на шаге Получите имя "Endpoint" службы.
После создания VPC Endpoint запишите значение Endpoint ID
; оно потребуется вам для следующего шага.
Установите частное DNS имя для Endpoint
Существуют различные способы настройки DNS. Пожалуйста, настройте DNS в зависимости от вашего конкретного случая использования.
Вам необходимо указать "DNS name", взятое на шаге Получите имя "Endpoint" службы, на сетевые интерфейсы AWS Endpoint. Это гарантирует, что службы/компоненты внутри вашего VPC/Сети смогут правильно его разобрать.
Добавьте Endpoint ID в организацию ClickHouse Cloud
Вариант 1: Консоль ClickHouse Cloud
Чтобы добавить конечную точку в организацию, перейдите к шагу Добавить Endpoint ID в белый список службы(ей). Добавление Endpoint ID
с использованием консоли ClickHouse Cloud в белый список служб автоматически добавляет его в организацию.
Чтобы удалить конечную точку, откройте Подробности организации -> Частные конечные точки и нажмите кнопку удаления, чтобы удалить конечную точку.

Вариант 2: API
Установите следующие переменные окружения перед выполнением любых команд:
Установите переменную окружения ENDPOINT_ID
, используя данные из шага Создайте AWS Endpoint.
Чтобы добавить конечную точку, выполните:
Чтобы удалить конечную точку, выполните:
Добавьте "Endpoint ID" в белый список службы ClickHouse
Вариант 1: Консоль ClickHouse Cloud
Чтобы добавить, пожалуйста, перейдите в консоль ClickHouse Cloud, откройте службу, к которой вы хотите подключиться через PrivateLink, затем перейдите в Настройки. Введите Endpoint ID
, полученный на шаге Создайте AWS Endpoint. Нажмите "Создать конечную точку".
Если вы хотите разрешить доступ из существующего соединения PrivateLink, используйте выпадающее меню существующего эндпоинта.

Чтобы удалить, пожалуйста, перейдите в консоль ClickHouse Cloud, найдите службу, затем перейдите в Настройки службы, найдите конечную точку, которую вы хотите удалить. Удалите ее из списка конечных точек.
Вариант 2: API
Вам необходимо добавить Endpoint ID в белый список для каждого экземпляра, который должен быть доступен с помощью PrivateLink.
Установите переменную окружения ENDPOINT_ID
, используя данные из шага Создайте AWS Endpoint.
Установите следующие переменные окружения перед выполнением любых команд:
Чтобы добавить идентификатор конечной точки в белый список:
Чтобы удалить идентификатор конечной точки из белого списка:
Доступ к экземпляру с использованием PrivateLink
Каждая служба с включенным Private Link имеет публичный и частный endpoint. Для подключения с использованием Private Link вам необходимо использовать частный endpoint, который будет privateDnsHostname
API или DNS Name
консоль, взятый из Получите имя "Endpoint" службы.
Получение частного DNS имени
Вариант 1: Консоль ClickHouse Cloud
В консоли ClickHouse Cloud перейдите в Настройки. Нажмите на кнопку Настроить частный конечный пункт. В открывшемся меню скопируйте DNS Name.

Вариант 2: API
Установите следующие переменные окружения перед выполнением любых команд:
Вы можете извлечь INSTANCE_ID
из шага.
Это должно вывести что-то вроде:
В этом примере подключение через значение имени хоста privateDnsHostname
будет направлено на PrivateLink, но подключение через имя хоста endpointServiceId
будет направлено через Интернет.
Устранение неисправностей
Несколько PrivateLinks в одном регионе
В большинстве случаев вам нужно создать единую службу конечных точек для каждого VPC. Эта конечная точка может маршрутизировать запросы из VPC к нескольким службам ClickHouse Cloud. Пожалуйста, обратитесь сюда
Время ожидания соединения с частной конечной точкой истекло
- Пожалуйста, прикрепите группу безопасности к VPC Endpoint.
- Пожалуйста, проверьте правила
inbound
в группе безопасности, прикрепленной к конечной точке, и разрешите порты ClickHouse. - Пожалуйста, проверьте правила
outbound
в группе безопасности, прикрепленной к ВМ, которая используется для тестирования подключения, и разрешите подключения к портам ClickHouse.
Частное имя хоста: адрес хоста не найден
- Пожалуйста, проверьте вашу конфигурацию DNS.
Соединение сброшено соперником
- Скорее всего, идентификатор конечной точки не был добавлен в белый список служб, пожалуйста, посетите шаг.
Проверка фильтров конечной точки
Установите следующие переменные окружения перед выполнением любых команд:
Вы можете извлечь INSTANCE_ID
из шага.
Подключение к удаленной базе данных
Предположим, вы пытаетесь использовать MySQL или PostgreSQL табличные функции в ClickHouse Cloud и подключиться к вашей базе данных, размещенной в VPC Amazon Web Services (AWS). AWS PrivateLink не может быть использован для безопасного подключения. PrivateLink является односторонним соединением. Он позволяет вашей внутренней сети или VPC Amazon подключаться безопасно к ClickHouse Cloud, но не позволяет ClickHouse Cloud подключаться к вашей внутренней сети.
Согласно документации AWS PrivateLink:
Используйте AWS PrivateLink, когда у вас настроен клиент/сервер, где вы хотите разрешить одному или нескольким потребительским VPC односторонний доступ к определенной службе или набору экземпляров в VPC поставщика услуг. Только клиенты в потребительском VPC могут инициировать соединение со службой в VPC поставщика услуг.
Для этого настройте группы безопасности AWS, чтобы разрешить соединения от ClickHouse Cloud к вашей внутренней/частной сервису базы данных. Проверьте IP-адреса по умолчанию для исходящих соединений для регионов ClickHouse Cloud, вместе с доступными статическими IP-адресами.