Aracılığıyla paylaş


Application Gateway’deki hatalı ağ geçidi hataları ile ilgili sorunları giderme

Azure Application Gateway kullanırken alınan bir hatalı ağ geçidi (502) hatalarını çözmeyi öğrenin.

Not

Azure ile etkileşim kurmak için Azure Az PowerShell modülünü kullanmanızı öneririz. Başlamak için bkz. Azure PowerShell'i yükleme. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.

Genel bakış

Bir uygulama ağ geçidini yapılandırdıktan sonra, görebileceğiniz hatalardan biri Sunucu Hatası: 502 - Web sunucusu ağ geçidi veya ara sunucu olarak çalışırken geçersiz bir yanıt aldı. Bu hata aşağıdaki ana nedenlerle oluşabilir:

Ağ Güvenlik Grubu, Kullanıcı Tanımlı Yol veya Özel DNS sorunu

Neden

NSG, UDR veya özel DNS nedeniyle arka uç erişimi engellenirse, uygulama ağ geçidi örnekleri arka uç havuzuna erişemez. Bu sorun yoklama hatalarına neden olur ve 502 hatasıyla sonuçlanır.

NSG/UDR, uygulama ağ geçidi alt ağına veya uygulama VM'lerinin dağıtıldığı alt ağda bulunabilir.

Benzer şekilde, sanal ağda özel bir DNS bulunması da sorunlara neden olabilir. Arka uç havuzu üyeleri için kullanılan bir FQDN, kullanıcı tarafından yapılandırılmış sanal ağ için DNS sunucusu tarafından doğru çözümlenmeyebilir.

Çözüm

Aşağıdaki adımları izleyerek NSG, UDR ve DNS yapılandırmasını doğrulayın:

  1. Uygulama ağ geçidi alt ağıyla ilişkili NSG'leri denetleyin. Arka uçla iletişimin engellenmediğinden emin olun. Daha fazla bilgi için bkz . Ağ güvenlik grupları.

  2. Uygulama ağ geçidi alt ağıyla ilişkili UDR'yi denetleyin. UDR'nin trafiği arka uç alt ağından uzaklaştırmadığından emin olun. Örneğin, ExpressRoute/VPN aracılığıyla uygulama ağ geçidi alt ağına tanıtılan ağ sanal gereçlerine veya varsayılan yollara yönlendirme olup olmadığını denetleyin.

    $vnet = Get-AzVirtualNetwork -Name vnetName -ResourceGroupName rgName
    Get-AzVirtualNetworkSubnetConfig -Name appGwSubnet -VirtualNetwork $vnet
    
  3. Arka uç VM ile etkin NSG ve route'u denetle

    Get-AzEffectiveNetworkSecurityGroup -NetworkInterfaceName nic1 -ResourceGroupName testrg
    Get-AzEffectiveRouteTable -NetworkInterfaceName nic1 -ResourceGroupName testrg
    
  4. Sanal ağda özel DNS olup olmadığını denetleyin. DNS, çıktıdaki sanal ağ özelliklerinin ayrıntılarına bakılarak denetlenebilir.

    Get-AzVirtualNetwork -Name vnetName -ResourceGroupName rgName 
    DhcpOptions            : {
                               "DnsServers": [
                                 "x.x.x.x"
                               ]
                             }
    
  5. Varsa, DNS sunucusunun arka uç havuzu üyesinin FQDN'sini doğru çözümleyebilmesini sağlayın.

Varsayılan sağlık yoklaması ile ilgili sorunlar

Neden

502 hataları, varsayılan sistem durumu yoklamasının arka uç VM'lerine ulaşamaması sık görülen göstergelerden biri olabilir.

Bir uygulama ağ geçidi örneği sağlandığında, BackendHttpSetting özelliklerini kullanarak her BackendAddressPool için otomatik olarak bir varsayılan durum yoklaması yapılandırılır. Bu probu ayarlamak için kullanıcı girişi gerekmez. Özellikle, bir yük dengeleme kuralı yapılandırıldığında, BackendHttpSetting ile BackendAddressPool arasında bir ilişkilendirme yapılır. Bu ilişkilendirmelerin her biri için varsayılan bir yoklama yapılandırılır ve uygulama ağ geçidi, BackendHttpSetting öğesinde belirtilen bağlantı noktasındaki BackendAddressPool'daki her örneğe düzenli bir sistem durumu denetimi bağlantısı başlatır.

