Pecahkan masalah afinitas sesi Azure Application Gateway

Pelajari cara mendiagnosis dan memecahkan masalah afinitas sesi dengan Azure Application Gateway.

Catatan

Sebaiknya Anda menggunakan modul Azure Az PowerShell untuk berinteraksi dengan Azure. Lihat Menginstal Azure PowerShell untuk memulai. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.

Gambaran Umum

Fitur afinitas sesi berbasis cookie berguna untuk menyimpan sesi pengguna di server yang sama. Dengan menggunakan cookie yang dikelola gateway, Application Gateway dapat mengarahkan lalu lintas berikutnya dari sesi pengguna ke server yang sama untuk diproses. Ini penting dalam kasus di mana keadaan sesi disimpan secara lokal di server untuk sesi pengguna. Afinitas sesi juga dikenal sebagai sesi lengket.

Catatan

Application Gateway v1 mengeluarkan cookie yang disebut ARRAffinity, yang digunakan untuk mengarahkan lalu lintas ke anggota kumpulan backend yang sama. Di Application Gateway v2, cookie ini telah diganti namanya menjadi ApplicationGatewayAffinity. Untuk keperluan dokumen ini, ApplicationGatewayAffinity akan digunakan sebagai contoh, ARRAffinity dapat diganti jika berlaku untuk instans Application Gateway v1.

Kemungkinan penyebab masalah

Masalah dalam mempertahankan afinitas sesi berbasis cookie dapat terjadi karena alasan utama berikut:

  • Pengaturan "Afinitas berbasis Cookie" tidak diaktifkan
  • Aplikasi Anda tidak dapat menangani afinitas berbasis cookie
  • Aplikasi menggunakan afinitas berbasis cookie tetapi permintaan masih memantul di antara server backend

Terkadang masalah afinitas sesi mungkin terjadi ketika Anda lupa mengaktifkan pengaturan "Afinitas berbasis Cookie". Untuk memastikan apakah Anda telah mengaktifkan pengaturan "Afinitas berbasis Cookie" pada tab Pengaturan HTTP di portal Microsoft Azure, ikuti instruksi ini:

  1. Masuk ke portal Microsoft Azure.

  2. Pada panel navigasi kiri, klik Semua sumber daya. Klik nama gateway aplikasi pada bilah Semua sumber daya. Jika langganan yang Anda pilih sudah memiliki beberapa sumber daya di dalamnya, Anda bisa memasukkan nama gateway aplikasi dalam kotak Filter menurut nama... untuk mengakses gateway aplikasi dengan mudah.

  3. Pilih tab Pengaturan HTTP di bawah SETELAN.

    Screenshot shows SETTINGS with H T T P settings selected.

  4. Pilih pengaturan HTTP, dan pada halaman Tambahkan pengaturan HTTP, periksa apakah afinitas berbasis Cookie diaktifkan.

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

Anda juga bisa memeriksa nilai"CookieBasedAffinity"diatur ke Diaktifkandi bawah "backendHttpSettingsCollection" dengan menggunakan salah satu metode berikut:

"cookieBasedAffinity": "Enabled", 

Penyebab

Gateway aplikasi hanya dapat menjalankan afinitas berbasis sesi dengan menggunakan cookie.

Solusi Sementara

Jika aplikasi tidak dapat menangani afinitas berbasis cookie, Anda harus menggunakan penyeimbang muatan Azure eksternal atau internal atau solusi pihak ketiga lainnya.

Gejala

Anda telah mengaktifkan pengaturan Afinitas berbasis Cookie, saat Anda mengakses Application Gateway dengan menggunakan URL nama pendek di Internet Explorer, misalnya: http://website , permintaan masih memantul di antara server backend.

Untuk mengidentifikasi masalah ini, ikuti petunjuk berikut:

  1. Gunakan jejak debugger web pada "Klien" yang menghubungkan ke aplikasi di belakang Application Gateway (Kami menggunakan Fiddler dalam contoh ini). Tip Jika Anda tidak tahu cara menggunakan Fiddler, centang opsi "Saya ingin mengumpulkan lalu lintas jaringan dan menganalisisnya menggunakan debugger web" di bagian bawah.

  2. Periksa dan analisis log sesi, untuk menentukan apakah cookie yang disediakan oleh klien memiliki detail ApplicationGatewayAffinity. Jika Anda tidak menemukan detail ApplicationGatewayAffinity, seperti "ApplicationGatewayAffinity=ApplicationGatewayAffinityValue" dalam kumpulan cookie, itu berarti klien tidak membalas dengan cookie ApplicationGatewayAffinity, yang disediakan oleh Application Gateway. Contohnya:

    Screenshot shows a session log with a single entry highlighted.

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

Aplikasi terus mencoba mengatur cookie pada setiap permintaan sampai mendapat balasan.

Penyebab

Masalah ini terjadi karena Internet Explorer dan browser lain mungkin tidak menyimpan atau menggunakan cookie dengan URL singkat.

Resolusi

