Share via


Hibás átjárókkal kapcsolatos hibák elhárítása az Application Gatewayben

Megtudhatja, hogyan háríthatja el a Azure-alkalmazás Gateway használatakor kapott rossz átjáróhibákat (502).

Megjegyzés:

We recommend that you use the Azure Az PowerShell module to interact with Azure. See Install Azure PowerShell to get started. To learn how to migrate to the Az PowerShell module, see Migrate Azure PowerShell from AzureRM to Az.

Áttekintés

Az application gateway konfigurálása után a következő hibaüzenet jelenhet meg : Kiszolgálóhiba: 502 – A webkiszolgáló érvénytelen választ kapott átjáróként vagy proxykiszolgálóként való működés közben. Ez a hiba a következő fő okok miatt fordulhat elő:

Hálózati biztonsági csoport, felhasználó által megadott útvonal vagy egyéni DNS-probléma

Ok

Ha a háttérrendszerhez való hozzáférés NSG, UDR vagy egyéni DNS miatt le van tiltva, az Application Gateway-példányok nem érik el a háttérkészletet. Ez a probléma mintavételi hibákat okoz, ami 502 hibát eredményez.

Az NSG/UDR az Application Gateway alhálózatában vagy az alkalmazás virtuális gépeinek üzembe helyezését tartalmazó alhálózatban is jelen lehet.

Hasonlóképpen, az egyéni DNS jelenléte a virtuális hálózaton is problémákat okozhat. Előfordulhat, hogy a háttérkészlet tagjai számára használt teljes tartománynév nem oldható fel megfelelően a felhasználó által a virtuális hálózathoz konfigurált DNS-kiszolgáló által.

Megoldás

Ellenőrizze az NSG, az UDR és a DNS konfigurációját az alábbi lépések végrehajtásával:

  1. Ellenőrizze az Application Gateway alhálózatához társított NSG-ket. Győződjön meg arról, hogy a háttérrendszer felé folytatott kommunikáció nincs letiltva. További információ: Hálózati biztonsági csoportok.

  2. Ellenőrizze az Application Gateway alhálózatához társított UDR-t. Győződjön meg arról, hogy az UDR nem a háttérbeli alhálózatról irányítja a forgalmat. Ellenőrizze például, hogy van-e útválasztás a hálózati virtuális berendezésekhez, vagy az Application Gateway alhálózatán meghirdetett alapértelmezett útvonalakat expressRoute-on/VPN-en keresztül.

    $vnet = Get-AzVirtualNetwork -Name vnetName -ResourceGroupName rgName
    Get-AzVirtualNetworkSubnetConfig -Name appGwSubnet -VirtualNetwork $vnet
    
  3. Ellenőrizze a tényleges NSG-t és az útvonalat a háttérbeli virtuális géppel

    Get-AzEffectiveNetworkSecurityGroup -NetworkInterfaceName nic1 -ResourceGroupName testrg
    Get-AzEffectiveRouteTable -NetworkInterfaceName nic1 -ResourceGroupName testrg
    
  4. Ellenőrizze az egyéni DNS jelenlétét a virtuális hálózaton. A DNS a kimenetben lévő virtuális hálózat tulajdonságainak részleteivel ellenőrizhető.

    Get-AzVirtualNetwork -Name vnetName -ResourceGroupName rgName 
    DhcpOptions            : {
                               "DnsServers": [
                                 "x.x.x.x"
                               ]
                             }
    
  5. Ha van ilyen, győződjön meg arról, hogy a DNS-kiszolgáló megfelelően tudja feloldani a háttérkészlettag teljes tartománynevét.

Az alapértelmezett állapotadat-mintavétellel kapcsolatos problémák

Ok

Az 502-ből olyan gyakori hibák is lehetnek, amelyeket az alapértelmezett állapotadat-mintavétel nem tud elérni a háttérbeli virtuális gépekhez.

Az Application Gateway-példány kiépítésekor automatikusan beállít egy alapértelmezett állapotmintát az egyes BackendAddressPool-példányokra a HáttérhttpSetting tulajdonságainak használatával. A mintavétel beállításához nincs szükség felhasználói bemenetre. Pontosabban, ha terheléselosztási szabály van konfigurálva, társítás jön létre a HáttérhttpSetting és a BackendAddressPool között. Mindegyik társításhoz alapértelmezett mintavétel van konfigurálva, és az application gateway rendszeres állapot-ellenőrzési kapcsolatot indít el a BackendAddressPool minden példányával a HáttérhttpSetting elemben megadott porton.

