APISIX обеспечивает сеть для крупного поставщика облачных CDN-услуг

Jing Yan

Jing Yan

January 31, 2023

Case Study

Обзор

О UPYUN

UPYUN, ведущий китайский поставщик облачных услуг для предприятий, специализируется на сценарных решениях CDN (Content Delivery Network). С 10 центрами обработки данных, более чем 1000 внутренних узлов CDN, почти 100 глобальных узлов CDN, 40 000 серверов и 10 ТБ зарезервированной пропускной способности, UPYUN предоставляет безопасные решения для различных сценариев, обрабатывая ежедневный объем запросов, превышающий 150 миллиардов.

Проблемы

  • UPYUN столкнулась с трудностями в управлении трафиком с использованием Kong, который функционировал как её шлюз для публичной сети.

  • В плане ingress-контроллера, Ingress-Nginx представлял проблемы для UPYUN, включая сложные зависимости компонентов, плохую переносимость и слабые семантические возможности, что создавало трудности в обслуживании шлюза.

Результаты

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

  • Используя плагины APISIX, UPYUN успешно реализовала аутентификацию сотрудников и интеграцию с Lark, улучшив функциональность своего шлюза для публичной сети.

  • APISIX улучшил мониторинг и проверку здоровья системы UPYUN, поддерживая Prometheus и SkyWalking.

Предыстория

Особенности бизнеса UPYUN

Шлюзы играют ключевую роль в экосистеме бизнеса UPYUN. Они координируют, оптимизируют и обеспечивают бесперебойную работу различных сервисов, предоставляя UPYUN эффективные, безопасные и стабильные решения. Поэтому UPYUN активно работает над улучшением своей внутренней архитектуры шлюзов.

Сценарии бизнеса UPYUN

Внутри компании UPYUN использует APISIX в качестве шлюза для публичной сети и ingress-контроллера.

  • Шлюз для публичной сети занимается обработкой интернет-трафика, выступая в роли шлюза для внешних сервисов.

  • Ingress-контроллер специализируется на управлении внешним доступом к сервисам внутри кластера Kubernetes, обеспечивая гибкую маршрутизацию и контроль трафика через конфигурацию ресурсов ingress.

Проблемы до использования APISIX

До внедрения APISIX UPYUN использовала Kong в качестве шлюза для публичной сети и Ingress-Nginx в качестве ingress-контроллера. Однако UPYUN быстро столкнулась с рядом проблем.

  • Высокая нагрузка на подключения к базе данных: Подключение к базе данных PostgreSQL в архитектуре Kong в UPYUN может привести к значительному количеству подключений, что может ухудшить производительность базы данных.

  • Сложности в управлении системой подключений: Несмотря на добавление прокси на фронтенде, UPYUN сталкивается с трудностями в эффективном управлении системой подключений во время обновлений или перезапусков системы, что усложняет обслуживание системы.

  • Операционная сложность с Ingress-Nginx: Ingress-Nginx создает трудности для UPYUN в разработке плагинов из-за сложных зависимостей, что затрудняет переносимость и увеличивает сложность разработки и обслуживания. Кроме того, он демонстрирует слабости в семантических возможностях, что влияет на гибкость для сложных бизнес-сценариев. Необходимость перезагрузки при каждом изменении правила ingress добавляет неудобств, особенно для сценариев, зависящих от постоянных подключений.

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

Почему UPYUN выбрала APISIX

Повышенная гибкость благодаря мощной архитектуре плагинов

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

Выдающаяся стабильность

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

Поддержка открытого сообщества

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

Впечатляющая масштабируемость

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

Бесшовная интеграция и упрощенная настройка

UPYUN интегрировала Ingress-Nginx в некоторых кластерах Kubernetes. Ранее, при отсутствии системы плагинов в Ingress-Nginx, они настраивали определенные плагины. С учетом значительного функционального перекрытия между Apache APISIX и NGINX в шлюзах внутренних центров обработки данных и контейнеризованных сред, UPYUN планирует заменить все ранее используемые контейнеризованные шлюзы Ingress-Nginx на Apache APISIX Ingress Controller. Этот шаг направлен на унификацию компонентов на уровне шлюза, что позволит избежать избыточности в будущих разработках и операционных усилиях.

Улучшенная поддержка перезагрузки

APISIX Ingress Controller поддерживает перезагрузку, что значительно повышает операционную эффективность. Эта функция позволяет динамически обновлять конфигурации без прерывания сервиса, обеспечивая быстрое развертывание и гибкие операционные маневры. В результате операционная эффективность значительно повышается, упрощая обслуживание системы для большего удобства и скорости.

Внедрение APISIX

Текущая внутренняя архитектура шлюзов UPYUN представлена на следующей диаграмме. Внешний трафик сначала проходит через Apache APISIX, затем направляется в APISIX Ingress Controller через APISIX и, наконец, достигает серверных служб для последующей обработки бизнес-логики.

Реализация_APISIX

Шлюз для публичной сети

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

Шлюз для публичной сети служит основным входом для внешнего трафика, неся значительную ответственность, которая требует точного контроля и управления каждым входящим потоком в внутренний центр обработки данных. В этом ключевом аспекте APISIX предоставил UPYUN ряд услуг по управлению трафиком благодаря своим мощным функциям.