Untuk memperbaiki masalah ini, Anda harus mengakses Gateway Aplikasi dengan menggunakan FQDN. Misalnya, gunakan http://website.comatauhttp://appgw.website.com.

Log tambahan untuk memecahkan masalah

Anda dapat mengumpulkan log tambahan dan menganalisisnya untuk memecahkan masalah terkait afinitas sesi berbasis cookie

Analisis log Application Gateway

Untuk mengumpulkan log Application Gateway, ikuti instruksi berikut:

Aktifkan pengelogan menggunakan portal Azure.

  1. Di portal Azure, temukan sumber daya Anda lalu pilih Pengaturan diagnostik.

    Untuk Application Gateway, tiga log tersedia: Log akses, Log performa, dan log Firewall.

  2. Untuk mulai mengumpulkan data, pilih Tambahkan pengaturan diagnostik.

    Screenshot shows an application gateway with Diagnostics settings selected.

  3. Halaman Pengaturan diagnostik menyediakan pengaturan untuk log diagnostik. Pada contoh ini, Log Analitik menyimpan log. Anda juga dapat menggunakan hub peristiwa dan akun penyimpanan untuk menyimpan log diagnostik.

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

  4. Konfirmasi pengaturan lalu pilih Simpan.

Gunakan debugger web untuk mengambil dan menganalisis lalu lintas HTTP atau HTTPS

Alat penelusuran kesalahan web seperti Fiddler, dapat membantu Anda men-debug aplikasi web dengan menangkap lalu lintas jaringan antara Internet dan komputer uji. Alat-alat ini memungkinkan Anda untuk memeriksa data masuk dan keluar saat browser menerima/mengirimnya. Fiddler, dalam contoh ini, memiliki opsi pemutaran ulang HTTP yang dapat membantu Anda memecahkan masalah klien dengan aplikasi web, terutama untuk jenis masalah autentikasi.

Gunakan debugger web pilihan Anda. Pada contoh ini kami akan menggunakan Fiddler untuk menangkap dan menganalisis http atau lalu lintas https, ikuti instruksi berikut:

  1. Unduh Fiddler.

    Catatan

    Pilih Fiddler4 jika komputer yang menangkap telah dipasang .NET 4. Jika tidak, pilih Fiddler2.

  2. Klik kanan pengaturan yang dapat dieksekusi, dan jalankan sebagai admin untuk memasang.

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

  3. Saat Anda membuka Fiddler, Fiddler akan secara otomatis mulai menangkap lalu lintas (perhatikan Penangkapan di sudut kiri bawah). Tekan F12 untuk memulai atau menghentikan penangkapan lalu lintas.

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

  4. Kemungkinan besar, Anda akan tertarik pada lalu lintas HTTPS yang didekripsi, dan Anda dapat mengaktifkan dekripsi HTTPS dengan memilih Opsi>Alat Fiddler, dan centang kotak " Dekripsi lalu lintas HTTPS".

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

  5. Anda dapat menghapus sesi yang tidak terkait sebelumnya sebelum mereproduksi masalah dengan mengklik X (ikon)> Hapus Semua sebagai cuplikan layar berikut:

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

  6. Setelah Anda mereproduksi masalah, simpan file untuk ditinjau dengan memilih Simpan>File>Semua Sesi...

    Screenshot shows the File Save All Sessions option selected.

  7. Periksa dan analisis log sesi untuk memastikan apa masalahnya.

    Misalnya:

  • Contoh A: Anda menemukan log sesi yang permintaannya dikirim dari klien, dan masuk ke alamat IP publik App Gateway, klik log ini untuk melihat detailnya. Di sisi kanan, data di kotak bawah adalah apa yang dikembalikan App Gateway ke klien. Pilih tab "RAW" dan tentukan apakah klien menerima "Set-Cookie: ApplicationGatewayAffinity=ApplicationGatewayAffinityValue." Jika tidak ada cookie, afinitas sesi tidak diatur, atau Application Gateway tidak menerapkan cookie kembali ke klien.

    Catatan

    Nilai ApplicationGatewayAffinity ini adalah cookie-id, yang ditetapkan Application Gateway agar klien dikirim ke server backend tertentu.

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

  • Contoh B: Log sesi berikutnya diikuti oleh yang sebelumnya adalah klien merespons kembali ke Application Gateway, yang telah mengatur ApplicationGatewayAffinity. Jika cookie-id ApplicationGatewayAffinity cocok, paket harus dikirim ke server backend yang sama yang digunakan sebelumnya. Periksa beberapa baris komunikasi http berikutnya untuk melihat apakah cookie ApplicationGatewayAffinity klien berubah.

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

Catatan

Untuk sesi komunikasi yang sama, cookie tidak boleh berubah. Centang kotak atas di sisi kanan, pilih tab "Cookie" untuk melihat apakah klien menggunakan cookie dan mengirimkannya kembali ke App Gateway. Jika tidak, browser klien tidak menyimpan dan menggunakan cookie untuk percakapan. Kadang-kadang, klien mungkin berbohong.

Langkah berikutnya

Jika langkah-langkah sebelumnya tidak mengatasi masalah, buka tiket dukungan.