Patroon Routering van gateway

Azure Application Gateway

Routeer aanvragen naar meerdere services of meerdere service-exemplaren met één eindpunt. Het patroon is handig als u het volgende wilt doen:

  • Meerdere services beschikbaar maken op één eindpunt en naar de juiste service routeren op basis van de aanvraag
  • Meerdere exemplaren van dezelfde service beschikbaar maken op één eindpunt voor taakverdeling of beschikbaarheid
  • Verschillende versies van dezelfde service beschikbaar maken op één eindpunt en verkeer routeren over de verschillende versies

Context en probleem

Wanneer een client meerdere services, meerdere service-exemplaren of een combinatie van beide moet gebruiken, moet de client worden bijgewerkt wanneer services worden toegevoegd of verwijderd. Houd rekening met de volgende scenario's.

  • Meerdere verschillende services : een e-commercetoepassing kan services bieden, zoals zoeken, beoordelingen, winkelwagen, uitchecken en bestelgeschiedenis. Elke service heeft een andere API waarmee de client moet communiceren en de client moet elk eindpunt kennen om verbinding met de services te kunnen maken. Als een API wordt gewijzigd, moet ook de client worden bijgewerkt. Als u een service in twee of meer afzonderlijke services opsplitst, moet de code in zowel de service als de client veranderen.
  • Meerdere exemplaren van dezelfde service : het systeem kan vereisen dat meerdere exemplaren van dezelfde service in dezelfde of verschillende regio's worden uitgevoerd. Het uitvoeren van meerdere exemplaren kan worden uitgevoerd voor taakverdelingsdoeleinden of om te voldoen aan beschikbaarheidsvereisten. Telkens wanneer een exemplaar omhoog of omlaag wordt gesponnen om aan de vraag te voldoen, moet de client worden bijgewerkt.
  • Meerdere versies van dezelfde service : als onderdeel van de implementatiestrategie kunnen nieuwe versies van een service naast bestaande versies worden geïmplementeerd. Dit wordt blauwgroene implementaties genoemd. In deze scenario's moet de client telkens worden bijgewerkt wanneer er wijzigingen zijn in het percentage verkeer dat wordt gerouteerd naar de nieuwe versie en het bestaande eindpunt.

Oplossing

Plaats een gateway vóór een reeks toepassingen, services of implementaties. Gebruik toepassingslaag 7-routering om de aanvraag naar de juiste exemplaren te routeren.

Met dit patroon hoeft de clienttoepassing alleen te weten te komen over één eindpunt en te communiceren met één eindpunt. Hieronder ziet u hoe het routeringspatroon van de gateway de drie scenario's aanpakt die worden beschreven in de context- en probleemsectie.

Meerdere verschillende services

Diagram van de gateway die voor een zoekservice staat, een kassaservice, een bestelgeschiedenisservice, een winkelwagenservice en een beoordelingsservice.

Het routeringspatroon van de gateway is handig in dit scenario waarbij een client meerdere services gebruikt. Als een service is geconsolideerd, opgesplitst of vervangen, hoeft de client niet per se bij te werken. De service kan aanvragen blijven indienen bij de gateway, waarbij alleen de routering verandert.

Met een gateway kunt u ook back-endservices scheiden van de clients, zodat u clientaanroepen eenvoudig kunt houden terwijl u wijzigingen in de back-endservices achter de gateway mogelijk maakt. Clientaanroepen kunnen worden doorgestuurd naar een service of services die het verwachte clientgedrag moeten afhandelen, zodat u services achter de gateway kunt toevoegen, opsplitsen en ordenen zonder de client te wijzigen.

Meerdere exemplaren van dezelfde service

Diagram van de gateway die voor een zoekservice in regio 1 en een zoekservice in regio 2 staat.

Elasticiteit is essentieel voor cloud-computing. Services kunnen worden gesponnen om te voldoen aan de toenemende vraag of af te spunen wanneer de vraag laag is om geld te besparen. De complexiteit van het registreren en ongedaan maken van de registratie van service-exemplaren wordt ingekapseld in de gateway. De client is niet op de hoogte van een toename of afname van het aantal services.

Service-exemplaren kunnen in één of meerdere regio's worden geïmplementeerd. In het geode-patroon wordt beschreven hoe een implementatie met meerdere regio's, actief-actief, de latentie kan verbeteren en de beschikbaarheid van een service kan verhogen.

Meerdere versies van dezelfde service

Diagram van de gateway die voor een zoekserviceversie 1 en een zoekserviceversie 1.1 staat.

Dit patroon kan worden gebruikt voor implementaties, doordat u kunt beheren hoe updates worden geïmplementeerd voor gebruikers. Wanneer er een nieuwe versie van uw service wordt geïmplementeerd, kan dat parallel met de bestaande versie gebeuren. Met routering kunt u bepalen welke versie van de service aan de clients wordt gepresenteerd, zodat u de flexibiliteit hebt om verschillende releasestrategieën te gebruiken, ongeacht of er incrementele, parallelle of volledige implementaties van updates worden uitgevoerd. Eventuele problemen die worden vastgesteld nadat de nieuwe service is geïmplementeerd, kunnen snel worden verholpen door een configuratiewijziging in de gateway aan te brengen, zonder dat dit van invloed is op de clients.

Problemen en overwegingen

  • De gatewayservice kan een single point of failure veroorzaken. Zorg ervoor dat deze goed is ontworpen om te voldoen aan uw beschikbaarheidsvereisten. Overweeg tolerantie- en fouttolerantiemogelijkheden in de implementatie.
  • De gatewayservice kan een knelpunt veroorzaken. Zorg ervoor dat de gateway voldoende capaciteit heeft om de belasting aan te kunnen en eenvoudig kan worden geschaald op basis van uw groeiverwachtingen.
  • Voer belastingtests uit op de gateway zodat er geen trapsgewijze fouten voor services optreden.
  • Gateway-routering is van niveau 7. De routering kan worden gebaseerd op IP, poort, header of URL.
  • Gatewayservices kunnen globaal of regionaal zijn. Azure Front Door is een globale gateway, terwijl Azure-toepassing Gateway regionaal is. Gebruik een globale gateway als uw oplossing implementaties voor meerdere regio's van services vereist. Overweeg om Application Gateway te gebruiken als u een regionale workload hebt waarvoor gedetailleerde controle nodig is over hoe verkeer wordt verdeeld. U wilt bijvoorbeeld verkeer verdelen tussen virtuele machines.
  • De gatewayservice is het openbare eindpunt voor services die voor deze service worden gebruikt. Overweeg de toegang tot het openbare netwerk tot de back-endservices te beperken door de services alleen toegankelijk te maken via de gateway of via een particulier virtueel netwerk.

Wanneer dit patroon gebruiken

Gebruik dit patroon wanneer:

  • Een client meerdere services moet gebruiken die kunnen worden benaderd achter een gateway.
  • U wilt clienttoepassingen vereenvoudigen met behulp van één eindpunt.
  • U aanvragen van extern adresseerbare eindpunten wilt doorsturen naar interne virtuele eindpunten, zoals poorten op een VM voor het clusteren van virtuele IP-adressen.
  • Een client moet services gebruiken die in meerdere regio's worden uitgevoerd voor latentie- of beschikbaarheidsvoordelen.
  • Een client moet een variabel aantal service-exemplaren gebruiken.
  • U wilt een implementatiestrategie implementeren waarbij clients tegelijkertijd toegang hebben tot meerdere versies van de service.

Dit patroon is mogelijk niet geschikt wanneer u een eenvoudige toepassing hebt die gebruikmaakt van slechts één of twee services.

Workloadontwerp

Een architect moet evalueren hoe het gatewayrouteringspatroon kan worden gebruikt in het ontwerp van hun workload om de doelstellingen en principes te verhelpen die worden behandeld in de pijlers van het Azure Well-Architected Framework. Voorbeeld:

Pijler Hoe dit patroon ondersteuning biedt voor pijlerdoelen
Beslissingen over betrouwbaarheidsontwerp helpen uw workload bestand te worden tegen storingen en ervoor te zorgen dat deze herstelt naar een volledig functionerende status nadat er een fout is opgetreden. Met gatewayroutering kunt u verkeer routeren naar alleen gezonde knooppunten in uw systeem.

- RE:05 Redundantie
- RE:10 Statuscontrole
Operational Excellence helpt bij het leveren van workloadkwaliteit via gestandaardiseerde processen en teamcohesie. Met gatewayroutering kunt u aanvragen loskoppelen van back-ends, waardoor uw back-ends op hun beurt geavanceerde implementatiemodellen, platformovergangen en één beheerpunt voor domeinnaamomzetting en -versleuteling tijdens overdracht kunnen ondersteunen.

- OE:04 Hulpprogramma's en processen
- Veilige implementatieprocedures voor OE:11
Prestatie-efficiëntie helpt uw workload efficiënt te voldoen aan de vereisten door optimalisaties in schalen, gegevens, code. Met gatewayroutering kunt u verkeer verdelen over knooppunten in uw systeem om de belasting te verdelen.

- PE:05 Schalen en partitioneren

Net als bij elke ontwerpbeslissing moet u rekening houden met eventuele compromissen ten opzichte van de doelstellingen van de andere pijlers die met dit patroon kunnen worden geïntroduceerd.

Opmerking

Met Nginx als router ziet u hieronder een eenvoudig voorbeeld van een configuratiebestand voor een server die aanvragen voor toepassingen die zich op verschillende virtuele mappen bevinden, doorstuurt naar andere computers op de back-end.

server {
    listen 80;
    server_name domain.com;

    location /app1 {
        proxy_pass http://10.0.3.10:80;
    }

    location /app2 {
        proxy_pass http://10.0.3.20:80;
    }

    location /app3 {
        proxy_pass http://10.0.3.30:80;
    }
}

De volgende Azure-services kunnen worden gebruikt om het routeringspatroon van de gateway te implementeren: