Настройка AWS PrivateLink для Postgres Enterprise +
Функция приватного подключения доступна для следующих Enterprise-тарифов dbt:
- Business Critical
- Virtual Private
Чтобы узнать больше об этих тарифах, свяжитесь с нами по адресу sales@getdbt.com.
База данных Postgres, размещенная либо в AWS, либо в правильно подключенном локальном центре обработки данных, может быть доступна через частное сетевое соединение с использованием AWS Interface-type PrivateLink. Тип группы целей, подключенной к сетевому балансировщику нагрузки (NLB), может варьироваться в зависимости от местоположения и типа подключаемого экземпляра Postgres, как объясняется в следующих шагах.
Частные конечные точки подключения не могут соединяться между разными облачными провайдерами (AWS, Azure и GCP). Чтобы частное подключение работало, и dbt, и сервер (например, Postgres) должны быть размещены у одного и того же облачного провайдера. Например, dbt, размещённый в AWS, не может подключаться к сервисам, размещённым в Azure, а dbt, размещённый в Azure, не может подключаться к сервисам, размещённым в GCP.
Настройка интерфейсного типа 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
-
-
Network Load Balancer (NLB) — Требуется создать Listener, который будет привязан к только что созданной Target Group для порта
5432- Scheme: Internal
- IP address type: IPv4
- Network mapping: Выберите VPC, в котором разворачиваются VPC Endpoint Service и NLB, и укажите подсети как минимум из двух Availability Zones.
- Security Groups: Network Load Balancer (NLB), связанный с VPC endpoint service, либо не должен иметь привязанной security group, либо security group должна содержать правило, разрешающее запросы из соответствующих private CIDR(s) dbt. Обратите внимание, что это отличается от статических публичных IP-адресов, перечисленных на странице dbt Access, Regions, & IP addresses. Поддержка dbt может предоставить корректные private CIDR(s) по запросу. При необходимости, до тех пор пока вы не сможете сузить правило до меньшего CIDR, предоставленного dbt, можно временно разрешить подключение, добавив allow‑правило
10.0.0.0/8. - Listeners: Создайте по одному listener’у на каждую target group, который сопоставляет соответствующий входящий порт с нужной target group (подробности).
-
VPC Endpoint Service — Подключите его к только что созданному NLB.
- Acceptance required (optional) — Требует, чтобы вы приняли наш запрос на подключение после того, как dbt создаст endpoint.
Мы настоятельно рекомендуем включить балансировку нагрузки между зонами для вашего NLB или Target Group; для некоторых подключений она может быть обязательной. Балансировка между зонами также может улучшить распределение маршрутизации и устойчивость соединений. Учтите, что межзональная связность может повлечь дополнительные расходы на передачу данных, хотя для запросов из dbt они должны быть минимальными.
2. Предоставление доступа учетной записи AWS dbt к службе конечной точки VPC
На подготовленной службе конечной точки VPC нажмите вкладку Разрешить принципалов. Нажмите Разрешить принципалов, чтобы предоставить доступ. Введите ARN корневого пользователя в соответствующей производственной учетной записи AWS и сохраните изменения.
- Принципал:
arn:aws:iam::346425330055:role/MTPL_Admin
3. Получение имени службы конечной точки VPC
После того как сервис VPC Endpoint Service будет создан, вы можете найти его имя в консоли AWS, перейдя в раздел VPC → Endpoint Services и выбрав соответствующий endpoint‑сервис. Вы можете скопировать значение поля service name и включить его в обращение в службу поддержки dbt.
4. Добавьте необходимую информацию в шаблон ниже и отправьте ваш запрос в dbt Support:
Subject: New Multi-Tenant PrivateLink Request
- Type: Postgres Interface-type
- VPC Endpoint Service Name:
- Postgres server AWS Region (for example, us-east-1, eu-west-2):
- dbt AWS multi-tenant environment (US, EMEA, AU):
dbt Labs выполнит настройку приватного подключения от вашего имени. Пожалуйста, заложите 3–5 рабочих дней на завершение этого процесса. Служба поддержки свяжется с вами, когда конечная точка (endpoint) будет доступна.
5. Принятие запроса на подключение
Когда вы получите уведомление о том, что ресурсы развернуты в среде dbt, вам необходимо принять подключение к endpoint (если только сервис VPC Endpoint Service не настроен на автоматическое принятие запросов на подключение). Запросы можно принять через консоль AWS, как показано ниже, либо с помощью AWS CLI.
Создание подключения в dbt
После того как поддержка dbt завершит настройку, вы сможете начать создавать новые подключения с использованием PrivateLink.
- Перейдите в настройки → Создать новый проект → выберите PostgreSQL
- Вы увидите две радиокнопки: Публичный и Частный. Выберите Частный.
- Выберите частную конечную точку из выпадающего списка (это автоматически заполнит поле имени хоста/учетной записи).
- Настройте оставшиеся детали платформы данных.
- Проверьте ваше подключение и сохраните его.
Устранение неполадок
Если эндпоинт PrivateLink был создан и настроен в dbt, но соединение по‑прежнему не работает, проверьте следующие элементы сетевой конфигурации, чтобы убедиться, что запросы и ответы могут успешно маршрутизироваться между dbt и базовым сервисом.
Конфигурация
Начните с конфигурации:
Мониторинг
Чтобы помочь изолировать проблемы с подключением по PrivateLink от dbt, можно использовать несколько источников мониторинга для проверки активности запросов. Для того чтобы в мониторинге появились данные, запросы сначала должны быть отправлены на endpoint. Обратитесь в службу поддержки dbt, чтобы узнать, когда выполнялось тестирование подключения, или запросить новые попытки подключения. Используйте это время, чтобы сопоставить его с активностью в следующих источниках мониторинга.