Прежде всего, шлюз APISIX управляет трафиком, обрабатывая доступ к API с CDN-узлов. Это помогло оптимизировать производительность CDN-узлов и заложило основу для последующего управления трафиком. Кроме того, APISIX успешно обрабатывает трафик, связанный со статическими страницами официального сайта и технической поддержкой, демонстрируя свои универсальные возможности управления трафиком. Такой целенаправленный подход к обработке трафика позволил UPYUN гибко удовлетворять различные требования к доступу, что в конечном итоге повысило общую эффективность системы.

Аутентификация

Плагины играют ключевую роль в UPYUN, особенно в контексте доступа сотрудников к внутренней платформе. В настоящее время сотрудники проходят аутентификацию с использованием таких методов, как электронная почта и Lark. Благодаря мощному плагину openid-connect Apache APISIX, была достигнута бесшовная интеграция с этими платформами, что упростило аутентификацию сотрудников. Это инновационное применение наглядно продемонстрировало мощные возможности плагинов APISIX, предоставив UPYUN эффективное и унифицированное решение для аутентификации при доступе к управляющей платформе.

Интеллектуальная координация и защита

В более специфических сценариях UPYUN использовала плагин openid-connect в сочетании с плагином serverless-post-function для достижения интеллектуальной координации с приложением Feishu. Благодаря совместной работе этих плагинов, соответствующая информация о пользователе, такая как имя пользователя, электронная почта или уникальный идентификатор в Lark, передается на сервер после прохождения через шлюз публичной сети. Как только шлюз получает соответствующую идентификационную информацию, он эффективно перенаправляет её на сервер, что позволяет реализовать такие функции, как уведомления и упоминания в Lark. Примечательно, что в этом процессе плагин consumer-restriction также может накладывать определенные ограничения на права пользователей, повышая общую безопасность и управляемость системы.

Ingress-контроллер

Изменение внутренней архитектуры

После интеграции Apache APISIX Ingress Controller внутренняя архитектура UPYUN теперь выглядит следующим образом.

Внутренняя_архитектура_APISIX

В отличие от ранее упомянутой архитектуры Ingress-Nginx, базовая плоскость данных была заменена на кластер Apache APISIX. Верхнеуровневый контроллер активно отслеживает изменения в API Server, после чего распространяет конфигурационные ресурсы на все узлы кластера Apache APISIX через etcd.

Сравнение_APISIX

Ключевое отличие заключается в способности Apache APISIX к динамическому изменению маршрутов, что отличает его от конфигурации Ingress-Nginx справа. В Apache APISIX весь входящий бизнес-трафик проходит через единое место, а выбор маршрута выполняется с помощью кода на Lua. Это обеспечивает эффективное и легко управляемое развертывание кода. В то же время конфигурационный файл nginx.conf для Ingress-Nginx справа сложен и требует перезагрузки при каждом изменении Ingress.

Динамическая маршрутизация и декларативная конфигурация

Используя возможность динамической маршрутизации Apache APISIX, Apache APISIX Ingress Controller успешно реализовал свои функции. Его основная роль заключается в отслеживании изменений ресурсов в APIServer, выполнении тщательных преобразований структуры данных, проверке и вычислении ключевого DIFF. Заключительный шаг — применение этих изменений к API администрирования Apache APISIX. Кроме того, Apache APISIX Ingress Controller предлагает решение высокой доступности напрямую через механизм лидерства Kubernetes, устраняя необходимость во внешних компонентах.

В плане декларативной конфигурации UPYUN выбрала ресурс CRD, который ценится за свою мощную семантику. Такой структурированный подход к конфигурации данных позволяет реализовать любую возможность, поддерживаемую Apache APISIX.

Ресурс_CRD

Достижения после использования APISIX

Улучшение управления трафиком

Apache APISIX значительно повысил эффективность обработки трафика в UPYUN. Его мощные механизмы резервного копирования и выдающиеся возможности обработки нагрузки обеспечивают стабильность UPYUN, особенно при работе с большими объемами трафика. Благодаря тщательному управлению трафиком APISIX эффективно решает задачи резервного копирования и управления трафиком, предоставляя UPYUN надежную поддержку бизнеса и оптимизируя производительность системы.

Упрощение интеграции и аутентификации

APISIX преуспевает в аутентификации и интеграции плагинов. Используя плагин openid-connect, APISIX эффективно поддерживает различные методы аутентификации, предоставляя UPYUN эффективное решение для аутентификации. Совместная функциональность плагинов, таких как serverless-post-function и consumer-restriction, облегчает интеллектуальную передачу данных и надежный контроль доступа, значительно повышая общие возможности интеграции системы.

Повышение эффективности обработки логов

В плане обработки логов UPYUN внедрила несколько кластеров Apache APISIX внутри компании, обеспечивая единообразное использование в шлюзах центров обработки данных и контейнеризованных шлюзах. Это создает стандартизированную логику для последующей обработки и потребления логов. Особенно стоит отметить мощные функции плагина для логов в Apache APISIX. Внутри UPYUN был выбран плагин Kafka-Logger, который поддерживает пользовательские форматы логов.

Логи_APISIX

Оптимизация мониторинга и проверки здоровья

Что касается мониторинга, UPYUN использует такие инструменты, как Prometheus и SkyWalking, причем Prometheus является предпочтительным вариантом. Функционируя как базовый прокси, Apache APISIX может отслеживать коды состояния приложений и запросы.

Итог

Как ведущий игрок в секторе облачных услуг CDN, UPYUN интегрировала Apache APISIX в свою инфраструктуру, особенно в шлюз для публичной сети и ingress-контроллер. Мощная система плагинов и выдающиеся возможности управления трафиком APISIX сыграли важную роль в значительном повышении качества и эффективности операций для UPYUN.

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

Tags: