Azure Uygulaması Lication Gateway oturum benzinim sorunlarını giderme

Azure Uygulaması lication Gateway ile ilgili oturum benzitesi sorunlarını tanılamayı ve çözmeyi öğrenin.

Dekont

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ış

Tanımlama bilgisi tabanlı oturum benzimi özelliği, bir kullanıcı oturumunu aynı sunucuda tutmak için kullanışlıdır. Ağ geçidi ile yönetilen tanımlama bilgilerini kullanan Application Gateway, sonraki trafiği işleme amacıyla bir kullanıcı oturumundan aynı sunucuya yönlendirebilir. Bu, oturum durumunun bir kullanıcı oturumuna ait sunucuya yerel olarak kaydedildiği durumlarda önemlidir. Oturum benzitesi, yapışkan oturumlar olarak da bilinir.

Dekont

Application Gateway v1, trafiği aynı arka uç havuzu üyesine yönlendirmek için kullanılan ARRAffinity adlı bir tanımlama bilgisi gönderir. Application Gateway v2'de bu tanımlama bilgisi ApplicationGatewayAffinity olarak yeniden adlandırıldı. Bu belgenin amaçları doğrultusunda, Örnek olarak ApplicationGatewayAffinity kullanılacaktır; Application Gateway v1 örnekleri için uygun olduğunda ARRAffinity yerine kullanılabilir.

Olası sorun nedenleri

Tanımlama bilgisi tabanlı oturum benzini koruma sorunu aşağıdaki temel nedenlerden dolayı oluşabilir:

  • "Tanımlama bilgisi tabanlı benşim" ayarı etkin değil
  • Uygulamanız tanımlama bilgisi tabanlı benzimliği işleyemiyor
  • Uygulama tanımlama bilgisi tabanlı benşim kullanıyor ancak arka uç sunucuları arasında yine de istekler sekiyor

Bazen "Tanımlama bilgisi tabanlı benzite" ayarını etkinleştirmeyi unuttuğunuzda oturum benzimliği sorunları oluşabilir. Azure portalının HTTP Ayarlar sekmesinde "Tanımlama bilgisi tabanlı benzim" ayarını etkinleştirip etkinleştirmediğinize karar vermek için yönergeleri izleyin:

  1. Azure portalında oturum açın.

  2. Sol gezinti bölmesinde Tüm kaynaklar'a tıklayın. Tüm kaynaklar dikey penceresinde uygulama ağ geçidi adına tıklayın. Seçtiğiniz aboneliğin içinde zaten birkaç kaynak varsa, uygulama ağ geçidine kolayca erişmek için Ada göre filtrele... kutusuna uygulama ağ geçidi adını girebilirsiniz.

  3. AYARLAR'ın altında HTTP ayarları sekmesini seçin.

    Screenshot shows SETTINGS with H T T P settings selected.

  4. HTTP ayarını seçin ve HTTP ayarı ekle sayfasında Tanımlama bilgisi tabanlı benşim'in etkinleştirilip etkinleştirilmediğini denetleyin.

    Screenshot shows the gateway settings for an app gateway, including whether Cookie based affinity is selected.

Ayrıca aşağıdaki yöntemlerden birini kullanarak "CookieBasedAffinity" değerinin "backendHttp Ayarlar Collection" altında Etkinolarak ayarlandığını da de kontrol edebilirsiniz:

  • PowerShell'de Get-AzApplicationGatewayBackendHttpSetting komutunu çalıştırma
  • Azure Resource Manager şablonunu kullanarak JSON dosyasına göz atın
"cookieBasedAffinity": "Enabled", 

Neden

Uygulama ağ geçidi yalnızca tanımlama bilgisi kullanarak oturum tabanlı benşim gerçekleştirebilir.

Geçici çözüm

Uygulama tanımlama bilgisi tabanlı benşimi işleyemiyorsa, bir dış veya iç Azure yük dengeleyici veya başka bir üçüncü taraf çözümü kullanmanız gerekir.

Belirti

