Bewerken

Delen via


Patroon Offloading van gateway

Azure Application Gateway

Gedeelde of gespecialiseerde servicefunctionaliteit offloaden naar een gatewayproxy. Dit patroon kan het ontwikkelen van toepassingen vereenvoudigen door de functionaliteit voor gedeelde services, zoals het gebruik van SSL-certificaten, vanuit andere onderdelen van de toepassing te verplaatsen naar de gateway.

Context en probleem

Sommige functies worden vaak gebruikt op meerdere services en voor deze functies is configuratie, beheer en onderhoud vereist. Een gedeelde of gespecialiseerde service die wordt geleverd bij elke implementatie van de toepassing zorgt voor extra administratieve overhead en vergroot de kans op implementatiefouten. Updates voor een gedeelde functie moeten worden geïmplementeerd op alle services die van die functie gebruikmaken.

Om beveiligingsaspecten (validatie van tokens, versleuteling en SSL-certificaatbeheer) en andere complexe taken op de juiste manier te verwerken, moeten teamleden over zeer gespecialiseerde vaardigheden beschikken. Een certificaat dat nodig is voor een toepassing moet bijvoorbeeld voor alle instanties van die toepassing worden geconfigureerd en geïmplementeerd. Bij elke nieuwe implementatie moet het certificaat worden beheerd om ervoor te zorgen dat het niet verloopt. Een algemeen certificaat dat op het punt staat te verlopen, moet worden bijgewerkt, getest en geverifieerd op elke implementatie van de toepassing.

Andere algemene services zoals verificatie, autorisatie, registratie, controle of netwerkbeperking zijn wellicht moeilijk te implementeren en beheren als er een groot aantal implementaties is. Het is wellicht beter dit type functionaliteit samen te voegen om overhead en de kans op fouten te verminderen.

Oplossing

Offload sommige functies in een gateway, met name geavanceerde problemen zoals certificaatbeheer, verificatie, SSL-beëindiging, bewaking, protocolomzetting of beperking.

In het volgende diagram ziet u een gateway die binnenkomende SSL-verbindingen beëindigt. Er worden gegevens aangevraagd namens de oorspronkelijke aanvrager van een HTTP-server upstream van de gateway.

Diagram van het offloadingpatroon van de gateway

Dit patroon heeft de volgende voordelen:

  • Eenvoudigere ontwikkeling van services omdat er geen ondersteunende resources, zoals webservercertificaten en configuratie voor beveiligde websites, hoeven te worden gedistribueerd en beheerd. Eenvoudigere configuratie leidt tot eenvoudiger beheer en eenvoudigere schaalbaarheid en maakt ook service-upgrades eenvoudiger.

  • Laat gespecialiseerde teams functies implementeren waarvoor speciale expertise is vereist, zoals voor beveiliging. Hierdoor kan uw kernteam zich richten op de functionaliteit van de toepassing, en deze gespecialiseerde, maar transversale problemen overlaten aan de relevante deskundigen.

  • Enige mate van consistentie in het registreren en controleren van aanvragen en reacties. Zelfs als een service niet correct is ingericht, kan de gateway zodanig worden geconfigureerd dat een minimaal niveau van controle en registratie is gewaarborgd.

Problemen en overwegingen

  • Zorg ervoor dat de gateway maximaal beschikbaar is en bestand is tegen fouten. Vermijd single points of failure door meerdere exemplaren van uw gateway uit te voeren.
  • Zorg dat de gateway geschikt is voor de capaciteits- en schaalvereisten van uw toepassing en eindpunten. Controleer of de gateway geen knelpunt voor de toepassing wordt en voldoende schaalbaar is.
  • Zet alleen functies weg die door de gehele toepassing worden gebruikt, zoals voor beveiliging of gegevensoverdracht.
  • Bedrijfslogica mag nooit worden offload naar de gateway.
  • Als u transacties wilt volgen, zou u correlatie-id's voor registratie kunnen genereren.

Wanneer dit patroon gebruiken

Gebruik dit patroon wanneer:

  • De implementatie van een toepassing een gedeeld probleem zoals met SSL-certificaten of versleuteling heeft.
  • Een functie die gebruikt wordt bij implementaties van toepassingen die wellicht andere resourcevereisten hebben, zoals geheugenbronnen, opslagcapaciteit of netwerkverbindingen.
  • U de verantwoordelijkheid voor problemen zoals netwerkbeveiliging, netwerkbeperking of andere problemen met netwerkgrenzen naar een meer gespecialiseerde team wilt overzetten.

Dit patroon is mogelijk niet geschikt als het leidt tot de koppeling van services.

Workloadontwerp

Een architect moet evalueren hoe het gateway-offloadingpatroon 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. Het offloaden van deze verantwoordelijkheid voor een gateway vermindert de complexiteit van toepassingscode op back-endknooppunten. In sommige gevallen vervangt offloading volledig de functionaliteit door een betrouwbare functie die door het platform wordt geleverd.

- RE:01 Eenvoud en efficiëntie
Beslissingen over beveiligingsontwerpen helpen de vertrouwelijkheid, integriteit en beschikbaarheid van de gegevens en systemen van uw workload te waarborgen. Door een gateway toe te voegen aan de aanvraagstroom, kunt u de beveiligingsfunctionaliteit, zoals firewalls van webtoepassingen en TLS-verbindingen met clients, centraliseren. Elke offloaded functionaliteit die door het platform wordt geleverd, biedt al verbeterde beveiliging.

- SE:06 Netwerkbesturingselementen
- SE:08 Hardening resources
Kostenoptimalisatie is gericht op het ondersteunen en verbeteren van het rendement van uw workload op investering. Met dit patroon kunt u kosten omleiden van resources die per knooppunt worden besteed aan de implementatie van de gateway. Kosten in het gecentraliseerde verwerkingsmodel zijn vaak lager dan die van het gedistribueerde model.

- CO:14 Samenvoeging
Operational Excellence helpt bij het leveren van workloadkwaliteit via gestandaardiseerde processen en teamcohesie. In dit patroon is de configuratie en het onderhoud van de offloaded functionaliteit vanaf één punt in plaats van deze te beheren vanaf meerdere knooppunten.

- OE:04 Hulpprogramma's en processen
Prestatie-efficiëntie helpt uw workload efficiënt te voldoen aan de vereisten door optimalisaties in schalen, gegevens, code. Door een offloading-gateway toe te voegen aan het aanvraagproces, kunt u minder resources per knooppunt gebruiken, omdat de functionaliteit is gecentraliseerd op de gateway. U kunt de implementatie van de offloaded functionaliteit onafhankelijk van de toepassingscode optimaliseren. Offloaded platform-geleverde functionaliteit is waarschijnlijk al zeer goed presterend.

- PE:03 Services selecteren

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

Als u Nginx als SSL-offload-apparaat gebruikt, wordt met de volgende configuratie een inkomende SSL-verbinding beëindigd en wordt de verbinding naar een van drie upstream HTTP-servers doorgestuurd.

upstream iis {
        server  10.3.0.10    max_fails=3    fail_timeout=15s;
        server  10.3.0.20    max_fails=3    fail_timeout=15s;
        server  10.3.0.30    max_fails=3    fail_timeout=15s;
}

server {
        listen 443;
        ssl on;
        ssl_certificate /etc/nginx/ssl/domain.cer;
        ssl_certificate_key /etc/nginx/ssl/domain.key;

        location / {
                set $targ iis;
                proxy_pass http://$targ;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto https;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header Host $host;
        }
}

In Azure kan dit worden bereikt door SSL-beëindiging in te stellen op Application Gateway.