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

AWS PrivateLink

Scale plan feature

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:

  1. Получите имя службы "Endpoint".
  2. Создайте AWS Endpoint.
  3. Добавьте "Endpoint ID" в организацию ClickHouse Cloud.
  4. Добавьте "Endpoint ID" в белый список служб ClickHouse.

Найдите примеры Terraform здесь.

Внимание

ClickHouse пытается сгруппировать ваши службы для повторного использования одной и той же опубликованной службы endpoint в пределах региона AWS. Однако эта группировка не гарантируется, особенно если вы распределяете свои службы по нескольким организациям ClickHouse. Если у вас уже настроен PrivateLink для других услуг в вашей организации ClickHouse, вы часто можете пропустить большинство шагов из-за этой группировки и перейти непосредственно к последнему шагу: Добавьте "Endpoint ID" ClickHouse в белый список служб ClickHouse.

Предварительные условия

Перед тем как начать, вам понадобятся:

  1. Ваша учетная запись AWS.
  2. 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 и перейдите в VPCEndpointsСоздать конечные точки.

Выберите Услуги конечных точек, которые используют NLB и GWLB и используйте Service nameконсоль или endpointServiceIdAPI, который вы получили на шаге Получить имя "Endpoint" службы в поле Service Name. Нажмите Проверить службу:

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

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

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

В качестве дополнительного шага назначьте группы безопасности/теги:

примечание

Убедитесь, что порты 443, 8443, 9440, 3306 разрешены в группе безопасности.

После создания VPC Endpoint запишите значение Endpoint ID; оно потребуется вам для следующего шага.

Вариант 2: AWS CloudFormation

Затем вам необходимо создать VPC Endpoint, используя Service nameконсоль или endpointServiceIdAPI, который вы получили на шаге Получите имя "Endpoint" службы. Убедитесь, что вы используете правильные ID подсетей, группы безопасности и ID VPC.

После создания VPC Endpoint запишите значение Endpoint ID; оно потребуется вам для следующего шага.

Вариант 3: Terraform

service_name ниже — это Service nameконсоль или endpointServiceIdAPI, который вы получили на шаге Получите имя "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.

Установите следующие переменные окружения перед выполнением любых команд:

Чтобы добавить идентификатор конечной точки в белый список:

Чтобы удалить идентификатор конечной точки из белого списка:

Каждая служба с включенным Private Link имеет публичный и частный endpoint. Для подключения с использованием Private Link вам необходимо использовать частный endpoint, который будет privateDnsHostnameAPI или DNS Nameконсоль, взятый из Получите имя "Endpoint" службы.

Получение частного DNS имени

Вариант 1: Консоль ClickHouse Cloud

В консоли ClickHouse Cloud перейдите в Настройки. Нажмите на кнопку Настроить частный конечный пункт. В открывшемся меню скопируйте DNS Name.

Вариант 2: API

Установите следующие переменные окружения перед выполнением любых команд:

Вы можете извлечь INSTANCE_ID из шага.

Это должно вывести что-то вроде:

В этом примере подключение через значение имени хоста privateDnsHostname будет направлено на PrivateLink, но подключение через имя хоста endpointServiceId будет направлено через Интернет.

Устранение неисправностей

В большинстве случаев вам нужно создать единую службу конечных точек для каждого 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-адресами.