Уроки построения платформы больших данных Cisco с Apache Dolphinscheduler и AWS

Уроки построения платформы больших данных Cisco с Apache Dolphinscheduler и AWS

7 августа 2025 г.

Введение

Я инженер по разработке программного обеспечения в Cisco. Наша команда использует Apache Dolphinscheduler для создания нашей собственной платформы планирования больших данных в течение почти трех лет. Начиная с версии 2.0.3, мы выросли вместе с сообществом; То, что я делюсь сегодня, основано на вторичной разработке на версии 3.1.1, добавляя функции, не включенные в выпуск сообщества.

Сегодня я поделюсь тем, как мы использовали Apache Dolphinscheduler для создания платформы больших данных, представить и развернуть наши работы в AWS, проблемы, с которыми мы столкнулись, и наши решения.

Дизайн и настройки архитектуры

Первоначально все наши услуги были развернуты на Kubernetes (K8S), включая API, оповещение, а также Zookeeper (ZK), мастер и рабочие компоненты.

Работа по обработке больших данных

Мы выполнили вторичную разработку для задач Spark, ETL и Flink:

  • ETL -задачи: Наша команда разработала простой инструмент Drag -и Drop, позволяющий пользователям быстро генерировать задания ETL.
  • Spark Support: Ранние версии поддерживали только искру на пряже. Мы расширили его, чтобы поддержать Spark на K8s. Последний релиз сообщества теперь поддерживает Spark на K8S.
  • Flink второстепенное развитиеТочно так же мы добавили поддержку потоковых задач Flink-on-K8S, а также задачи SQL и Python на K8S.

Поддержка рабочих мест на AWS

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

Наша нынешняя архитектура включает в себя централизованный терминал управления, то есть один сервис Apache Dolphinscheduler, которая управляет несколькими кластерами. Эти кластеры развернуты в различных географиях, таких как ЕС и США, для соответствия локальной политике данных и потребностям в изоляции.

Корректировки архитектуры

Чтобы удовлетворить это требование, мы внесли следующие изменения:

  • Поддерживать централизованное управление службой Dolphinscheduler Apache: Наша служба Dolphinscheduler остается развернутой в самостоятельно созданном центре обработки данных Webex Cisco (DC), обеспечивая централизацию и согласованность управления.
  • Поддержка кластеров AWS EKS: Мы расширили архитектуру, чтобы поддержать несколько кластеров AWS EKS. Это позволяет задачам работать на кластерах EKS для новых потребностей бизнеса, не влияя на операции или изоляцию данных в других кластерах Webex DC.

Этот дизайн обеспечивает гибкий ответ на различные потребности бизнеса и технические проблемы, обеспечивая при этом изоляцию данных и соответствие политике.

Далее я расскажу о технической реализации и зависимости от ресурсов, когда Apache Dolphinscheduler запускает задания в Cisco Webex DC.

Зависимости от ресурсов и хранение

Поскольку все наши работы работают на Kubernetes (K8s), для нас решают следующее:

Docker Images

  • Место хранения: Ранее все изображения Docker хранились в частном репозитории Docker от Cisco.
  • Управление изображением: Эти изображения предоставляют необходимые среды выполнения и зависимости для наших различных услуг и рабочих мест.

Файлы и зависимости ресурсов

  • Банки и файлы конфигурации: Мы используем ведра Amazon S3 в качестве центрального магазина для банок пользователей и других файлов конфигурации зависимостей.
  • Безопасное управление ресурсами: Конфиденциальная информация, в том числе пароли базы данных, учетные данные Kafka и ключи, связанные с пользователем, хранятся в службе Cisco's Vault.

Безопасный доступ и управление разрешениями

Для доступа к ведрах S3 нам нужно было настроить и управлять учетными данными AWS:

IAM Configuration

  • Управление полномочиями: Мы используем учетные записи IAM для контроля доступа к ресурсам AWS, включая ключи доступа и секретные ключи.
  • Интеграция K8S: Эти учетные данные хранятся в секретах Kubernetes и ссылаются службой API для безопасного доступа S3.
  • Управление разрешением и изоляция ресурсов: Через IAM мы обеспечиваем мелкозернистый контроль разрешений, обеспечивая безопасность данных и соответствие бизнеса.

AWS IAM Access Key Ecopment и смягчение

Во время доступа к ресурсам AWS через учетные записи IAM мы столкнулись с вопросами истечения срока действия ключа доступа. Вот как мы это обратились:

