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

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

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

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

  • Enterprise+
  • Virtual Private

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

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

dbt поддерживает оба типа конечных точек, но при выборе типа необходимо учитывать ряд особенностей. Конечные точки, управляемые Redshift, проще настроить, и они не требуют дополнительных затрат, что делает их предпочтительным вариантом для многих пользователей. Однако они могут быть доступны не во всех средах. Определите подходящий для вашей системы тип с учётом этих критериев. Следуйте инструкциям в разделе ниже, соответствующем выбранному типу конечной точки.

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

Настроить конечную точку AWS PrivateLink для Redshift можно двумя способами:

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

Самостоятельная настройка частных конечных точек Бета-версия​

Самостоятельная настройка частных конечных точек для Redshift в AWS сейчас находится в стадии бета-тестирования и доступна всем клиентам, соответствующим требованиям. Если в настройках вашего аккаунта нет раздела Private endpoints, используйте настройку с помощью службы поддержки.

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

dbt platform поддерживает самостоятельную настройку для всех трёх типов Redshift:

  • Redshift Managed — выделенные кластеры Redshift (выберите Redshift Managed в интерфейсе).
  • Redshift Managed Serverless — Redshift Serverless (выберите Redshift Managed в интерфейсе, затем выберите Serverless).
  • Redshift интерфейсного типа (выберите Redshift в интерфейсе).

Предварительные требования​

Запрос новой частной конечной точки​

  1. В dbt platform перейдите в Account settings → Private endpoints.

  2. В таблице Private endpoints просмотрите существующие конечные точки. В таблице представлены все частные конечные точки вашего аккаунта (включая те, которые не относятся к Redshift) с такими сведениями, как Name, Connection type, URL, Connectivity status, а также количеством подключений (Connections), использующих конечную точку. Поиск доступен по Name или URL.

  3. Чтобы запросить новую конечную точку, нажмите Request new.

  4. В разделе Provider type выберите вариант, соответствующий типу вашей конечной точки, затем заполните поля для этого типа:

    Выберите Redshift Managed как для выделенных кластеров Redshift, так и для Redshift Serverless.

    1. На шаге Step 1: Choose your deployment type выберите Provisioned или Serverless. Если вы выбрали Serverless и у вас несколько рабочих групп, обязательно предоставьте доступ в разделе Granted accounts для каждой рабочей группы при настройке на стороне AWS. См. раздел Необходима авторизация для каждой рабочей группы.
    2. На шаге Step 2: Enter your cluster details укажите Cluster identifier и Resource owner AWS account ID.
    3. На шаге Step 3: Select your AWS region выберите регион AWS, в котором размещён кластер или рабочая группа Redshift.
    4. Нажмите Submit request.
    Форма запроса конечной точки Redshift Managed с полями типа развёртывания, сведений о кластере и региона AWSФорма запроса конечной точки Redshift Managed с полями типа развёртывания, сведений о кластере и региона AWS
  5. После отправки запрос и его статус появятся в таблице Private endpoints. После одобрения вы получите уведомление.

  6. Перейдите на страницу Connections и выполните действия из раздела Создание подключения в dbt, чтобы настроить PrivateLink. После настройки новая конечная точка появится в разделе Private endpoints → Associated connections.

Распространение изменений DNS

Если проверка подключения завершается ошибкой сразу после настройки, это ожидаемо и не означает, что что-то не так. Распространение изменений DNS может занять несколько минут. Подождите несколько минут и повторите проверку, прежде чем обращаться в службу поддержки.

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

Если запрос конечной точки завершается ошибкой, dbt platform отображает её в баннере на странице сведений о конечной точке вместе с подробностями, которыми можно безопасно делиться за пределами организации. Изучите сообщение, устраните причину (например, убедитесь, что аккаунту AWS dbt предоставлен доступ в разделе Granted accounts кластера), затем нажмите Retry.

Баннер ошибки создания ресурсов на странице сведений о конечной точке Redshift с кнопкой RetryБаннер ошибки создания ресурсов на странице сведений о конечной точке Redshift с кнопкой Retry

Если отображается состояние ошибки без понятных дальнейших действий, соберите сведения о запросе (имя конечной точки, время создания и статус) и обратитесь в службу поддержки dbt.

Настройка с помощью службы поддержки​

