Настройка AWS PrivateLink для Postgres
Эта функция доступна на следующих уровнях dbt Enterprise:
- Enterprise+
- 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
-
Сопоставление сети: Выберите VPC, в которой развертываются VPC Endpoint Service и NLB, и выберите подсети как минимум из двух зон доступности.
- Группы безопасности: У балансировщика сетевой нагрузки (NLB), связанного с сервисом конечной точки VPC, либо не должно быть связанной группы безопасности, либо в этой группе должно быть правило, разрешающее запросы из соответствующих частных диапазонов CIDR dbt. Обратите внимание: это не те же диапазоны, что и статические публичные IP-адреса, перечисленные на странице dbt Доступ, регионы и IP-адреса. Служба поддержки dbt предоставит нужные частные диапазоны CIDR по запросу. При необходимости, пока вы не сможете сузить правило до меньшего диапазона CIDR, предоставленного dbt, разрешите подключение, временно добавив разрешающее правило для
10.0.0.0/8. - Обработчики подключений: Создайте по одному обработчику подключений для каждой целевой группы, сопоставив соответствующий входящий порт с нужной целевой группой (подробнее).
- Группы безопасности: У балансировщика сетевой нагрузки (NLB), связанного с сервисом конечной точки VPC, либо не должно быть связанной группы безопасности, либо в этой группе должно быть правило, разрешающее запросы из соответствующих частных диапазонов CIDR dbt. Обратите внимание: это не те же диапазоны, что и статические публичные IP-адреса, перечисленные на странице dbt Доступ, регионы и IP-адреса. Служба поддержки dbt предоставит нужные частные диапазоны CIDR по запросу. При необходимости, пока вы не сможете сузить правило до меньшего диапазона CIDR, предоставленного dbt, разрешите подключение, временно добавив разрешающее правило для
-
Сервис конечной точки VPC — Подключите его к созданному NLB.
- Требуется подтверждение (необязательно) — Требует от вас подтвердить наш запрос на подключение после того, как dbt создаст конечную точку.
Мы настоятельно рекомендуем включить балансировку нагрузки между зонами для вашего NLB или целевой группы (Target Group); для некоторых подключений она может быть необходима. Балансировка нагрузки между зонами также может улучшить распределение трафика и повысить устойчивость подключений к сбоям. Обратите внимание, что подключение между зонами может повлечь дополнительные расходы на передачу данных, хотя для запросов от dbt они должны быть минимальными.
2. Предоставьте аккаунту AWS dbt доступ к сервису конечной точки VPC
На подготовленной службе конечной точки VPC нажмите вкладку Разрешить принципалов. Нажмите Разрешить принципалов, чтобы предоставить доступ. Введите ARN корневого пользователя в соответствующей производственной учетной записи AWS и сохраните изменения.
- Принципал:
arn:aws:iam::346425330055:role/MTPL_Admin
3. Получите имя сервиса конечной точки VPC
После создания сервиса конечной точки VPC его имя можно найти в консоли AWS: перейдите в VPC → Endpoint Services и выберите нужный сервис конечной точки. Скопируйте значение поля с именем сервиса и включите его в обращение в службу поддержки dbt.
4. Отправьте запрос в службу поддержки dbt
Добавьте необходимую информацию в приведённый ниже шаблон и отправьте запрос в службу поддержки dbt:
dbt Labs выполнит настройку приватного подключения от вашего имени. Пожалуйста, заложите 3–5 рабочих дней на завершение этого процесса. Служба поддержки свяжется с вами, когда конечная точка (endpoint) будет доступна.
5. Примите запрос на подключение
Когда вы получите уведомление о том, что ресурсы подготовлены в среде dbt, необходимо принять запрос на подключение к конечной точке (если сервис конечной точки VPC не настроен на автоматическое принятие запросов на подключение). Вы можете принимать запросы через консоль AWS, как показано ниже, или через AWS CLI.
Создайте подключение в dbt
После того как служба поддержки dbt завершит настройку, вы сможете создавать новые подключения с использованием PrivateLink.
- Перейдите в Account Settings → Projects → Create new project.
- В разделе Configure your development environment step выберите Add new connection.
- Вы перейдёте на страницу Add new connection. Выберите PostgreSQL.
- В разделе Settings выберите PrivateLink Endpoint.
- Выберите частную конечную точку из раскрывающегося списка (поле имени хоста/учётной записи заполнится автоматически).
- Настройте остальные параметры платформы данных.
- Проверьте подключение и сохраните его.
Устранение неполадок
Если эндпоинт PrivateLink уже создан и настроен в dbt, но подключение по-прежнему не работает, проверьте следующие параметры сетевой конфигурации, чтобы убедиться, что запросы и ответы могут успешно передаваться между dbt и обслуживающим сервисом.
Конфигурация
Начните с конфигурации:
Мониторинг
Чтобы локализовать проблемы с подключением через PrivateLink из dbt, можно использовать несколько источников данных мониторинга для проверки активности запросов. Чтобы в данных мониторинга что-либо появилось, сначала необходимо отправить запросы к конечной точке. Обратитесь в службу поддержки dbt, чтобы узнать, когда проводилась проверка подключения, или запросить новые попытки подключения. Сопоставьте время этих попыток с активностью в следующих источниках данных мониторинга.