Доступ к ключе вызов истечения срока действия

  • Ключевой жизненный цикл: AWS IAM Keys обычно истекает каждые 90 дней по соображениям безопасности.
  • Влияние задачи: Как только срок действия ключа истекает, любая задача, которая зависит от этого ключа для доступа к ресурсам AWS, не работает. Запрашивающее обновление ключа необходимо для обеспечения непрерывности бизнеса.

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

Поддержка AWS EKS

Поскольку бизнес расширился до AWS EKS, мы внесли несколько корректировок в архитектуру и безопасность.

Например, изображения Docker, ранее хранящиеся в частном репо Cisco, теперь должны быть отправлены в AWS ECR.

Поддержка нескольких ведра S3

Из -за распределенных кластеров AWS и необходимости изоляции бизнес -данных нам нужно было поддерживать несколько ведра S3:

  • Картирование кластеров с ведрами: Каждый кластер обращается к своему соответствующему ведро S3, чтобы обеспечить местоположение и соответствие данных.
  • Обновления политики: Мы адаптировали логику доступа к хранилищам, чтобы поддержать чтение и запись в несколько ведер S3. Деловые подразделения получают доступ только к своему назначенному ведро.

Миграция инструмента управления секретами

Чтобы повысить безопасность, мы мигрировали из внутреннего хранилища Cisco на менеджер Secrets AWS (ASM):

  • Использование ASM: Предоставляет более интегрированное решение для управления секретами ресурсов AWS.

Мы приняли модель учетной записи IAM + для повышения безопасности POD:

  • Создать роль и политику IAM: Назначить минимальные необходимые разрешения.
  • Привязать к учетной записи службы Kubernetes: Ссылка Kubernetes Service Account на роль IAM.
  • Интеграция разрешений POD: POD принимают роль IAM через Сервисную учетную запись для надежного доступа к ресурсам AWS.

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

Оптимизация управления ресурсами и потока хранения

Чтобы упростить развертывание, мы планируем натолкнуть изображения Docker напрямую в ECR, а не через промежуточные переводы:

  • Прямой толчок: Модифицируйте процессы сборки, чтобы изображения Docker были напрямую на пост -строительство ECR, снижая задержку и точки отказа.

Изменения в реализации

  • Обновления на уровне кода: Мы внесли изменения в Dolphinscheduler, чтобы поддержать нескольких клиентов S3 и управлять их кэшированием.
  • Обновления пользовательского интерфейса для управления ресурсами: Теперь пользователи могут выбирать различные имена ведра AWS в интерфейсе.
  • Поддержка доступа к ресурсам: Модифицированная служба Dolphinscheduler теперь может получить доступ к нескольким ведрах S3, что позволяет гибкому управлению данными между кластерами AWS.

Управление ресурсами AWS и изоляция доступа

Интеграция менеджера AWS Secrets (ASM)

Мы расширили Dolphinscheduler на поддержку Manager AWS Secrets, позволяя пользователям выбирать секреты на основе типа кластера:

Функции интеграции ASM

  • Улучшения пользовательского интерфейса: В пользовательском интерфейсе Dolphinscheduler мы добавили параметры отображения и выбора секретного типа.
  • Автоматическая обработка ключей: Во время выполнения путь файла Select Secret сопоставлен с переменными среды POD для безопасного использования.

Динамическая конфигурация ресурсов и контейнеры инициации

Чтобы гибко управлять и инициализировать ресурсы AWS, мы развернули контейнер init:

  • Ресурс: Перед выполнением POD контейнер init извлекает настроенные ресурсы S3 и помещает их в указанный каталог.
  • Обработка ключей и конфигурации: Он тянет секреты ASM, хранит их в виде файлов и отображает их с помощью переменных среды для использования POD.

Использование Terraform для обеспечения ресурсов

Мы автоматизировали настройку ресурсов AWS с использованием Terraform, упрощение распределения ресурсов и конфигурации разрешений:

  • Автоматическая настройка инфраструктуры: Terraform Provisions S3, ECR Repos и т. Д.
  • IAM политики и автоматизация роли: Генерируйте свои роли и политику в соответствии с бизнес -единицей, чтобы обеспечить наименьший доступ к привилегиям.

Доступ к изоляции и безопасности

Мы навязывали мелкозернистое разрешение и изоляцию ресурсов в бизнес-единицах:

Детали реализации

  • Создание и привязка сервисной учетной записи: Каждая бизнес -подразделение получает собственную услугу, связанную с роли IAM.
  • Изоляция пространства имен: Задача ограничена для работы в рамках их назначенных имен-пространств и ресурсов, поддерживаемых IAM.

Усовершенствования поддержки кластера и контроля разрешений

Расширение типов кластеров

Мы добавилиcluster typeПоле для поддержки различных стилей кластеров K8S - не просто Webex DC и AWS EKS, но и кластеры высокой безопасности:

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

  • Поле типа кластера: Обеспечивает легкое управление и расширение поддержки кластера.
  • Настройка кода: Конкретные адаптации гарантируют, что задания удовлетворяют потребности конфигурации и безопасности при работе в отдельных кластерах.

Усовершенствованная система управления разрешением (AUTH)

Мы разработали систему AUTH для мелкозернистого контроля разрешений между проектами, ресурсами и пространствами имен:

Функции управления разрешением

  • Доступ к проекту и ресурсам: Разрешения на уровне проекта предоставляют доступ ко всем ресурсам внизу.
  • Контроль доступа к именам: Команды могут запускать только задания в рамках их назначенного пространства имен, предотвращая доступ между командой.

Например, команда A может работать только в пространстве имен и не может запускать задания в пространстве имен B.

Запросы на доступ к ресурсам и разрешение AWS

Через систему AUTH и связанные с ними инструменты мы управляем безопасным доступом к ресурсам и разрешениям AWS:

  • Многочисленная поддержка: Управляйте различными учетными записями AWS и связывайте с ними различные ресурсы (S3, ECR, ASM).
  • Запросы на картирование ресурсов и разрешение: Пользователи могут запросить ресурсы доступа или карты через систему, делая беспрепятственный выбор ресурсов в течение работы.

Управление счетом услуг и обязательство разрешений

Чтобы улучшить управление счетом услуг и привязку к доступу, мы реализовали:

Особенности привязки сервисной учетной записи

  • Уникальная идентификация: Счета обслуживания уникально связаны с кластером, пространством имен и проектом.
  • Привязка на основе пользовательского интерфейса: Пользователи могут связывать учетные записи с ресурсами AWS (S3, ASM, ECR) через пользовательский интерфейс для точного контроля доступа.

Упрощенные операции и синхронизация ресурсов

Хотя вышеперечисленное звучит обширно, пользовательские операции на самом деле довольно просты и единороды. Для дальнейшего улучшения пользовательского опыта работы Dolphinscheduler в AWS:

Вот краткое изложение:

Упрощенный пользовательский пользовательский интерфейс

В Dolphinscheduler Пользователи могут легко настроить целевой кластер Jobs и пространство имен:

Выбор кластера и пространства имен

  • Кластерный выбор: Пользователи могут выбрать кластер, где будет работать задание.
  • Спецификация пространства имен: На основании выбранного кластера пользователи выбирают соответствующее пространство имен.

Учетная запись службы и выбор ресурсов

  • Отображение учетной записи службы: На основании проекта, кластера и пространства имен, пользовательский интерфейс автоматически выбирает соответствующую учетную запись службы.
  • Конфигурация доступа к ресурсам: Пользователи выбирают связанные ковши S3, адреса ECR и секреты ASM через выпадающие меню.

Будущий перспективы

Глядя на наш текущий дизайн, есть еще области для оптимизации для улучшения потока и операций пользователя:

  • Оптимизация толчки изображения: Пропустите промежуточную упаковку Cisco и нажимайте изображения непосредственно к ECR, особенно для EKS-специфических изображений.
  • Особенность синхронизации одного щелчка: Позволяйте пользователям автоматически синхронизировать пакет ресурсов, загруженный в одно ведро S3, до нескольких ведер, уменьшая избыточные загрузки.
  • Автоматическое картирование в систему AUTH: После того, как Terraform создает ресурсы AWS, система автоматически отображает их в систему управления разрешениями, удаляя ручной ввод ресурсов.
  • Улучшение контроля разрешения: Благодаря автоматическому управлению ресурсами и разрешениями операции пользователей станут проще и менее ошибочными.

Благодаря этим усовершенствованиям мы стремимся помочь пользователям более эффективно развернуть и управлять своей работой в Dolphinscheduler - независимо от того, в Webex DC или на EKS - при повышении эффективности управления ресурсами и безопасности.


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE