Pecahkan masalah afinitas sesi Azure Application Gateway

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

Catatan

Artikel ini telah diperbarui dan menggunakan modul Azure Az PowerShell. Modul Az PowerShell adalah modul PowerShell yang disarankan untuk berinteraksi dengan Azure. Untuk mulai menggunakan modul Az PowerShell, lihat Menginstal Azure PowerShell. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.

Gambaran Umum

Fitur afinitas sesi berbasis cookie akan berguna saat Anda ingin mempertahankan sesi pengguna pada 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.

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 ujung belakang

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 di Filter berdasarkan nama... kotak untuk mengakses gateway aplikasi dengan mudah.

  3. Pilih tab Pengaturan HTTP di bawah SETELAN.

    Cuplikan layar menampilkan PENGATURAN dengan pengaturan H T T P dipilih.

  4. Klik appGatewayBackendHttpSettings pada sisi kanan untuk memeriksa apakah Anda sudah memilih Aktifkan untuk Afinitas berbasis cookie.

    Cuplikan layar menampilkan pengaturan gateway untuk gateway aplikasi, termasuk apakah Afinitas berbasis cookie dipilih.

Anda juga bisa memeriksa nilai "CookieBasedAffinity" diatur ke Diaktifkan di 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, ketika Anda mengakses Application Gateway dengan menggunakan URL singkat di Internet Explorer, misalnya: http://website, permintaan masih memantul di antara server ujung belakang.

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 memastikan apakah cookie yang disediakan oleh klien memiliki detail ARRAffinity. Jika Anda tidak menemukan detail ARRAffinity, seperti "ARRAffinity= ARRAffinityValue" dalam set cookie, itu berarti klien tidak membalas dengan cookie ARRA, yang disediakan oleh Application Gateway. Contohnya:

    Cuplikan layar menampilkan log sesi dengan satu entri yang disorot.

    Cuplikan layar menampilkan header permintaan untuk H T T P, termasuk informasi cookie.

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 melalui portal Microsoft Azure

  1. Di portal Microsoft Azure, temukan sumber daya Anda lalu klik Log diagnostik.

    Untuk Application Gateway, tersedia tiga log: Log akses, Log performa, Log firewall

  2. Untuk mulai mengumpulkan data, klik Aktifkan diagnostik.

    Cuplikan layar menampilkan gateway aplikasi dengan log Diagnostik dipilih.

  3. Bilah Pengaturan diagnostik menyediakan pengaturan untuk log diagnostik. Pada contoh ini, Log Analitik menyimpan log. Klik Konfigurasikan di bawah Log Analitik untuk mengatur ruang kerja Anda. Anda juga dapat menggunakan hub peristiwa dan akun penyimpanan untuk menyimpan log diagnostik.

    Cuplikan layar menampilkan panel pengaturan Diagnostik dengan Konfigurasi Analitik Log dipilih.

  4. Konfirmasi pengaturan dan lalu klik Simpan.

    Cuplikan layar memperlihatkan panel pengaturan Diagnostik dengan Simpan dipilih.

Tampilkan dan analisis log akses Application Gateway

  1. Pada portal Microsoft Azure di bawah tampilan sumber daya Applicaiton Gateway, pilih Log diagnostik di bagian PEMANTAUAN.

    Cuplikan layar memperlihatkan PEMANTAUAN dengan log Diagnostik dipilih.

  2. Di sisi kanan, pilih "ApplicationGatewayAccessLog" di daftar menurun di bawah Kategori log.

    Cuplikan layar memperlihatkan daftar menurun Kategori log dengan ApplicationGatewayAccessLog dipilih.

  3. Di daftar Log Akses Application Gateway, klik log yang ingin Anda analisis dan ekspor, lalu ekspor file JSON.

  4. Konversikan file JSON yang Anda ekspor pada langkah 3 ke file CSV dan tampilkan di Excel, Power BI, atau alat visualisasi data lainnya.

  5. Periksa data berikut:

  • ClientIP– Ini adalah alamat IP klien dari klien penghubung.

  • ClientPort - Ini adalah port sumber data dari klien penghubung untuk permintaan tersebut.

  • RequestQuery - Ini menunjukkan kepada server tujuan bahwa permintaan diterima.

  • Server-Routed: Instans kumpulan ujung belakang yang dikirim permintaan.

  • X-AzureApplicationGateway-LOG-ID: ID korelasi yang digunakan untuk permintaan tersebut. ID korelasi ini dapat digunakan untuk memecahkan masalah lalu lintas di server ujung belakang. Misalnya: X-AzureApplicationGateway-CACHE-HIT=0&SERVER-ROUTED=10.0.2.4.

    • SERVER-STATUS: Kode respons HTTP yang diterima Application Gateway dari ujung-belakang.

    Cuplikan layar memperlihatkan status server dalam teks biasa, sebagian besar tidak jelas, dengan clientPort dan SERVER-ROUTED disorot.

Jika Anda melihat dua item yang berasal dari ClientIP dan ClientPort yang sama, dan mereka dikirim ke server ujung belakang yang sama, itu berarati Application Gateway dikonfigurasi dengan benar.

Jika Anda melihat dua item berasal dari ClientIP dan Client Port yang sama, dan mereka dikirim ke server ujung belakang yang berbeda, itu berarti permintaan memantul di antara server ujung belakang, pilih "Aplikasi menggunakan afinitas berbasis cookie tetapi permintaan masih memantul di antara server ujung belakang" di bagian bawah untuk mengatasinya.

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 alat Fiddler di https://www.telerik.com/download/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.

    Cuplikan layar memperlihatkan program konfigurasi alat Fiddler dengan menu konteks dengan Jalankan sebagai admin dipilih.

  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.

    Cuplikan layar memperlihatkan Debugger Web Fiddler dengan indikator Menangkap disorot.

  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".

    Cuplikan layar memperlihatkan Opsi di Fiddler dengan H T T P dipilih dan lalu lintas HTTPS Dekripsi dipilih.

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

    Cuplikan layar memperlihatkan ikon X dipilih, yang menampilkan opsi Hapus semua.

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

    Cuplikan layar memperlihatkan opsi Simpan File Semua Sesi dipilih.

  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 pastikan apakah klien menerima "Set-Cookie: ARRAffinity= ARRAffinityValue. " Jika tidak ada cookie, afinitas sesi belum diatur, atau App Gateway tidak menerapkan cookie kembali ke klien.

    Catatan

    Nilai ARRAffinity ini adalah cookie-id, yang ditetapkan App Gateway untuk klien yang akan dikirim ke server ujung-belakang tertentu.

    Cuplikan layar memperlihatkan contoh detail entri log dengan nilai Set-Cookie disorot.

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

    Cuplikan layar memperlihatkan contoh detail entri log dengan nilai cookie disorot.

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.