Ко всем новостям

SynGX vs Nginx

Новости
27.09.2024

Platform V SynGX – высокопроизводительный и безопасный сервер для балансировки нагрузки и маршрутизации запросов к веб-ресурсам, критически важным для бизнеса. 

Продукт разработан командой Synapse СберТеха на кодовой базе самого популярного обратного прокси-сервера Nginx. При этом в Platform V SynGX реализована дополнительная функциональность, которая повышает производительность прокси-сервера, упрощает его мониторинг и настройку, а также позволяет добавить собственную логику обработки запросов на языках Lua и JS.

Решение используется в Сбере и обеспечивает доступность критически важных объектов инфраструктуры — сайта sberbank.ru, СберБанк Онлайн и других бизнес-приложений банка. В настоящий момент развернуто более 4000 серверов с Platform V SynGX в 300 автоматизированных системах Сбера. При этом используются разные протоколы: HTTPS, TCP, UDP, websocket, и конфигурации – профиль нагрузки и количество используемых серверов каждой автоматизированной системы сильно отличается друг от друга.

В этой статье подробно расскажем про отличия Platform V SynGX от open source версий Nginx и OpenResty, а также от коммерческой версии Nginx Plus, ориентированных на работу с высоконагруженными сценариями.

В чем особенность SynGX

SynGX собирается на базе стабильной open source версии Nginx и содержит всю функциональность этого продукта. Это означает, что все директивы и возможности, которые есть в соответствующей версии Nginx, будут также доступны и в SynGX. Текущая версия SynGX собрана на базе Nginx версии 1.24, и обновление происходит ежегодно.

Все отличия SynGX от open source версии Nginx можно разделить на три множества.

В первое множество входят доработки как в виде патчей к open source версии, так и в виде собственных разработанных модулей. Функциональность во многом схожа с тем, что есть в коммерческой версии Nginx Plus или Angie, и включает в себя, например, улучшенные метрики производительности, автоматическое разрешение доменных имен узлов в группах балансировки, активные проверки работоспособности узлов в группах балансировки и многое другое.

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

Третье множество можно назвать технически организационным. SynGX включает собственные доработки СберТеха и набор сторонних модулей, которые проверены на отсутствие уязвимостей — именно в такой конфигурации обеспечивается его поддержка и реализация новой функциональности.

Как SynGX соотносится с OpenResty

OpenResty — это многофункциональная веб-платформа, построенная на базе Nginx и расширяющая его возможности за счет использования языка программирования Lua. Кроме ядра в виде Nginx, OpenResty включает в себя собственную сборку LuaJit как среду исполнения Lua-кода, большое количество различных модулей Nginx, множество библиотек Lua-кода, а также набор C-библиотек, чтобы обеспечить разработчикам максимум возможностей для обработки сетевых запросов.

SynGX содержит в своем составе:

  • LuaJit, аналогичный LuaJit от OpenResty;
  • большинство основных модулей для работы с Lua из OpenResty;
  • основные библиотеки Lua-кода, входящие в OpenResty;
  • основные C-библиотеки, входящие в состав OpenResty.

Благодаря этому возможна миграция проектов, использующих OpenResty, на SynGX без потери функциональности и без необходимости изменения конфигурации или Lua-кода.

Как SynGX соотносится с Nginx Plus

SynGX содержит часть наиболее востребованной функциональности Nginx Plus, которая отсутствует в open source версии Nginx. К ней в первую очередь относятся:

  • функциональность активной проверки работоспособности (Active Health Check) для секций HTTP и stream;
  • расширенные метрики работоспособности;
  • «липкие» сессии;
  • функциональность периодического автоматического разрешения доменных имен узлов в группах балансировки.

Как SynGX расширяет и улучшает возможности Nginx

Open source Nginx и OpenResty — надежные, многофункциональные и высокопроизводительные продукты. Они закрывают большинство задач, которые возникают у разработчиков или администраторов. Однако реализация определенных функций требует написания сложной конфигурации или дополнительных скриптов. Пример — метрики в формате Prometheus по количеству HTTP-запросов в разрезе статусов кодов ответов. Подобные метрики собирают множеством разных способов. Например, можно самостоятельно написать скрипты для анализа access log и сбора нужной статистики по нему, а затем реализовать микросервис, который будет выдавать метрики в ответ на HTTP-запрос. Для этих же целей можно взять какое-либо open source решение, например. Однако то же самое в SynGX можно реализовать с помощью нескольких дополнительных директив в основной конфигурации.

Функциональность SynGX доработана так, чтобы ускорить и упростить решение типичных задач при работе с веб- и прокси-серверами в условиях повышенной нагрузки и высоких требований к надежности и скорости отклика системы. Быстро определить наличие проблем у клиента помогают не только дополнительные метрики, но и функции активной проверки работоспособности. Они позволяют перенаправлять запросы только на живые узлы, к функциональности «липких» сессий и автоматического разрешения доменных имен узлов в группах балансировки.

Как SynGX может использоваться вместе с Kubernetes

Контейнеры с SynGX подходят для раздачи статического контента.

SynGX может использоваться в качестве прокси-сервера перед сервисами, развернутыми в кластере Kubernetes, и решать следующие задачи:

  • проверять TLS-сертификаты и выполнять функцию TLS Passthrough;
  • ограничивать количество обращений к сервису в единицу времени и фильтровать нежелательные запросы;
  • распределять нагрузку между узлами кластера.

SynGX может использоваться в качестве балансировщика перед несколькими кластерами Kubernetes, например, развернутыми в разных ЦОДах, и решать задачи:

  • распределять нагрузку между кластерами Kubernetes;
  •  перенаправлять все запросы на один кластер, если необходимо вывести один или несколько других кластеров из балансировки на время выполнения регламентных работ.

Как SynGX импортозамещает Nginx, Nginx Plus и OpenResty

SynGX зарегистрирован в Российском реестре ПО, поэтому может выступать в качестве альтернативы open source версий Nginx и OpenResty и коммерческой версии Nginx Plus в тех автоматизированных системах и сервисах, в которых требуется использование отечественного ПО и поддержка со стороны российской компании-разработчика.