Řešení chyb Chybná brána ve službě Application Gateway

Zjistěte, jak řešit chyby chybná brána (502) při používání Azure Application Gateway.

Poznámka

Pokud chcete pracovat s Azure, doporučuje se modul Azure Az PowerShell. Pokud chcete začít, přečtěte si téma Instalace Azure PowerShell. Informace o tom, jak migrovat na modul Az PowerShell, najdete v tématu Migrace Azure PowerShellu z AzureRM na Az.

Přehled

Po nakonfigurování aplikační brány došlo k jedné z chyb, které se můžou zobrazit, je Chyba serveru: 502 – Webový server obdržel neplatnou odpověď, když funguje jako brána nebo proxy server. K této chybě může dojít z následujících hlavních důvodů:

Problém se skupinou zabezpečení sítě, trasou definovanou uživatelem nebo vlastním DNS

Příčina

Pokud je přístup k back-endu zablokovaný kvůli skupině zabezpečení sítě, trasy definované uživatelem nebo vlastnímu DNS, instance služby Application Gateway se nemůžou dostat do back-endového fondu. Tento problém způsobuje selhání sondy, což vede k chybám 502.

Skupina zabezpečení sítě nebo trasy definovaná uživatelem může být přítomna buď v podsíti služby Application Gateway, nebo v podsíti, ve které jsou nasazené virtuální počítače aplikace.

Podobně může přítomnost vlastního DNS ve virtuální síti způsobit také problémy. Plně kvalifikovaný název domény používaný pro členy back-endového fondu nemusí správně přeložit uživatelem nakonfigurovaný server DNS pro virtuální síť.

Řešení

Pomocí následujících kroků ověřte konfiguraci NSG, trasy definované uživatelem a DNS:

  1. Zkontrolujte skupiny zabezpečení sítě přidružené k podsíti služby Application Gateway. Ujistěte se, že komunikace s back-endem není blokovaná.

  2. Zkontrolujte trasu definovanou uživatelem přidruženou k podsíti služby Application Gateway. Ujistěte se, že trasy definované uživatelem nesměrují provoz mimo back-endovou podsíť. Zkontrolujte například směrování na síťová virtuální zařízení nebo výchozí trasy inzerované do podsítě služby Application Gateway prostřednictvím ExpressRoute nebo VPN.

    $vnet = Get-AzVirtualNetwork -Name vnetName -ResourceGroupName rgName
    Get-AzVirtualNetworkSubnetConfig -Name appGwSubnet -VirtualNetwork $vnet
    
  3. Kontrola efektivní skupiny zabezpečení sítě a směrování pomocí back-endového virtuálního počítače

    Get-AzEffectiveNetworkSecurityGroup -NetworkInterfaceName nic1 -ResourceGroupName testrg
    Get-AzEffectiveRouteTable -NetworkInterfaceName nic1 -ResourceGroupName testrg
    
  4. Zkontrolujte přítomnost vlastního DNS ve virtuální síti. DNS je možné zkontrolovat tak, že se podíváte na podrobnosti vlastností virtuální sítě ve výstupu.

    Get-AzVirtualNetwork -Name vnetName -ResourceGroupName rgName 
    DhcpOptions            : {
                               "DnsServers": [
                                 "x.x.x.x"
                               ]
                             }
    
  5. Pokud je k dispozici, ujistěte se, že server DNS dokáže správně přeložit plně kvalifikovaný název domény člena back-endového fondu.

Problémy s výchozí sondou stavu

Příčina

Chyby 502 můžou být také časté indikátory, že výchozí sonda stavu nemůže dosáhnout back-endových virtuálních počítačů.

Když je instance služby Application Gateway zřízená, automaticky nakonfiguruje výchozí sondu stavu pro každý BackendAddressPool pomocí vlastností BackendHttpSetting. K nastavení této sondy není vyžadován žádný uživatelský vstup. Konkrétně když je nakonfigurované pravidlo vyrovnávání zatížení, vytvoří se přidružení mezi BackendHttpSetting a BackendAddressPool. Pro každou z těchto přidružení je nakonfigurovaná výchozí sonda a služba Application Gateway spustí pravidelné připojení ke kontrole stavu ke každé instanci v BackendAddressPoolu na portu zadaném v elementu BackendHttpSetting.

Následující tabulka uvádí hodnoty přidružené k výchozí sondě stavu:

Vlastnost sondy Hodnota Popis
Adresa URL sondy http://127.0.0.1/ Cesta url
Interval 30 Interval sondy v sekundách
Časový limit 30 Časový limit sondy v sekundách
Prahová hodnota pro poškozený stav 3 Počet opakování sondy Back-endový server se označí, jakmile počet po sobě jdoucích selhání sond dosáhne prahové hodnoty, která není v pořádku.

Řešení

  • Hodnota hostitele požadavku bude nastavena na 127.0.0.1. Ujistěte se, že je nakonfigurovaná výchozí lokalita a naslouchá na adrese 127.0.0.1.
  • Protokol požadavku je určen protokolem BackendHttpSetting.
  • Cesta URI bude nastavena na /.
  • Pokud BackendHttpSetting určuje jiný port než 80, měl by být výchozí web nakonfigurovaný tak, aby naslouchal na tomto portu.
  • Volání protocol://127.0.0.1:port by mělo vrátit kód výsledku HTTP 200. Tento kód by se měl vrátit během 30sekundového časového limitu.
  • Ujistěte se, že je nakonfigurovaný port otevřený a neexistují žádná pravidla brány firewall ani skupiny zabezpečení sítě Azure, které blokují příchozí nebo odchozí provoz na nakonfigurovaných portech.
  • Pokud se klasické virtuální počítače Azure nebo cloudová služba používají s plně kvalifikovaným názvem domény nebo veřejnou IP adresou, ujistěte se, že je otevřený odpovídající koncový bod .
  • Pokud je virtuální počítač nakonfigurovaný přes Azure Resource Manager a je mimo virtuální síť, ve které je nasazená aplikační brána, musí být skupina zabezpečení sítě nakonfigurovaná tak, aby povolovala přístup na požadovaném portu.

Problémy s vlastní sondou stavu

Příčina

Vlastní sondy stavu umožňují další flexibilitu výchozího chování probívání. Když používáte vlastní sondy, můžete nakonfigurovat interval sondy, adresu URL, cestu k testování a počet neúspěšných odpovědí, které se mají přijmout, než označíte instanci back-endového fondu jako v pořádku.

Přidají se následující další vlastnosti:

Vlastnost sondy Popis
Název Název sondy. Tento název slouží k odkazu na sondu v nastavení http back-endu.
Protokol Protokol použitý k odeslání sondy Sonda používá protokol definovaný v nastavení HTTP back-endu.
Hostitel Název hostitele pro odeslání sondy Platí jenom v případě, že je ve službě Application Gateway nakonfigurované více lokalit. Liší se od názvu hostitele virtuálního počítače.
Cesta Relativní cesta sondy. Platná cesta začíná od /. Sonda se odešle do <protokolu>://<host>:<port><path>
Interval Interval sondy v sekundách. Toto je časový interval mezi dvěma po sobě jdoucími sondami.
Časový limit Časový limit sondy v sekundách Pokud se během tohoto časového limitu neobdrží platná odpověď, sonda se označí jako neúspěšná.
Prahová hodnota pro poškozený stav Počet opakování sondy Back-endový server se označí, jakmile počet po sobě jdoucích selhání sond dosáhne prahové hodnoty, která není v pořádku.

Řešení

Ověřte, že je sonda vlastního stavu správně nakonfigurovaná jako předchozí tabulka. Kromě předchozích kroků pro řešení potíží se také ujistěte, že:

  • Ujistěte se, že je sonda správně zadaná podle průvodce.
  • Pokud je aplikační brána nakonfigurovaná pro jednu lokalitu, ve výchozím nastavení by měl být název hostitele zadán jako 127.0.0.1, pokud není v vlastní sondě nakonfigurovaný jinak.
  • Ujistěte se, že volání http://< host>:<port><cesta> vrátí kód výsledku HTTP 200.
  • Ujistěte se, že interval, časový limit a nehealtyThreshold jsou v přijatelných rozsahech.
  • Pokud používáte sondu HTTPS, ujistěte se, že back-endový server nevyžaduje SNI konfigurací náhradního certifikátu na samotném back-endovém serveru.

Vypršení časového limitu požadavku

Příčina

Po přijetí žádosti o uživatele použije služba Application Gateway nakonfigurovaná pravidla na požadavek a směruje ji do instance back-endového fondu. Čeká na konfigurovatelný interval doby odezvy z back-endové instance. Ve výchozím nastavení je tento interval 20 sekund. Pokud služba Application Gateway v tomto intervalu v Application Gateway v1 neobdrží odpověď z back-endové aplikace, zobrazí se žádost uživatele o chybu 502. Pokud služba Application Gateway v tomto intervalu v Application Gateway v2 neobdrží odpověď z back-endové aplikace, pokusí se žádost proti druhému členovi back-endového fondu. Pokud druhý požadavek selže, požadavek uživatele se zobrazí chyba 502.

Řešení

Application Gateway umožňuje nakonfigurovat toto nastavení prostřednictvím BackendHttpSetting, které se pak dá použít u různých fondů. Různé back-endové fondy můžou mít jinou konfiguraci BackendHttpSetting a jiný časový limit požadavků.

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

Prázdný back-endAddressPool

Příčina

Pokud služba Application Gateway nemá v back-endovém fondu adres nakonfigurované žádné virtuální počítače ani škálovací sadu virtuálních počítačů, nemůže směrovat žádnou žádost zákazníka a odeslat chybnou chybu brány.

Řešení

Ujistěte se, že back-endový fond adres není prázdný. Můžete to provést buď prostřednictvím PowerShellu, rozhraní příkazového řádku nebo portálu.

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

Výstup z předchozí rutiny by měl obsahovat neprázdný back-endový fond adres. Následující příklad ukazuje dva fondy, které jsou nakonfigurované s plně kvalifikovaným názvem domény nebo IP adresami back-endových virtuálních počítačů. Stav zřizování BackendAddressPool musí být Úspěšný.

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"
}]

Instance, které nejsou v pořádku v BackendAddressPool

Příčina

Pokud nejsou všechny instance BackendAddressPool v pořádku, služba Application Gateway nemá žádný back-end pro směrování žádostí o uživatele. To může být také případ, kdy jsou back-endové instance v pořádku, ale nemají nasazenou požadovanou aplikaci.

Řešení

Ujistěte se, že jsou instance v pořádku a že je aplikace správně nakonfigurovaná. Zkontrolujte, jestli back-endové instance můžou reagovat na příkaz ping z jiného virtuálního počítače ve stejné virtuální síti. Pokud je nakonfigurovaný veřejný koncový bod, ujistěte se, že je žádost prohlížeče pro webovou aplikaci použitelná.

Další kroky

Pokud předchozí kroky problém nevyřeší, otevřete lístek podpory.