Az alábbi táblázat az alapértelmezett állapotadat-mintavételhez társított értékeket sorolja fel:

Mintavételi tulajdonság Érték Description
Mintavételi URL-cím http://127.0.0.1/ URL-cím elérési útja
Intervallum 30 Mintavételi időköz másodpercben
Időtúllépés 30 Mintavétel időtúllépése másodpercben
Nem kifogástalan állapot küszöbértéke 3 A mintavétel újrapróbálkozásának száma. A háttérkiszolgáló le van jelölve, miután az egymást követő mintavételi hibák száma elérte a kifogástalan állapot küszöbértékét.

Megoldás

  • A kérés állomásértéke 127.0.0.1 lesz. Győződjön meg arról, hogy egy alapértelmezett webhely van konfigurálva, és a 127.0.0.1-nél figyel.
  • A kérés protokollját a BackendHttpSetting protokoll határozza meg.
  • Az URI elérési útja a következőre /lesz állítva: .
  • Ha a BackendHttpSetting a 80-nál eltérő portot ad meg, az alapértelmezett helyet úgy kell konfigurálni, hogy figyelje az adott portot.
  • A hívásnak protocol://127.0.0.1:port egy 200-ból álló HTTP-eredménykódot kell visszaadnia. Ezt a kódot a 30 másodperces időtúllépési időszakon belül kell visszaadni.
  • Győződjön meg arról, hogy a konfigurált port nyitva van, és nincsenek tűzfalszabályok vagy Az Azure hálózati biztonsági csoportok blokkolják a bejövő vagy kimenő forgalmat a konfigurált porton.
  • Ha klasszikus Azure-beli virtuális gépeket vagy felhőszolgáltatást használ teljes tartománynévvel vagy nyilvános IP-címmel, győződjön meg arról, hogy a megfelelő végpont meg van nyitva.
  • Ha a virtuális gép az Azure Resource Manageren keresztül van konfigurálva, és azon a virtuális hálózaton kívül van, ahol az application gateway telepítve van, egy hálózati biztonsági csoportot kell konfigurálni a kívánt porton való hozzáférés engedélyezéséhez.

További információ: Application Gateway-infrastruktúra konfigurációja.

Egyéni állapotadat-mintavétellel kapcsolatos problémák

Ok

Az egyéni állapotminták további rugalmasságot biztosítanak az alapértelmezett szondázási viselkedéshez. Egyéni mintavételek használatakor konfigurálhatja a mintavételi időközt, az URL-címet, a tesztelni kívánt útvonalat és azt, hogy hány sikertelen választ fogadjon el, mielőtt a háttérkészlet-példányt nem kifogástalanként jelöli meg.

A rendszer a következő további tulajdonságokat adja hozzá:

Mintavételi tulajdonság Leírás
Név A mintavétel neve. Ez a név a háttérbeli HTTP-beállításokban található mintavételre hivatkozik.
Protokoll A mintavétel küldéséhez használt protokoll. A mintavétel a háttérbeli HTTP-beállításokban definiált protokollt használja
Gazdagép Állomásnév a mintavétel elküldéséhez. Csak akkor alkalmazható, ha többhelyes konfiguráció van konfigurálva az Application Gatewayen. Ez eltér a virtuálisgép-gazdagép nevétől.
Elérési út A mintavétel relatív elérési útja. Az érvényes elérési út a következőtől kezdődik: "/". A rendszer elküldi a mintavételt a <protokoll>://<host>:<port><elérési útjának>
Intervallum Mintavételi időköz másodpercben. Ez két egymást követő mintavétel közötti időintervallum.
Időtúllépés Mintavétel időtúllépése másodpercben. Ha ebben az időtúllépési időszakban nem érkezik érvényes válasz, a mintavétel sikertelenként van megjelölve.
Nem kifogástalan állapot küszöbértéke A mintavétel újrapróbálkozásának száma. A háttérkiszolgáló le van jelölve, miután az egymást követő mintavételi hibák száma elérte a kifogástalan állapot küszöbértékét.

Megoldás

Ellenőrizze, hogy az egyéni állapotadat-mintavétel megfelelően van-e konfigurálva az előző táblázatban látható módon. Az előző hibaelhárítási lépések mellett az alábbiakat is győződjön meg:

  • Győződjön meg arról, hogy a mintavétel az útmutatónak megfelelően van megadva.
  • Ha az Application Gateway egyetlen helyhez van konfigurálva, alapértelmezés szerint a gazdagép nevét kell megadni 127.0.0.1, kivéve, ha másként van konfigurálva az egyéni mintavételben.
  • Győződjön meg arról, hogy a http://< host>:<port><elérési útjának> hívása egy 200-ból álló HTTP-eredménykódot ad vissza.
  • Győződjön meg arról, hogy az Intervallum, az Időtúllépés és az UnhealtyThreshold érték az elfogadható tartományokon belül van.
  • HTTPS-mintavétel használata esetén győződjön meg arról, hogy a háttérkiszolgáló nem igényel SNI-t egy tartalék tanúsítvány konfigurálásával a háttérkiszolgálón.

Időtúllépés kérése

Ok

Ha felhasználói kérés érkezik, az alkalmazásátjáró alkalmazza a konfigurált szabályokat a kérésre, és átirányítja azt egy háttérkészletpéldányra. A rendszer egy adott ideig vár a háttérpéldány válaszára (ez az időintervallum konfigurálható). Alapértelmezés szerint ez az időköz 20 másodperc. Application Gateway v1 esetében, ha az alkalmazásátjáró ezen intervallumban nem kap választ a háttéralkalmazástól, a felhasználói kérés 502-es hibaüzenetet kap. Az Application Gateway 2-ben, ha az Application Gateway ebben az időszakban nem kap választ a háttéralkalmazástól, a rendszer egy második háttérkészlet-taggal próbálkozik. Ha a második kérés meghiúsul, a felhasználói kérés 504-et kap.

Megoldás

Az Application Gateway lehetővé teszi a beállítás konfigurálását a HáttérhttpSetting használatával, amely ezután alkalmazható a különböző készletekre. A különböző háttérkészletek eltérő HáttérhttpSetting beállítással rendelkezhetnek, és más kérések időtúllépése van konfigurálva.

    New-AzApplicationGatewayBackendHttpSettings -Name 'Setting01' -Port 80 -Protocol Http -CookieBasedAffinity Enabled -RequestTimeout 60

Üres BackendAddressPool

Ok

Ha az Application Gateway nem rendelkezik a háttércímkészletben konfigurált virtuális gépekkel vagy virtuálisgép-méretezési csoportokkal, nem tudja átirányítni az ügyfélkéréseket, és hibás átjáróhibát küld.

Megoldás

Győződjön meg arról, hogy a háttércímkészlet nem üres. Ez a PowerShell, a parancssori felület vagy a portál használatával is elvégezhető.

Get-AzApplicationGateway -Name "SampleGateway" -ResourceGroupName "ExampleResourceGroup"

Az előző parancsmag kimenetének nem megfelelő háttércímkészletet kell tartalmaznia. Az alábbi példa két visszaadott készletet mutat be, amelyek teljes tartománynévvel vagy a háttérbeli virtuális gépek IP-címeivel vannak konfigurálva. A BackendAddressPool kiépítési állapotának sikeresnek kell lennie.

BackendAddressPoolsText:

[{
    "BackendAddresses": [{
        "ipAddress": "10.0.0.10",
        "ipAddress": "10.0.0.11"
    }],
    "BackendIpConfigurations": [],
    "ProvisioningState": "Succeeded",
    "Name": "Pool01",
    "Etag": "W/\"00000000-0000-0000-0000-000000000000\"",
    "Id": "/subscriptions/<subscription id>/resourceGroups/<resource group name>/providers/Microsoft.Network/applicationGateways/<application gateway name>/backendAddressPools/pool01"
}, {
    "BackendAddresses": [{
        "Fqdn": "xyx.cloudapp.net",
        "Fqdn": "abc.cloudapp.net"
    }],
    "BackendIpConfigurations": [],
    "ProvisioningState": "Succeeded",
    "Name": "Pool02",
    "Etag": "W/\"00000000-0000-0000-0000-000000000000\"",
    "Id": "/subscriptions/<subscription id>/resourceGroups/<resource group name>/providers/Microsoft.Network/applicationGateways/<application gateway name>/backendAddressPools/pool02"
}]

Sérült példányok a BackendAddressPoolban

Ok

Ha a BackendAddressPool összes példánya sérült, akkor az Application Gateway nem rendelkezik háttérrendszerrel a felhasználói kérések átirányításához. Ez akkor is előfordulhat, ha a háttérpéldányok kifogástalan állapotban vannak, de nincs telepítve a szükséges alkalmazás.

Megoldás

Győződjön meg arról, hogy a példányok kifogástalan állapotban vannak, és az alkalmazás megfelelően van konfigurálva. Ellenőrizze, hogy a háttérpéldányok válaszolhatnak-e egy pingre egy másik virtuális gépről ugyanabban a virtuális hálózatban. Ha nyilvános végponttal van konfigurálva, győződjön meg arról, hogy a webalkalmazásnak küldött böngészőkérés használható.

