Обзор #
В этой статье объясняется, как перенести правило iRule для F5 BIG-IP, которое направляет несколько URI приложений в один и тот же пул бэкэндов, в другую систему. RELIANOID с использованием встроенных служб сопоставления HTTP/S и шаблонов URI на основе регулярных выражений (regex).
Исходное правило iRule оценивает входящий URI и направляет трафик, соответствующий нескольким путям приложения, в один и тот же пул бэкэнда.
Оригинальное правило F5 iRule #
when HTTP_REQUEST { switch -glob [string tolower [HTTP::uri]] { "/firstapp*" { pool "MY_POOL" } "/secondapp*" { pool "MY_POOL" } "/thirdapp" { pool "MY_POOL" } } }
Цель миграции #
Цель данной конфигурации:
- Сопоставление нескольких путей приложения
- Направляйте весь соответствующий трафик в один и тот же пул бэкэндов.
- Упростите логику маршрутизации приложений.
RELIANOID Миграционный подход #
In RELIANOIDЭтого можно добиться без использования скриптов, применив следующие методы:
- Один единственный HTTP/S-сервис
- сопоставление шаблонов URI
- Регулярные выражения (regex)
- Общая конфигурация бэкэнда
Этот подход проще, понятнее и легче в обслуживании, чем использование множества условных iRules.
RELIANOID Конфигурация #
Перейдите в Фермы > Ферма HTTP/S > Сервисы и Создавай Новая услуга.
Конфигурация сопоставления URI #
В шаблоне URL используйте регулярное выражение:
^/(первое приложение|второе приложение|третье приложение)
Конфигурация бэкэндов #
Добавьте конфигурацию списка бэкэнда в сервис.
Почему рекомендуется именно этот подход #
Использование единого сервиса на основе регулярных выражений обеспечивает:
- Более чистая конфигурация
- Более легкое обслуживание
- Сокращение количества обслуживаемых услуг
- Лучшая масштабируемость
- Упрощенное устранение неполадок
Вместо управления множеством условий iRule, логика URI централизована в одном правиле соответствия.
Проверка #
Тестирование с помощью CURL. Пример:
локон -k https://example.com/firstapp -v
Или:
локон -k https://example.com/ Secondapp/api/test -v
Ожидаемый результат:
- Запрос перенаправляется в настроенный пул бэкэндов.
- Приложение работает в обычном режиме.
УСТРАНЕНИЕ НЕПОЛАДОК #
Запросы не соответствуют #
Убедитесь, что:
- Режим регулярных выражений включен.
- Шаблон URI правильный.
- Нет скрытых пробелов или некорректного синтаксиса регулярных выражений.
Работают только некоторые приложения. #
Проверьте:
- Регулярное выражение включает все необходимые названия приложений.
- Поведение при написании символов в URI
RELIANOID Сопоставление с помощью регулярных выражений чувствительно к регистру, если не указано иное.
Если требуется сопоставление без учета регистра, используйте:
(?i)^/(первое приложение|второе приложение|третье приложение)
Трафик направляется в службу по умолчанию. #
Обычно это означает:
- Несоответствие регулярных выражений
- Проблема с заказом услуг
- Различия в нормализации URI
Альтернативный подход #
Хотя можно создать и несколько сервисов, это, как правило, не рекомендуется в следующих случаях:
- Все приложения используют один и тот же пул серверной части.
- Логика маршрутизации идентична.
Использование одного сервиса на основе регулярных выражений более эффективно.
Лучшие практики #
- По возможности объединяйте похожие приложения в общие сервисы.
- Используйте регулярные выражения с осторожностью, чтобы избежать непреднамеренных совпадений.
- Сохраните логику сопоставления URI централизованной.
- Документируйте правила регулярных выражений для обеспечения оперативной прозрачности.
Резюме #
Правила F5 iRules, выполняющие выбор пула на основе URI, могут быть перенесены в RELIANOID Использование встроенных служб HTTP/S для сопоставления с помощью регулярных выражений.
Этот подход упрощает настройку, сохраняя при этом эквивалентное поведение маршрутизации приложений.