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
Periksa apakah pengaturan "Afinitas berbasis Cookie" diaktifkan
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:
Masuk ke portal Microsoft Azure.
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.
Pilih tab Pengaturan HTTP di bawah SETELAN.
Pilih pengaturan HTTP, dan pada halaman Tambahkan pengaturan HTTP, periksa apakah afinitas berbasis Cookie diaktifkan.
Anda juga bisa memeriksa nilai"CookieBasedAffinity"diatur ke Diaktifkandi bawah "backendHttpSettingsCollection" dengan menggunakan salah satu metode berikut:
- Jalankan Get-AzApplicationGatewayBackendHttpSetting di PowerShell
- Lihat file JSON menggunakan templat Azure Resource Manager
"cookieBasedAffinity": "Enabled",
Aplikasi Anda tidak dapat menangani afinitas berbasis cookie
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.
Aplikasi menggunakan afinitas berbasis cookie tetapi permintaan masih memantul di antara server backend
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:
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.
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:
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.
Di portal Azure, temukan sumber daya Anda lalu pilih Pengaturan diagnostik.
Untuk Application Gateway, tiga log tersedia: Log akses, Log performa, dan log Firewall.
Untuk mulai mengumpulkan data, pilih Tambahkan pengaturan diagnostik.
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.
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:
Unduh Fiddler.
Catatan
Pilih Fiddler4 jika komputer yang menangkap telah dipasang .NET 4. Jika tidak, pilih Fiddler2.
Klik kanan pengaturan yang dapat dieksekusi, dan jalankan sebagai admin untuk memasang.
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.
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".
Anda dapat menghapus sesi yang tidak terkait sebelumnya sebelum mereproduksi masalah dengan mengklik X (ikon)> Hapus Semua sebagai cuplikan layar berikut:
Setelah Anda mereproduksi masalah, simpan file untuk ditinjau dengan memilih Simpan>File>Semua Sesi...
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.
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.
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.