Application Gateway'e Internet Explorer'da kısa bir ad URL'si kullanarak eriştiğinizde Tanımlama Bilgisi Tabanlı Benzimite ayarını etkinleştirdiniz, örneğin: http://website , istek arka uç sunucuları arasında yine de sekiyor.

Bu sorunu belirlemek için yönergeleri izleyin:

  1. Application Gateway'in arkasındaki uygulamaya bağlanan "İstemci" üzerinde bir web hata ayıklayıcısı izlemesi alın (Bu örnekte Fiddler kullanıyoruz). İpucu Fiddler'ın nasıl kullanılacağını bilmiyorsanız alttaki "Ağ trafiğini toplamak ve web hata ayıklayıcısını kullanarak analiz etmek istiyorum" seçeneğini işaretleyin.

  2. İstemci tarafından sağlanan tanımlama bilgilerinin ApplicationGatewayAffinity ayrıntılarına sahip olup olmadığını belirlemek için oturum günlüklerini denetleyin ve analiz edin. Tanımlama bilgisi kümesinde "ApplicationGatewayAffinity=ApplicationGatewayAffinityValue" gibi ApplicationGatewayAffinity ayrıntılarını bulamazsanız, istemci Application Gateway tarafından sağlanan ApplicationGatewayAffinity tanımlama bilgisini yanıtlamaz. Örnek:

    Screenshot shows a session log with a single entry highlighted.

    Screenshot shows request headers for H T T P, including cookie information.

Uygulama yanıt gelene kadar her istekte tanımlama bilgisini ayarlamaya devam eder.

Neden

Bu sorun, Internet Explorer ve diğer tarayıcıların tanımlama bilgisini kısa bir ad URL'si ile depolamayabileceği veya kullanamadığı için oluşur.

Çözünürlük

Bu sorunu gidermek için Application Gateway'e FQDN kullanarak erişmeniz gerekir. Örneğin, veya http://appgw.website.com kullanınhttp://website.com.

Sorun gidermek için ek günlükler

Tanımlama bilgisi tabanlı oturum benşimi ile ilgili sorunları gidermek için ek günlükleri toplayabilir ve bunları analiz edebilirsiniz

Application Gateway günlüklerini analiz etme

Application Gateway günlüklerini toplamak için yönergeleri izleyin:

Azure portalını kullanarak günlüğe kaydetmeyi etkinleştirin.

  1. Azure portalında kaynağınızı bulun ve Tanılama ayarı'nı seçin.

    Application Gateway için üç günlük mevcuttur: Erişim günlüğü, Performans günlüğü ve Güvenlik duvarı günlüğü.

  2. Veri toplamaya başlamak için Tanılama ayarı ekle'yi seçin.

    Screenshot shows an application gateway with Diagnostics settings selected.

  3. Tanılama ayarı sayfası, tanılama günlükleri için ayarları sağlar. Bu örnekte Log Analytics günlükleri depolar. Tanılama günlüklerini kaydetmek için Event Hubs'ı veya depolama hesabını da kullanabilirsiniz.

    Screenshot shows the Diagnostics settings pane with Log Analytics Configure selected.

  4. Ayarları onaylayın ve kaydet'i seçin.

HTTP veya HTTPS trafiğini yakalamak ve analiz etmek için web hata ayıklayıcısını kullanma

Fiddler gibi web hata ayıklama araçları, İnternet ile test bilgisayarları arasındaki ağ trafiğini yakalayarak web uygulamalarında hata ayıklamanıza yardımcı olabilir. Bu araçlar, tarayıcı tarafından alınan/gönderilen gelen verileri incelemenize olanak tanır. Fiddler, bu örnekte, özellikle kimlik doğrulama türündeki sorunlar için web uygulamalarıyla ilgili istemci tarafı sorunlarını gidermenize yardımcı olabilecek HTTP yeniden yürütme seçeneğine sahiptir.

