Overzicht #
Dit artikel legt uit hoe u een F5 BIG-IP iRule die meerdere applicatie-URI's naar dezelfde backendpool routeert, kunt migreren. RELIANOID gebruikmakend van native HTTP/S-farmservice-matching en reguliere expressie (regex) URI-patronen.
De oorspronkelijke iRule evalueert de binnenkomende URI en stuurt verkeer dat overeenkomt met verschillende applicatiepaden naar dezelfde backendpool.
Originele F5 iRule #
wanneer HTTP_REQUEST { switch -glob [string tolower [HTTP::uri]] { "/firstapp*" { pool "MY_POOL" } "/secondapp*" { pool "MY_POOL" } "/thirdapp" { pool "MY_POOL" } } }
Migratiedoel #
Het doel van deze configuratie is:
- Meerdere toepassingspaden matchen
- Leid al het overeenkomende verkeer naar dezelfde backend-pool.
- Vereenvoudig de logica voor applicatieroutering.
RELIANOID Migratiebenadering #
In RELIANOIDDit kan zonder scripting worden bereikt door gebruik te maken van:
- Eén enkele HTTP/S-service
- URI-patroonmatching
- Reguliere expressies (regex)
- Gedeelde backend-configuratie
Deze aanpak is eenvoudiger, overzichtelijker en gemakkelijker te onderhouden dan meerdere voorwaardelijke iRules.
RELIANOID Configuratie #
Navigeer naar Farms > HTTP/S Farm > Services en creëren een nieuwe dienst.
URI-matchingconfiguratie #
Gebruik in het URL-patroon de volgende reguliere expressie:
^/(eersteapp|tweedeapp|derdeapp)
Backend-configuratie #
Voeg de backend-lijstconfiguratie toe aan de service.
Waarom deze aanpak wordt aanbevolen #
Het gebruik van één enkele service op basis van reguliere expressies biedt de volgende voordelen:
- Schoonere configuratie
- Gemakkelijker onderhoud
- Verminderd aantal diensten
- Betere schaalbaarheid
- Vereenvoudigde probleemoplossing
In plaats van meerdere iRule-voorwaarden te beheren, is de URI-logica gecentraliseerd in één overeenkomende regel.
Validatie #
Testen met CURL. Voorbeeld:
curl -k https://example.com/firstapp -v
Of:
curl -k https://example.com/secondapp/api/test -v
Verwacht resultaat:
- Het verzoek wordt doorgestuurd naar de geconfigureerde backend-pool.
- De applicatie reageert normaal.
Problemen oplossen #
Verzoeken komen niet overeen #
Verifiëren:
- Regex-modus is ingeschakeld
- Het URI-patroon is correct.
- Geen verborgen spaties of ongeldige reguliere expressies.
Slechts enkele applicaties werken #
Controleren:
- Regex bevat alle vereiste applicatienamen.
- URI-hoofdlettergebruik
RELIANOID Reguliere expressies zijn hoofdlettergevoelig, tenzij anders geconfigureerd.
Als er geen onderscheid tussen hoofd- en kleine letters nodig is, gebruik dan:
(?i)^/(eersteapp|tweedeapp|derdeapp)
Verkeer verzonden naar standaardservice #
Dit duidt meestal op:
- Reguliere expressie komt niet overeen
- Probleem met het bestellen van service
- URI-normalisatieverschillen
Andere aanpak #
Hoewel het ook mogelijk is om meerdere services aan te maken, wordt dit over het algemeen afgeraden wanneer:
- Alle applicaties delen dezelfde backend-pool.
- De routeringslogica is identiek.
Een enkele service gebaseerd op reguliere expressies is efficiënter.
Best Practices #
- Groepeer vergelijkbare applicaties waar mogelijk in gedeelde services.
- Gebruik reguliere expressies met zorg om onbedoelde overeenkomsten te voorkomen.
- Houd de logica voor het matchen van URI's gecentraliseerd.
- Documenteer reguliere expressieregels voor operationele zichtbaarheid.
Samenvatting #
F5 iRules die poolselectie op basis van URI's uitvoeren, kunnen worden gemigreerd naar RELIANOID Gebruikmakend van native HTTP/S-servicematching met reguliere expressiepatronen.
Deze aanpak vereenvoudigt de configuratie en behoudt tegelijkertijd hetzelfde routeringsgedrag voor de applicatie.