Aşağıdaki tabloda, varsayılan sistem durumu yoklaması ile ilişkili değerler listelenir:

İnceleme özelliği Değer Açıklama
Sorgulama URL'si http://127.0.0.1/ URL yolu
Aralık 30 Saniye cinsinden sonda aralığı
Zaman aşımı 30 Yoklama süresi aşımı (saniye cinsinden)
Sağlıksız durum eşiği 3 Yoklama yeniden deneme sayısı. Arka uç sunucusu, ardışık yoklama hatası sayısı sağlıksız eşiğe ulaştıktan sonra çalışmaz olarak işaretlenir.

Çözüm

  • İsteğin konak değeri 127.0.0.1 olarak ayarlanır. Varsayılan sitenin yapılandırıldığından ve 127.0.0.1'de dinlediğinden emin olun.
  • İsteğin protokolü BackendHttpSetting protokolü tarafından belirlenir.
  • URI Yolu olarak /ayarlanır.
  • BackendHttpSetting 80 dışında bir bağlantı noktası belirtiyorsa, varsayılan site bu bağlantı noktasında dinleyecek şekilde yapılandırılmalıdır.
  • Çağrı protocol://127.0.0.1:port bir HTTP 200 sonuç kodu döndürmelidir. Bu kod 30 saniyelik zaman aşımı süresi içinde döndürülmelidir.
  • Yapılandırılan bağlantı noktasının açık olduğundan ve yapılandırılan bağlantı noktasında gelen veya giden trafiği engelleyen güvenlik duvarı kuralları veya Azure Ağ Güvenlik Grupları olmadığından emin olun.
  • Klasik Azure VM'leri veya Bulut Hizmeti bir FQDN veya genel IP ile kullanılıyorsa ilgili uç noktanın açıldığından emin olun.
  • VM Azure Resource Manager aracılığıyla yapılandırıldıysa ve uygulama ağ geçidinin dağıtıldığı sanal ağın dışındaysa, istenen bağlantı noktasında erişime izin verecek şekilde bir Ağ Güvenlik Grubu yapılandırılmalıdır.

Daha fazla bilgi için bkz . Application Gateway altyapı yapılandırması.

Özelleştirilmiş sağlık denetimi ile ilgili sorunlar

Neden

Özel sistem durumu yoklamaları, varsayılan yoklama davranışına ek esneklik sağlar. Özel yoklamalar kullandığınızda, arka uç havuzu örneğini iyi durumda değil olarak işaretlemeden önce yoklama aralığını, URL'yi, test yolunu ve kaç başarısız yanıtı kabul etmek istediğinizi yapılandırabilirsiniz.

Aşağıdaki ek özellikler eklenir:

İnceleme özelliği Açıklama
Ad Sondanın adı. Bu ad, arka uç HTTP ayarlarında sondayı belirtmek için kullanılır.
Protokol Sondaları göndermek için kullanılan protokol. Test düzeneği, arka uç HTTP ayarlarında tanımlanan protokolü kullanır.
Sunucu Sondayı göndermek için ana bilgisayar adı. Yalnızca uygulama ağ geçidinde birden çok site yapılandırıldığında geçerlidir. Bu, VM ana bilgisayar adından farklıdır.
Yol Yoklamanın göreli yolu. Geçerli yol '/' ile başlar. Prob <protocol>://<host>:<port><yola> gönderilir
Aralık Saniye cinsinden ölçüm aralığı. Bu, ardışık iki yoklama arasındaki zaman aralığıdır.
Zaman aşımı Yoklama saniyeler içinde zaman aşımına uğrar. Bu zaman aşımı süresi içinde geçerli bir yanıt alınmazsa yoklama başarısız olarak işaretlenir.
Sağlıksız durum eşiği Yoklama yeniden deneme sayısı. Arka uç sunucusu, ardışık yoklama hatası sayısı sağlıksız eşiğe ulaştıktan sonra çalışmaz olarak işaretlenir.

Çözüm

Önceki tabloda gösterildiği gibi, Özel Sağlık Yoklaması'nın doğru yapılandırıldığını doğrulayın. Yukarıdaki sorun giderme adımlarına ek olarak aşağıdakilerden de emin olun:

  • Probun, kılavuza göre doğru şekilde belirtildiğinden emin olun.
  • Uygulama ağ geçidi tek bir site için yapılandırılmışsa, özel yoklamada aksi yapılandırılmadığı sürece Ana bilgisayar adı varsayılan olarak olarak 127.0.0.1belirtilmelidir.
  • http://< host>:<bağlantı noktası><yoluna> yapılan bir çağrının 200 http sonuç kodu döndürdüğünden emin olun.
  • Interval, Timeout ve UnhealthyThreshold değerlerinin kabul edilebilir aralıklar içinde olduğundan emin olun.
  • HTTPS aracı kullanıyorsanız, arka uç sunucusunda bir yedek sertifika yapılandırarak sunucunun SNI gerektirmediğinden emin olun.

İstek zaman aşımı

Neden

Kullanıcı isteği alındığında, uygulama ağ geçidi yapılandırılan kuralları isteğe uygular ve isteği bir arka uç havuzu örneğine yönlendirir. Yapılandırılabilir bir süre boyunca sunucu örneğinden gelecek yanıtı bekler. Varsayılan olarak, bu aralık 20 saniyedir. Application Gateway v1'de uygulama ağ geçidi bu süre içinde arka uç uygulamasından yanıt almazsa, kullanıcı isteği 502 hatası alır. Application Gateway v2'de, uygulama ağ geçidi bu aralıkta arka uç uygulamasından yanıt almazsa, istek ikinci bir arka uç havuzu üyesine karşı denenir. İkinci istek başarısız olursa kullanıcı isteği 504 hatası alır.

Çözüm

Application Gateway, bu ayarı BackendHttpSetting aracılığıyla yapılandırmanıza olanak tanır ve bu ayar daha sonra farklı havuzlara uygulanabilir. Farklı arka uç havuzları farklı BackendHttpSetting'e ve farklı bir istek zaman aşımı yapılandırmasına sahip olabilir.

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

Boş Arka Uç Adres Havuzu

Neden

Uygulama ağ geçidinin arka uç adres havuzunda yapılandırılmış vm'leri veya sanal makine ölçek kümesi yoksa, hiçbir müşteri isteğini yönlendiremez ve hatalı bir ağ geçidi hatası gönderir.

Çözüm

Arka uç adres havuzunun boş olmadığından emin olun. Bu işlem PowerShell, CLI veya portal aracılığıyla yapılabilir.

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

Önceki cmdlet'ten elde edilen çıkış, boş olmayan bir arka uç adres havuzu içermelidir. Aşağıdaki örnek, arka uç VM'leri için FQDN veya IP adresleriyle yapılandırılmış iki havuzun döndürüldüğünü göstermektedir. BackendAddressPool sağlama durumu 'Başarılı' olmalıdır.

Arka Plan Adres Havuzları Metni

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

BackendAddressPool'daki iyi durumda olmayan örnekler

Neden

BackendAddressPool'un tüm örnekleri iyi durumda değilse, uygulama ağ geçidinin kullanıcı isteğini yönlendirecek bir arka ucu yoktur. Arka uç örneklerinin iyi durumda olduğu ancak gerekli uygulamanın dağıtılmadığı durumda da bu söz konusu olabilir.

Çözüm

Örneklerin iyi durumda olduğundan ve uygulamanın düzgün yapılandırıldığından emin olun. Arka uç örneklerinin aynı sanal ağ içindeki başka bir VM'den gelen ping'e yanıt verip veremediğinden emin olun. Genel bir uç noktayla yapılandırıldıysa, web uygulamasına yönelik bir tarayıcı isteğinin uygun olduğundan emin olun.

Yukarı akış SSL sertifikası eşleşmiyor

Neden

Arka uç sunucularına yüklenen TLS sertifikası, Konak isteği üst bilgisinde alınan ana bilgisayar adıyla eşleşmiyor.

Uçtan uca TLS'nin etkinleştirildiği senaryolarda, uygun "Arka Uç HTTP Ayarları" düzenlenerek ve burada "Arka uç protokolü" ayarının yapılandırması HTTPS olarak değiştirilerek elde edilen bir yapılandırma, arka uç sunucularına yüklenen TLS sertifikasının DNS ADıNıN HTTP ana bilgisayar üst bilgisi isteğinde arka uca gelen ana bilgisayar adıyla eşleştiğinden emin olmak zorunludur.

Hatırlatmak gerekirse, "Arka Uç HTTP Ayarları"nda HTTP yerine HTTPS protokolü seçeneğini etkinleştirmenin etkisi, Application Gateway örnekleri ile arka uç sunucuları arasında gerçekleşen iletişimin ikinci bölümünün TLS ile şifrelenmesidir.

Application Gateway'in varsayılan olarak istemciden aldığı aynı HTTP ana bilgisayar üst bilgisini arka uçtan göndermesi nedeniyle, arka uç sunucusuna yüklenen TLS sertifikasının HTTP ana bilgisayar üst bilgisinde bu arka uç sunucusu tarafından alınan ana bilgisayar adıyla eşleşen bir DNS ADı ile verildiğinden emin olmanız gerekir. Aksi belirtilmedikçe, bu konak adının istemciden alınan adla aynı olacağını unutmayın.

Örneğin:

Etki alanı www.contoso.comiçin https isteklerini sunmak için bir Application Gateway'iniz olduğunu düşünün. Alan adı contoso.com, bir Azure DNS Genel Bölgesi'ne delege edilebilir ve bu bölgede isteklere hizmet edecek olan Application Gateway'in genel IP'sine işaret eden bir A DNS kaydı www.contoso.com olabilir.

Bu Application Gateway'de, ana bilgisayar www.contoso.com için protokol olarak HTTPS kullanmaya zorlanan bir "Arka Uç HTTP Ayarı" kuralına sahip bir dinleyiciniz olmalıdır (bu, uçtan uca TLS'yi güvence altına alır). Aynı kural, Web sunucusu olarak IIS çalıştıran iki VM ile bir arka uç havuzu yapılandırmış olabilir.

"Kuralların 'Bağlanan HTTP Ayarı'nda HTTPS'nin etkinleştirilmesi, Application Gateway örnekleri ile arka uçtaki sunucular arasında gerçekleşen iletişimin ikinci bölümünde TLS kullanılmasını sağlar."

Arka uç sunucularında DNS ADI www.contoso.com veya *.contoso.com için verilmiş bir TLS sertifikası yoksa, istek Sunucu Hatası: 502 - Yukarı akış SSL sertifikası (arka uç sunucularında yüklü sertifika) konak üst bilgisindeki ana bilgisayar adıyla eşleşmediğinden web sunucusu ağ geçidi veya ara sunucu olarak davranırken geçersiz bir yanıt aldı , ve bu nedenle TLS anlaşması başarısız olur.

www.contoso.com --> APP GW ön uç IP'si --> "Arka Uç HTTP Ayarları"nı HTTP yerine HTTPS protokollerini kullanacak şekilde yapılandıran bir kurala sahip dinleyici --> Arka Uç Havuzu --> Web sunucusu (için www.contoso.combir TLS sertifikasının yüklü olması gerekir)

Çözüm

Arka uç sunucusuna yüklenen TLS sertifikasının DNS ADıNıN HTTP arka uç ayarlarında yapılandırılan ana bilgisayar adıyla eşleşmesi gerekir; aksi takdirde Application Gateway örnekleri ile arka uç arasında gerçekleşen uçtan uca iletişimin ikinci bölümü "Yukarı akış SSL sertifikası eşleşmiyor" hatasıyla başarısız olur ve bir Sunucu Hatası döndürür: 502 - Web sunucusu, ağ geçidi veya ara sunucu olarak çalışırken geçersiz bir yanıt aldı

Sonraki adımlar

Yukarıdaki adımlar sorunu çözmezse bir destek bileti açın.