Seçtiğiniz web hata ayıklayıcısını kullanın. Bu örnekte, http veya https trafiğini yakalamak ve analiz etmek için Fiddler'ı kullanacağız, yönergeleri izleyin:

  1. Fiddler'ı indirin.

    Dekont

    Yakalama bilgisayarında .NET 4 yüklüyse Fiddler4'ü seçin. Aksi takdirde Fiddler2'yi seçin.

  2. Kurulum yürütülebilir dosyasını sağ tıklatın ve yüklemek için yönetici olarak çalıştırın.

    Screenshot shows the Fiddler setup program with a contextual menu with Run as administrator selected.

  3. Fiddler'ı açtığınızda otomatik olarak trafiği yakalamaya başlamalıdır (sol alt köşedeki Yakalama'ya dikkat edin). Trafik yakalamayı başlatmak veya durdurmak için F12 tuşuna basın.

    Screenshot shows the Fiddler Web Debugger with the Capturing indicator highlighted.

  4. Büyük olasılıkla şifresi çözülmüş HTTPS trafiğiyle ilgilenirsiniz ve Araçlar>Fiddler Seçenekleri'ni seçerek HTTPS şifre çözmeyi etkinleştirebilir ve "HTTPS trafiğinin şifresini çöz" kutusunu işaretleyebilirsiniz.

    Screenshot shows Options in Fiddler with H T T P selected and Decrypt HTTPS traffic selected.

  5. Sorunu yeniden oluşturmadan önce X (simge) >Tümünü Kaldır'a tıklayarak önceki ilişkisiz oturumları kaldırabilirsiniz. Ekran görüntüsü:

    Screenshot shows the X icon selected, which displays the Remove all option.

  6. Sorunu yeniden oluşturduktan sonra, Dosya>Tüm Oturumları Kaydet>... seçeneğini belirleyerek dosyayı gözden geçirmek üzere kaydedin.

    Screenshot shows the File Save All Sessions option selected.

  7. Sorunun ne olduğunu belirlemek için oturum günlüklerini denetleyin ve analiz edin.

    Örnekler için:

  • Örnek A: İsteğin istemciden gönderildiği bir oturum günlüğü bulursunuz ve Application Gateway'in genel IP adresine gider, ayrıntıları görüntülemek için bu günlüğe tıklayın. Sağ tarafta, Application Gateway'in istemciye döndüreceği veriler alttaki kutudaki verilerdir. "RAW" sekmesini seçin ve istemcinin "Set-Cookie: ApplicationGatewayAffinity=ApplicationGatewayAffinityValue" alıp almadığını belirleyin. Tanımlama bilgisi yoksa oturum benzimliği ayarlanmaz veya Application Gateway istemciye tanımlama bilgisi uygulamaz.

    Dekont

    Bu ApplicationGatewayAffinity değeri, Application Gateway'in istemcinin belirli bir arka uç sunucusuna gönderilmesi için ayar yaptığı tanımlama bilgisi kimliğidir.

    Screenshot shows an example of details of a log entry with the Set-Cookie value highlighted.

  • Örnek B: Sonraki oturum günlüğü ve ardından bir önceki, ApplicationGatewayAffinity'yi ayarlayan Application Gateway'e yanıt veren istemcidir. ApplicationGatewayAffinity tanımlama bilgisi kimliği eşleşiyorsa, paket daha önce kullanılan arka uç sunucusuna gönderilmelidir. İstemcinin ApplicationGatewayAffinity tanımlama bilgisinin değişip değişmediğini görmek için http iletişiminin sonraki birkaç satırına bakın.

    Screenshot shows an example of details of a log entry with a cookie highlighted.

Dekont

Aynı iletişim oturumu için tanımlama bilgisinin değişmemesi gerekir. İstemcinin tanımlama bilgisini kullanıp kullanmadığını ve Application Gateway'e geri gönderip göndermediğini görmek için sağ taraftaki üstteki kutuyu işaretleyin, "Tanımlama Bilgileri" sekmesini seçin. Aksi takdirde, istemci tarayıcısı konuşmalar için tanımlama bilgisini tutmaz ve kullanmaz. Bazen müşteri yalan söyler.

Sonraki adımlar

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