A felsőbb rétegbeli SSL-tanúsítvány nem egyezik

Ok

A háttérkiszolgálókra telepített TLS-tanúsítvány nem egyezik a Gazdagép-kérelem fejlécében kapott gazdagépnévmel.

Azokban az esetekben, amikor engedélyezve van a teljes körű TLS, a megfelelő "HáttérBELI HTTP-Gépház" szerkesztésével elérhető konfiguráció, és a "Háttérprotokoll" beállítás konfigurációjának HTTPS-ra történő módosításakor kötelező biztosítani, hogy a háttérkiszolgálókra telepített TLS-tanúsítvány CNAME-neve megegyezzen a HTTP-gazdagép fejléckérelmében a háttérrendszerre érkező gazdagépnévvel.

Emlékeztetőül, a "HáttérBELI HTTP Gépház" protokoll http helyetti engedélyezésének hatása az lesz, hogy az Application Gateway példányai és a háttérkiszolgálók közötti kommunikáció második része TLS-sel lesz titkosítva.

Mivel az Application Gateway alapértelmezés szerint ugyanazt a HTTP-gazdagépfejlécet küldi a háttérrendszernek, mint amelyet az ügyféltől kap, gondoskodnia kell arról, hogy a háttérkiszolgálóra telepített TLS-tanúsítvány olyan CNAME-nel legyen kiállítva, amely megegyezik az adott háttérkiszolgáló által a HTTP-gazdagép fejlécében kapott gazdagépnévvel. Ne feledje, hogy ha másként nincs megadva, ez a gazdagépnév megegyezik az ügyféltől kapott nével.

Például:

Tegyük fel, hogy rendelkezik egy Application Gateway-átjáróval, amely kiszolgálja a https-kérelmeket a tartomány www.contoso.com. A tartományt contoso.com delegálhatja egy Azure DNS nyilvános zónába, és egy DNS-rekordot a zónában, amely www.contoso.com a kéréseket kiszolgálni kívánt Application Gateway nyilvános IP-címére.

Ezen az Application Gatewayen rendelkeznie kell egy figyelővel a gazdagép www.contoso.com egy olyan szabálysal, amely a "háttérbeli HTTP-beállítás" protokoll használatára kényszeríti a HTTPS protokollt (biztosítva a teljes körű TLS-t). Ugyanez a szabály konfigurálhatott volna egy háttérkészletet két, IIS-t webkiszolgálóként futtató virtuális géppel.

Mint tudjuk, a HTTPS engedélyezése a szabály "háttérbeli HTTP-beállításában" a TLS használatára teszi az Application Gateway-példányok és a háttérkiszolgálók közötti kommunikáció második részét.

Ha a háttérkiszolgálók nem rendelkeznek TLS-tanúsítvánnyal a CNAME www.contoso.com vagy a *.contoso.com számára, a kérés a következő kiszolgálóhiba miatt hiúsul meg: 502 – A webkiszolgáló érvénytelen választ kapott átjáróként vagy proxykiszolgálóként való működés közben, mert a felsőbb rétegbeli SSL-tanúsítvány (a háttérkiszolgálókra telepített tanúsítvány) nem egyezik meg a gazdagép fejlécében található állomásnévvel, ezért a TLS-egyeztetés sikertelen lesz.

www.contoso.com --> APP GW előtérbeli IP-címe –> Figyelő olyan szabálysal, amely a HTTP helyett a HTTPS protokoll használatára konfigurálja a "HáttérBELI HTTP-Gépház" protokollt –-> Háttérkészlet -> webkiszolgáló (a www.contoso.com esetében TLS-tanúsítvánnyal kell rendelkeznie)

Megoldás

szükséges, hogy a háttérkiszolgálóra telepített TLS-tanúsítvány CNAME-neve megegyezzen a HTTP-háttérbeállításokban konfigurált gazdagépnévvel, ellenkező esetben az Application Gateway és a háttérrendszer példányai közötti végpontok közötti kommunikáció második része "A felsőbb rétegbeli SSL-tanúsítvány nem egyezik", és kiszolgálóhiba jelenik meg: 502 – A webkiszolgáló érvénytelen választ kapott átjáróként vagy proxykiszolgálóként való működés közben

Következő lépések

Ha az előző lépések nem oldják meg a problémát, nyisson meg egy támogatási jegyet.