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

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

Доступно для определённых Enterprise-тарифов

Функция приватного подключения доступна для следующих Enterprise-тарифов dbt:

  • Business Critical
  • Virtual Private

Чтобы узнать больше об этих тарифах, свяжитесь с нами по адресу sales@getdbt.com.

AWS предоставляет два различных способа создания VPC-эндпоинта PrivateLink для кластера Redshift, работающего в другой VPC:

dbt поддерживает оба типа эндпоинтов, однако при выборе подходящего варианта необходимо учитывать ряд факторов. Redshift-managed обеспечивает значительно более простую настройку и не требует дополнительных затрат, поэтому для многих пользователей он может быть предпочтительным вариантом, но он доступен не во всех средах. Исходя из этих критериев, вам нужно определить, какой тип эндпоинта подходит именно для вашей системы. Далее следуйте инструкциям из раздела ниже, который соответствует выбранному типу эндпоинта.

Частные конечные точки подключения не могут соединяться между разными облачными провайдерами (AWS, Azure и GCP). Чтобы частное подключение работало, и dbt, и сервер (например, Redshift) должны быть размещены у одного и того же облачного провайдера. Например, dbt, размещённый в AWS, не может подключаться к сервисам, размещённым в Azure, а dbt, размещённый в Azure, не может подключаться к сервисам, размещённым в GCP.

  1. Найдите раздел Granted accounts в настройках Redshift

    • Standard Redshift

      • В запущенном кластере Redshift выберите вкладку Properties.
      Redshift Properties tabRedshift Properties tab
    • Redshift Serverless

      • На странице Workgroup configuration для Redshift Serverless.
  2. В разделе Granted accounts нажмите Grant access.

Предоставленные учетные записи RedshiftПредоставленные учетные записи Redshift
  1. Введите AWS account ID: 346425330055ПРИМЕЧАНИЕ: этот account ID применяется только для Multi-Tenant‑окружений dbt. Для Virtual Private / Single‑Tenant account ID, пожалуйста, свяжитесь с Support.

  2. Выберите Grant access to all VPCs —или— (необязательно) обратитесь в Support, чтобы получить соответствующий региональный VPC ID и указать его в поле Grant access to specific VPCs.

Предоставление доступа RedshiftПредоставление доступа Redshift
  1. Добавьте необходимую информацию в следующий шаблон и отправьте ваш запрос в dbt Support:

    • Standard Redshift

      Subject: New Multi-Tenant PrivateLink Request
      - Type: Redshift-managed
      - Redshift cluster name:
      - Redshift cluster AWS account ID:
      - Redshift cluster AWS Region (for example, us-east-1, eu-west-2):
      - <Constant name="cloud" /> multi-tenant environment (US, EMEA, AU):
    • Redshift Serverless

      Subject: New Multi-Tenant PrivateLink Request
      - Type: Redshift-managed - Serverless
      - Redshift workgroup name:
      - Redshift workgroup AWS account ID:
      - Redshift workgroup AWS Region (for example, us-east-1, eu-west-2):
      - <Constant name="cloud" /> multi-tenant environment (US, EMEA, AU):

dbt Labs выполнит настройку приватного подключения от вашего имени. Пожалуйста, заложите 3–5 рабочих дней на завершение этого процесса. Служба поддержки свяжется с вами, когда конечная точка (endpoint) будет доступна.

1. Подготовка ресурсов AWS

Создание интерфейсного VPC PrivateLink соединения требует создания нескольких ресурсов AWS в учетной записи, содержащей кластер Redshift:

  • Security Group — Если вы подключаетесь к существующему кластеру Redshift, это, вероятно, уже существует, однако вам может потребоваться добавить или изменить правила Security Group, чтобы принимать трафик от Network Load Balancer (NLB), созданного для этого Endpoint Service.

  • Target Group — Target Group будет прикреплена к NLB, чтобы указать, куда направлять запросы. Существуют различные типы целей для Target Groups NLB, но вы будете использовать тип IP-адреса.

    • Тип цели: IP

      • Стандартный Redshift

        • Используйте IP-адреса из Network Interfaces кластера Redshift, когда это возможно. Хотя IP-адреса, указанные в разделе Node IP addresses, будут работать, они также более подвержены изменениям.
        Тип цел�и: IP-адресТип цели: IP-адрес
        • Вероятно, будет только один сетевой интерфейс (NI) в начале, но если кластер перейдет в другую зону доступности (AZ), будет создан новый NI для этой AZ. IP NI из оригинальной AZ все еще будет работать, но новый IP NI также может быть добавлен в Target Group. Если добавляются дополнительные IP, обратите внимание, что NLB также должен добавить соответствующую AZ. После создания NI(ы) должны оставаться неизменными (это наше наблюдение из тестирования, но AWS официально это не документирует).
      • Redshift Serverless

        • Чтобы найти IP-адреса для экземпляра Redshift Serverless, найдите и скопируйте конечную точку (только URL, указанный перед портом) в разделе конфигурации Workgroup в консоли AWS для экземпляра.
        Конечная точка Redshift ServerlessКонечная точка Redshift Serverless
        • Из командной строки выполните команду nslookup <endpoint>, используя конечную точку, найденную на предыдущем шаге, и используйте связанные IP для Target Group.
    • Протокол Target Group: TCP

  • Network Load Balancer (NLB) — Требуется создать Listener, который будет привязан к только что созданной Target Group (порт 5439 используется по умолчанию)

    • 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 (details).
  • VPC Endpoint Service — Подключите к только что созданному NLB.

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

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

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

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

  • Principal: arn:aws:iam::346425330055:role/MTPL_Admin
Введите ARNВведите ARN

3. Получение имени VPC Endpoint Service

После того как VPC Endpoint Service будет создан, вы можете найти имя сервиса в консоли AWS, перейдя в раздел VPCEndpoint Services и выбрав соответствующий endpoint service. Вы можете скопировать значение поля service name и включить его в ваше обращение в службу поддержки dbt.

Получить значение поля имени сервисаПолучить значение поля имени сервиса

4. Добавьте необходимую информацию в шаблон ниже и отправьте запрос в dbt Support:

Subject: New Multi-Tenant PrivateLink Request
- Type: Redshift Interface-type
- VPC Endpoint Service Name:
- Redshift cluster AWS Region (for example, us-east-1, eu-west-2):
- dbt AWS multi-tenant environment (US, EMEA, AU):

dbt Labs выполнит настройку приватного подключения от вашего имени. Пожалуйста, заложите 3–5 рабочих дней на завершение этого процесса. Служба поддержки свяжется с вами, когда конечная точка (endpoint) будет доступна.

Создание подключения в dbt

После того как поддержка dbt завершит настройку, вы сможете начать создавать новые подключения с использованием PrivateLink.

  1. Перейдите в настройкиСоздать новый проект → выберите Redshift
  2. Вы увидите две радиокнопки: Public и Private. Выберите Private.
  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