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, используйте IP Access Lists ClickHouse Cloud.
ClickHouse Cloud в настоящее время не поддерживает cross-region PrivateLink. Тем не менее, вы можете подключиться к PrivateLink с помощью VPC peering. Для получения дополнительной информации и рекомендаций по настройке обратитесь к документации AWS.
Пожалуйста, выполните следующие шаги, чтобы включить AWS Private Link:
- Получите имя сервиса конечной точки.
- Создайте конечную точку сервиса.
- Добавьте ID конечной точки в организацию ClickHouse Cloud.
- Добавьте ID конечной точки в список разрешенных сервисов.
Полный пример Terraform для AWS Private Link можно найти здесь.
Prerequisites
Перед тем как начать, вам потребуется:
- Учетная запись AWS.
- Ключ API с необходимыми правами для создания и управления приватными ссылками.
Steps
Следуйте этим шагам, чтобы подключить ваш ClickHouse Cloud к AWS PrivateLink.
Obtain Endpoint Service name
Option 1: ClickHouse Cloud console
В консоли ClickHouse Cloud откройте сервис, к которому вы хотите подключиться через PrivateLink, затем откройте меню Настройки. Нажмите кнопку Настроить приватную конечную точку. Скопируйте Имя сервиса, которое будет использоваться для настройки Private Link.

Option 2: API
Сначала установите следующие переменные окружения перед выполнением любых команд:
Получите желаемый ID экземпляра, фильтруя по региону, провайдеру и имени сервиса:
Получите AWS Service Name для вашей конфигурации Private Link:
Эта команда должна вернуть что-то вроде:
Запомните endpointServiceId
и перейдите к шагу 2.
Create a service endpoint
Далее вам нужно создать конечную точку сервиса, используя endpointServiceId
из предыдущего шага.
Option 1: AWS console
Откройте консоль AWS и перейдите в VPC → Конечные точки → Создать конечные точки.
Выберите Другие конечные сервисы и используйте endpointServiceId
, который вы получили на предыдущем шаге. Когда закончите, нажмите Проверить сервис:

Далее выберите ваш VPC и подсети:

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

Option 2: AWS CloudFormation
Убедитесь, что вы используете правильные ID подсетей, группы безопасности и ID VPC.
Option 3: Terraform
Modify Private DNS Name for Endpoint
Этот шаг добавляет конфигурацию частной DNS зоны <код региона>.vpce.aws.clickhouse.cloud
в AWS VPC.
Если вы используете собственный DNS-резолвер, создайте DNS-зону <код региона>.vpce.aws.clickhouse.cloud
и укажите запись *.<код региона>.vpce.aws.clickhouse.cloud
на IP-адреса ID конечной точки.
Option 1: AWS Console
Перейдите в VPC Endpoints, щелкните правой кнопкой мыши на VPC Endpoint, затем выберите Изменить частное DNS имя:

На открывшейся странице выберите Включить частные DNS имена:

Option 2: AWS CloudFormation
Обновите шаблон CloudFormation
и установите PrivateDnsEnabled
в true
:
Примените изменения.
Option 3: Terraform
- Измените ресурс
aws_vpc_endpoint
в коде Terraform и установитеprivate_dns_enabled
вtrue
:
Примените изменения.
Add Endpoint ID to ClickHouse Cloud organization
Option 1: ClickHouse Cloud console
Чтобы добавить конечную точку в организацию, перейдите к шагу Добавить ID конечной точки в список разрешенных сервисов. Добавление ID конечной точки
с помощью консоли ClickHouse Cloud в список разрешенных сервисов автоматически добавляет его в организацию.
Чтобы удалить конечную точку, откройте Детали организации -> Приватные конечные точки и нажмите кнопку удаления для удаления конечной точки.

Option 2: API
Установите следующие переменные окружения перед выполнением любых команд:
Установите переменную окружения VPC_ENDPOINT
, используя данные из предыдущего шага.
Чтобы добавить конечную точку, выполните:
Чтобы удалить конечную точку, выполните:
Add Endpoint ID to service(s) allow list
Option 1: ClickHouse Cloud console
В консоли ClickHouse Cloud откройте сервис, к которому вы хотите подключиться через PrivateLink, затем перейдите в Настройки. Введите ID конечной точки
, полученный на предыдущем шаге.
Если вы хотите разрешить доступ из существующего соединения PrivateLink, используйте выпадающее меню существующих конечных точек.

Option 2: API
Вам необходимо добавить ID конечной точки в разрешенный список для каждого экземпляра, который должен быть доступен с использованием PrivateLink.
Установите следующие переменные окружения перед выполнением любых команд:
Чтобы добавить ID конечной точки в разрешенный список:
Чтобы удалить ID конечной точки из разрешенного списка:
Accessing an instance using PrivateLink
Каждый экземпляр с настроенным фильтром Private Link имеет публичную и частную конечные точки. Для подключения к вашему сервису с использованием PrivateLink вы должны использовать частную конечную точку privateDnsHostname
.
Частное DNS имя доступно только из вашего AWS VPC. Не пытайтесь разрешить DNS хост из локальной машины.
Getting Private DNS Hostname
Option 1: ClickHouse Cloud console
В консоли ClickHouse Cloud перейдите в Настройки. Нажмите кнопку Настроить приватную конечную точку. В открывшемся окне скопируйте DNS имя.

Option 2: API
Установите следующие переменные окружения перед выполнением любых команд:
Это должно вывести что-то вроде:
В этом примере подключение к хосту xxxxxxx.yy-xxxx-N.vpce.aws.clickhouse.cloud
будет направлено на PrivateLink, но xxxxxxx.yy-xxxx-N.aws.clickhouse.cloud
будет направлено через интернет.
Troubleshooting
Multiple PrivateLinks in one region
В большинстве случаев вам нужно создать только одну конечную точку сервиса для каждого VPC. Эта конечная точка может направлять запросы из VPC к нескольким услугам ClickHouse Cloud.
Connection to private endpoint timed out
- Пожалуйста, прикрепите группу безопасности к VPC Endpoint.
- Пожалуйста, проверьте
входящие
правила на группе безопасности, прикрепленной к конечной точке, и разрешите порты ClickHouse. - Пожалуйста, проверьте
исходящие
правила на группе безопасности, прикрепленной к ВМ, которая используется для тестирования подключения, и разрешите соединения с портами ClickHouse.
Private Hostname: Not found address of host
- Пожалуйста, проверьте, что опция "Частные DNS имена" включена, посетите шаг для получения подробностей
Connection reset by peer
- Скорее всего, ID конечной точки не был добавлен в список разрешенных сервисов, пожалуйста, посетите шаг
Checking Endpoint filters
Установите следующие переменные окружения перед выполнением любых команд:
Connecting to a remote database
Предположим, вы пытаетесь использовать функции таблиц MySQL или PostgreSQL в ClickHouse Cloud и подключиться к вашей базе данных, размещенной в VPC Amazon Web Services (AWS). AWS PrivateLink не может быть использован для безопасного включения этого соединения. PrivateLink — это однонаправленное соединение. Оно позволяет вашей внутренней сети или Amazon VPC подключаться безопасно к ClickHouse Cloud, но не позволяет ClickHouse Cloud подключаться к вашей внутренней сети.
Согласно документации AWS PrivateLink:
Используйте AWS PrivateLink, когда у вас настроено клиентское/серверное соединение, где вы хотите предоставить одному или нескольким потребителям VPC однонаправленный доступ к определенному сервису или набору экземпляров в VPC провайдера услуги. Только клиенты в потребительском VPC могут инициировать соединение с сервисом в VPC провайдера услуги.
Для этого настройте ваши группы безопасности AWS, чтобы разрешить соединения от ClickHouse Cloud к вашей внутренней/приватной базе данных. Проверьте стандартные IP-адреса выхода для регионов ClickHouse Cloud, а также доступные статические IP-адреса.