Если раздел Private endpoints недоступен в настройках вашего аккаунта, настройте Redshift PrivateLink, выполнив приведённые ниже действия и отправив запрос в службу поддержки dbt.

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

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

      • В работающем кластере Redshift выберите вкладку Properties.
      Вкладка Properties в RedshiftВкладка Properties в Redshift
    • Redshift Serverless

  2. В разделе Granted accounts нажмите Grant access.

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

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

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

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

       Шаблон письма с запросом в службу поддержки
      Subject: New Multi-Tenant PrivateLink Request

      - Type: Redshift-managed
      - dbt platform account URL:
      - Redshift cluster name:
      - Redshift cluster AWS account ID:
      - Redshift cluster AWS Region (for example, us-east-1, eu-west-2):
      - dbt multi-tenant environment (US, EMEA, AU, JP):
    • Redshift Serverless

       Шаблон письма с запросом в службу поддержки
      Subject: New Multi-Tenant PrivateLink Request

      - Type: Redshift-managed - Serverless
      - dbt platform account URL:
      - Redshift workgroup name:
      - Redshift workgroup AWS account ID:
      - Redshift workgroup AWS Region (for example, us-east-1, eu-west-2):
      - dbt multi-tenant environment (US, EMEA, AU, JP):

Необходима авторизация для каждой рабочей группы​

В Redshift Serverless раздел Granted accounts относится к одной рабочей группе. Если в вашей среде несколько рабочих групп, необходимо отдельно предоставить доступ для каждой рабочей группы, которую вы хотите подключить к dbt.

  • Авторизация одной рабочей группы (например, sales) не распространяется на другие рабочие группы (например, finance или product).
  • Повторите шаги с 1 по 4 из раздела Настройка PrivateLink, управляемого Redshift отдельно для каждой рабочей группы.

Это требование действует независимо от того, настраиваете ли вы конечную точку самостоятельно или с помощью службы поддержки.

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

1. Подготовьте ресурсы AWS​

Для создания подключения Interface VPC PrivateLink необходимо создать несколько ресурсов AWS в аккаунте, содержащем кластер Redshift:

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

  • Целевая группа (Target Group) — целевая группа подключается к NLB и указывает, куда направлять запросы. Для целевых групп NLB доступны различные типы целей, но здесь будет использоваться тип IP-адреса.

    • Тип цели (Target Type): IP

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

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

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

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

    • Scheme: Internal
    • IP address type: IPv4
    • Network mapping: выберите VPC, в которой развёртываются сервис конечных точек VPC и NLB, и выберите подсети как минимум из двух зон доступности.
    • Security Groups: у Network Load Balancer (NLB), связанного с сервисом конечных точек VPC, либо не должно быть связанной группы безопасности, либо в этой группе должно быть правило, разрешающее запросы из соответствующих частных CIDR-диапазонов dbt. Обратите внимание: они отличаются от статических публичных IP-адресов, перечисленных на странице dbt Доступ, регионы и IP-адреса. Служба поддержки dbt может предоставить нужные частные CIDR-диапазоны по запросу. При необходимости, пока вы не сможете сузить правило до меньшего CIDR-диапазона, предоставленного dbt, временно добавьте разрешающее правило для 10.0.0.0/8, чтобы обеспечить подключение.
    • Listeners: создайте по одному прослушивателю для каждой целевой группы, сопоставив соответствующий входящий порт с соответствующей целевой группой (подробнее).
  • Сервис конечных точек VPC (VPC Endpoint Service) — свяжите его с только что созданным NLB.

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

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

2. Предоставьте аккаунту AWS dbt доступ к сервису конечных точек VPC​

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

  • Principal: arn:aws:iam::346425330055:role/MTPL_Admin
Ввод ARNВвод ARN

3. Получите имя сервиса конечных точек VPC​

После создания сервиса конечных точек VPC его имя можно найти в консоли AWS: перейдите в VPC → Endpoint Services и выберите соответствующий сервис конечных точек. Скопируйте значение поля имени сервиса и включите его в обращение в службу поддержки dbt.

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

4. Отправьте запрос в службу поддержки dbt​

Добавьте необходимые сведения в шаблон ниже и отправьте запрос в службу поддержки dbt:

 Шаблон письма с запросом в службу поддержки
Subject: New Multi-Tenant PrivateLink Request

- Type: Redshift Interface-type
- dbt platform account URL:
- VPC Endpoint Service Name:
- Redshift cluster AWS Region (for example, us-east-1, eu-west-2):
- dbt AWS multi-tenant environment (US, EMEA, AU, JP):

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

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

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

  1. Перейдите в Account Settings → Projects → Create new project.
  2. В разделе Configure your development environment step выберите Add new connection.
  3. Вы перейдёте на страницу Add new connection. Выберите Redshift.
  4. В разделе Settings выберите PrivateLink Endpoint.
  5. Выберите частную конечную точку из раскрывающегося списка (поле имени хоста/учётной записи заполнится автоматически).
  6. Настройте остальные параметры платформы данных.
  7. Проверьте подключение и сохраните его.

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

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

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

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

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

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

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

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

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

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

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

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

Мониторинг​

Чтобы локализовать проблемы с подключением через PrivateLink из dbt, можно использовать несколько источников данных мониторинга для проверки активности запросов. Чтобы в данных мониторинга что-либо появилось, сначала необходимо отправить запросы к конечной точке. Обратитесь в службу поддержки 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