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

Настройка AWS PrivateLink для Postgres Enterprise +

Доступно для определённых 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.

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)

    • Протокол группы целей: 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.

Балансировка нагрузки между зонами (Cross-Zone Load Balancing)

Мы настоятельно рекомендуем включить балансировку нагрузки между зонами для вашего NLB или Target Group; для некоторых подключений она может быть обязательной. Балансировка между зонами также может улучшить распределение маршрутизации и устойчивость соединений. Учтите, что межзональная связность может повлечь дополнительные расходы на передачу данных, хотя для запросов из dbt они должны быть минимальными.

2. Предоставление доступа учетной записи AWS dbt к службе конечной точки VPC

На подготовленной службе конечной точки VPC нажмите вкладку Разрешить принципалов. Нажмите Разрешить принципалов, чтобы предоставить доступ. Введите ARN корневого пользователя в соответствующей производственной учетной записи AWS и сохраните изменения.

  • Принципал: arn:aws:iam::346425330055:role/MTPL_Admin
Введите ARNВведите ARN

3. Получение имени службы конечной точки VPC

После того как сервис VPC Endpoint Service будет создан, вы можете найти его имя в консоли AWS, перейдя в раздел VPCEndpoint 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.

  1. Перейдите в настройкиСоздать новый проект → выберите PostgreSQL
  2. Вы увидите две радиокнопки: Публичный и Частный. Выберите Частный.
  3. Выберите частную конечную точку из выпадающего списка (это автоматически заполнит поле имени хоста/учетной записи).
  4. Настройте оставшиеся детали платформы данных.
  5. Проверьте ваше подключение и сохраните его.

Устранение неполадок

Если эндпоинт PrivateLink был создан и настроен в dbt, но соединение по‑прежнему не работает, проверьте следующие элементы сетевой конфигурации, чтобы убедиться, что запросы и ответы могут успешно маршрутизироваться между dbt и базовым сервисом.

Конфигурация

Начните с конфигурации:

 1. Группа безопасности NLB

Сетевой балансировщик нагрузки (Network Load Balancer, NLB), связанный с VPC Endpoint Service, либо не должен иметь привязанной Security Group, либо Security Group должна содержать правило, разрешающее запросы из соответствующих приватных CIDR-диапазонов dbt. Обратите внимание, что это отличается от статических публичных IP-адресов, указанных на странице dbt Connection. Служба поддержки dbt может предоставить корректные приватные CIDR-диапазоны по запросу.

  • Note*: Чтобы проверить, является ли это причиной проблемы, можно временно добавить правило разрешения 10.0.0.0/8 — это должно обеспечить соединение до тех пор, пока правило не будет уточнено до более узкого CIDR-диапазона.
 2. Слушатель NLB и целевая группа

Проверьте, что к NLB подключён Listener, который соответствует порту, к которому пытается подключиться dbt. У этого Listener должно быть настроено действие, перенаправляющее трафик в Target Group с таргетами, указывающими на ваш бэкенд‑сервис. По крайней мере один (а лучше — все) из этих таргетов должен иметь статус Healthy. Нездоровые (Unhealthy) таргеты могут указывать на то, что сам бэкенд‑сервис действительно находится в некорректном состоянии, либо на то, что сервис защищён Security Group, которая не разрешает запросы от NLB.

 3. Балансировка нагрузки между зонами

Убедитесь, что для вашего NLB включена опция Cross-zone load balancing (проверьте вкладку Attributes у NLB в консоли AWS). Если она отключена, а зоны, к которым подключён dbt, не совпадают с зонами, в которых запущен сервис, запросы могут маршрутизироваться некорректно. Включение cross-zone load balancing также делает соединение более устойчивым в случае отказа одной из зон. При использовании cross-zone connectivity могут взиматься дополнительные платы за передачу данных, однако для запросов от dbt они, как правило, будут минимальными.

 4. Таблицы маршрутизации и ACL

Если все вышеперечисленное проверено, возможно, что запросы неправильно маршрутизируются внутри частной сети. Это может быть связано с неправильной конфигурацией таблиц маршрутизации VPC или списков контроля доступа. Проверьте эти настройки с вашим сетевым администратором, чтобы убедиться, что запросы могут быть маршрутизированы от сервиса конечной точки VPC к поддерживающему сервису и что ответ может быть возвращен к сервису конечной точки VPC. Один из способов проверить это — создать конечную точку VPC в другой VPC в вашей сети, чтобы проверить, что подключение работает независимо от подключения dbt.

Мониторинг

Чтобы помочь изолировать проблемы с подключением по PrivateLink от dbt, можно использовать несколько источников мониторинга для проверки активности запросов. Для того чтобы в мониторинге появились данные, запросы сначала должны быть отправлены на endpoint. Обратитесь в службу поддержки dbt, чтобы узнать, когда выполнялось тестирование подключения, или запросить новые попытки подключения. Используйте это время, чтобы сопоставить его с активностью в следующих источниках мониторинга.

 Мониторинг сервиса конечной точки VPC

В консоли AWS перейдите в VPC -> Endpoint Services. Выберите тестируемый сервис конечной точки и нажмите вкладку Monitoring. Обновите временной интервал, чтобы включить время, когда были отправлены попытки тестового подключения. Если есть активность в графиках New connections и Bytes processed, значит, запросы были получены сервисом конечной точки, что предполагает, что конечная точка dbt маршрутизируется правильно.

 Мониторинг NLB

В консоли AWS перейдите в EC2 -> Load Balancers. Выберите тестируемый сетевой балансировщик нагрузки (NLB) и нажмите вкладку Monitoring. Обновите временной интервал, чтобы включить время, когда были отправлены попытки тестового подключения. Если есть активность в графиках New flow count и Processed bytes, значит, запросы были получены NLB от сервиса конечной точки, что предполагает, что слушатель NLB, целевая группа и группа безопасности настроены правильно.

 Логи потоков VPC

Логи потоков VPC могут предоставить различную полезную информацию о запросах, маршрутизируемых через ваши VPC, хотя иногда их может быть сложно найти и интерпретировать. Логи потоков могут записываться либо в S3, либо в CloudWatch Logs, поэтому определите доступность этих логов для вашей VPC и запросите их соответствующим образом. Логи потоков записывают идентификатор сетевого интерфейса (ENI), исходный и целевой IP и порт, а также информацию о том, был ли запрос принят или отклонен группой безопасности и/или сетевым ACL. Это может быть полезно для понимания, прибыл ли запрос на определенный сетевой интерфейс и был ли этот запрос принят, что может выявить чрезмерно ограничительные правила. Для получения дополнительной информации о доступе и интерпретации логов потоков VPC см. соответствующую документацию AWS.

Нашли ошибку?

0
Loading