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:
- Получите "Имя сервиса" для конечной точки.
- Создайте конечную точку AWS.
- Добавьте "Идентификатор конечной точки" в организацию ClickHouse Cloud.
- Добавьте "Идентификатор конечной точки" в список разрешений сервиса ClickHouse.
Найдите примеры Terraform здесь.
Внимание
ClickHouse пытается сгруппировать ваши сервисы, чтобы повторно использовать одну и ту же опубликованную конечную точку сервиса в рамках региона AWS. Тем не менее, эта группировка не гарантируется, особенно если вы распределяете свои сервисы по нескольким организациям ClickHouse. Если у вас уже настроен PrivateLink для других сервисов в вашей организации ClickHouse, вы можете обычно пропустить большинство шагов из-за этой группировки и перейти прямо к последнему шагу: Добавить "Идентификатор конечной точки" ClickHouse в список разрешенных сервисов.
Предварительные условия
Прежде чем начать, вам понадобится:
- Ваш аккаунт AWS.
- Ключ API ClickHouse с необходимыми разрешениями для создания и управления частными конечными точками на стороне ClickHouse.
Шаги
Следуйте этим шагам, чтобы подключить ваши сервисы ClickHouse Cloud через AWS PrivateLink.
Получить "Имя сервиса" для конечной точки
Вариант 1: Консоль ClickHouse Cloud
В консоли ClickHouse Cloud откройте сервис, который вы хотите подключить через PrivateLink, затем перейдите в меню Настройки.

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

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

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

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

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

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

Вариант 2: API
Установите следующие переменные окружения перед выполнением любых команд:
Вы можете получить INSTANCE_ID
из шага.
Это должно выводить что-то вроде:
В этом примере соединение через значение имени хоста privateDnsHostname
будет маршрутизироваться в PrivateLink, но соединение через имя хоста endpointServiceId
будет проходить через Интернет.
Устранение неполадок
Несколько PrivateLink в одном регионе
В большинстве случаев вам нужно создать единую конечную точку сервиса для каждого VPC. Эта конечная точка может маршрутизировать запросы из VPC к нескольким сервисам ClickHouse Cloud. Пожалуйста, обратитесь здесь.
Таймаут подключения к частной конечной точке
- Пожалуйста, прикрепите группу безопасности к VPC конечной точке.
- Пожалуйста, проверьте
inbound
правила на группе безопасности, прикрепленной к конечной точке, и разрешите порты ClickHouse. - Пожалуйста, проверьте
outbound
правила на группе безопасности, прикрепленной к ВМ, которая используется для теста подключения, и разрешите соединения с портами ClickHouse.
Частное имя хоста: Адрес хоста не найден
- Пожалуйста, проверьте вашу конфигурацию DNS.
Сброс подключения со стороны собеседника
- Скорее всего, Идентификатор конечной точки не был добавлен в список разрешенных сервисов, пожалуйста, посетите шаг.
Проверка фильтров конечной точки
Установите следующие переменные окружения перед выполнением любых команд:
Вы можете получить INSTANCE_ID
из шага.
Подключение к удаленной базе данных
Предположим, вы пытаетесь использовать 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-адреса.