Настройка AWS PrivateLink для Postgres
Функция PrivateLink доступна на следующих уровнях dbt Cloud Enterprise:
- Business Critical
- Virtual Private
Чтобы узнать больше об этих уровнях, свяжитесь с нами по адресу sales@getdbt.com.
База данных Postgres, размещенная либо в AWS, либо в правильно подключенном локальном центре обработки данных, может быть доступна через частное сетевое соединение с использованием AWS Interface-type PrivateLink. Тип группы целей, подключенной к сетевому балансировщику нагрузки (NLB), может варьироваться в зависимости от местоположения и типа подключаемого экземпляра Postgres, как объясняется в следующих шагах.
Конечные точки PrivateLink не могут подключаться между различными облачными провайдерами. Для того чтобы соединение PrivateLink работало, как dbt Cloud, так и сервер (например, Postgres) должны быть размещены у одного и того же облачного провайдера. Например, dbt Cloud, размещенный на AWS, не может подключаться через PrivateLink к сервисам, размещенным на Azure, и dbt Cloud, размещенный на Azure, не может подключаться через PrivateLink к сервисам, размещенным на AWS.
Настройка интерфейсного т ипа PrivateLink для Postgres
1. Подготовка ресурсов AWS
Создание соединения Interface VPC PrivateLink требует создания нескольких ресурсов AWS в учетной записи, содержащей или подключенной к экземпляру Postgres:
-
Группа безопасности (только для размещения в AWS) — Если вы подключаетесь к существующему экземпляру Postgres, это, вероятно, уже существует, однако вам может потребоваться добавить или изменить правила группы безопасности, чтобы принимать трафик от сетевого балансировщика нагрузки (NLB), созданного для этой службы конечной точки.
-
Группа целей — Группа целей будет прикреплена к NLB, чтобы указать, куда направлять запросы. Для групп целей NLB доступны различные типы целей, поэтому выберите тот, который подходит для вашей настройки Postgres.
-
Тип цели:
-
Amazon RDS для PostgreSQL - IP
-
Найдите IP-адрес вашего экземпляра RDS, используя командную строку, такую как
nslookup <endpoint>
илиdig +short <endpoint>
с вашим DNS-адресом RDS -
Примечание: С возможностями отказоустойчивости RDS Multi-AZ IP-адрес вашего экземпляра RDS может измениться, в этом случае ваша группа целей должна быть обновлена. См. этот блог AWS для получения более подробной информации и возможного решения.
-
-
Локальный сервер Postgres - IP
- Используйте IP-адрес локального сервера Postgres, связанного с AWS через AWS Direct Connect или соединение VPN "сайт-сайт"
-
Postgres на EC2 - Instance/ASG (или IP)
-
Если ваш экземпляр Postgres размещен на EC2, тип группы целей instance (или, в идеале, использование типа instance для подключения к группе автоматического масштабирования) может быть использован для подключения экземпляра без необходимости в статическом IP-адресе
-
Тип IP также может быть использован, с пониманием того, что IP-адрес экземпляра EC2 может измениться, если экземпляр будет перезапущен по какой-либо причине
-
-
-
Протокол группы целей: TCP
-
-
Сетевой балансировщик нагрузки (NLB) — Требуется создание слушателя, который прикрепляется к вновь созданной группе целей для порта
5432
- Схема: Внутренняя
- Тип IP-адреса: IPv4
- Сетевое отображение: Выберите VPC, в котором развертываются служба конечной точки VPC и NLB, и выберите подсети как минимум из двух зон доступности.
- Группы безопасности: Сетевой балансировщик нагрузки (NLB), связанный с службой конечной точки VPC, должен либо не иметь связанной группы безопасности, либо группа безопасности должна иметь правило, позволяющее запросы от соответствующих частных CIDR dbt Cloud. Обратите внимание, что это отличается от статических публичных IP-адресов, указанных на странице Доступ, регионы и IP-адреса dbt Cloud. Поддержка dbt может предоставить правильные частные CIDR по запросу. Если необходимо, до того как вы сможете уточнить правило до меньшего CIDR, предоставленного dbt, разрешите подключение, временно добавив правило разрешения
10.0.0.0/8
. - Слушатели: Создайте одного слушателя на каждую группу целей, который сопоставляет соответствующий входящий порт с соответствующей группой целей (подробности).
-
Служба конечной точки VPC — Подключите к вновь созданному NLB.
- Требуется принятие (опционально) — Требует принять наш запрос на подключение после того, как dbt создаст конечную точку.
Мы настоятельно рекомендуем использовать балансировку нагрузки между зонами для вашего NLB или группы целевых ресурсов; некоторые соединения могут требовать этого. Балансировка нагрузки между зонами также может улучшить распределение маршрутизации и устойчивость соединений. Обратите внимание, что подключение между зонами может повлечь дополнительные расходы на передачу данных, хотя для запросов из dbt Cloud они должны быть минимальными.
2. Предоставление доступа учетной записи AWS dbt к службе конечной точки VPC
На подготовленной службе конечной точки VPC нажмите вкладку Разрешить принципалов. Нажмите Разрешить принципалов, чтобы предоставить доступ. Введите ARN корневого пользователя в соответствующей производственной учетной записи AWS и сохраните изменения.
- Принципал:
arn:aws:iam::346425330055:role/MTPL_Admin
3. Получение имени службы конечной точки VPC
После того как служба конечной точки VPC будет подготовлена, вы можете найти имя службы в консоли AWS, перейдя в VPC → Службы конечных точек и выбрав соответствующую службу конечной точки. Вы можете скопировать значение поля имени службы и включить его в ваше сообщение в поддержку dbt Cloud.
4. Добавьте необходимую информацию в шаблон ниже и отправьте ваш запрос в поддержку dbt:
Тема: Новый запрос на Multi-Tenant PrivateLink
- Тип: Интерфейсный тип Postgres
- Имя службы конечной точки VPC:
- Регион AWS сервера Postgres (например, us-east-1, eu-west-2):
- Мультиарендная среда dbt Cloud (США, EMEA, AU):
dbt Labs будет работать от вашего имени для завершения настройки PrivateLink. Пожалуйста, выделите 3-5 рабочих дней на завершение этого процесса. Поддержка свяжется с вами, когда конечная точка будет доступна.
5. Принятие запроса на подключение
Когда вы получите уведомление о том, что ресурсы подготовлены в среде dbt Cloud, вы должны принять подключение к конечной точке (если служба конечной точки VPC не настроена на автоматическое принятие запросов на подключение). Запросы могут быть приняты через консоль AWS, как показано ниже, или через AWS CLI.
Создание подключения в dbt Cloud
После того как поддержка dbt Cloud завершит настройку, вы можете начать создавать новые подключения, используя PrivateLink.
- Перейдите в настройки → Создать новый проект → выберите PostgreSQL
- Вы увидите две радиокнопки: Публичный и Частный. Выберите Частный.
- Выберите частную конечную точку из выпадающего списка (это автоматически заполнит поле имени хоста/учетной записи).
- Настройте оставшиеся детали платформы данных.
- Проверьте ваше подключение и сохраните его.
Устранение неполадок
Если конечная точка PrivateLink была создана и настроена в dbt Cloud, но подключение все еще не работает, проверьте следующее в вашей сетевой конфигурации, чтобы убедиться, что запросы и ответы могут успешно маршрутизироваться между dbt Cloud и поддерживающим сервисом.
Конфигурация
Начните с конфигурации:
Мониторинг
Чтобы помочь изолировать проблемы с подключением через соединение PrivateLink из dbt Cloud, есть несколько источников мониторинга, которые можно использовать для проверки активности запросов. Сначала запросы должны быть отправлены на конечную точку, чтобы увидеть что-либо в мониторинге. Свяжитесь с поддержкой dbt, чтобы узнать, когда проводилось тестирование подключения, или запросите новые попытки подключения. Используйте эти временные метки для корреляции с активностью в следующих источниках мониторинга.