Bagikan melalui


Penyeimbangan Beban HTTP menggunakan Perutean Permintaan Aplikasi

oleh Tim IIS

Gambaran Umum

Topik ini mengarahkan pembaca melalui langkah-langkah untuk mengonfigurasi Perutean Permintaan Aplikasi untuk menyeimbangkan beban permintaan HTTP untuk mencapai ketersediaan dan skalabilitas tinggi. Panduan ini juga menyoroti beberapa fitur inti tentang bagaimana Perutean Permintaan Aplikasi memantau kesehatan server konten dan menfinisikan permintaan dari klien ke server konten.

Goal

Untuk memuat permintaan HTTP keseimbangan di beberapa server konten menggunakan Perutean Permintaan Aplikasi, seperti yang ditunjukkan di bawah ini:

Diagram Perutean Permintaan Aplikasi di beberapa server konten.

Prasyarat

Panduan ini memerlukan prasyarat berikut:

  • IIS 7.0 atau lebih tinggi pada Windows 2008 (SKU apa pun) atau yang lebih baru.
  • Perutean Permintaan Aplikasi Microsoft Versi 1 dan modul dependen.
  • Minimal dua server konten dengan situs dan aplikasi yang berfungsi.

Ikuti langkah-langkah yang diuraikan dalam dokumen ini untuk menginstal Perutean Permintaan Aplikasi.

Prasyarat lain adalah bahwa pembaca telah menentukan dan mengonfigurasi farm server menggunakan langkah-langkah yang diuraikan dalam Menentukan dan Mengonfigurasi Grup Server Perutean Permintaan Aplikasi (ARR).

Langkah 1 - Verifikasi aturan penulisan ulang URL

Asalkan farm server telah dibuat menggunakan langkah-langkah yang diuraikan dalam Menentukan dan Mengonfigurasi Grup Server Perutean Permintaan Aplikasi (ARR), aturan penulisan ulang URL telah dibuat untuk skenario penyeimbangan beban sederhana.

Untuk memverifikasi aturan penulisan ulang URL menggunakan UI:

  1. Luncurkan Manajer IIS.
  2. Pilih farm server, myServerFarm, yang dibuat di Menentukan dan Mengonfigurasi Grup Server Perutean Permintaan Aplikasi (ARR).
  3. Ikon berikut diperlihatkan:
    Cuplikan layar Farm Server. Ikon Uji Kesehatan, Ikon Keseimbangan Beban, ikon Pemantauan dan Manajemen, ikon Proksi, ikon Aturan Perutean, dan ikon Afinitas Server.
  4. Klik ganda Aturan Perutean.
  5. Verifikasi bahwa kotak centang Gunakan Penulisan Ulang URL untuk memeriksa permintaan masuk dicentang.
    Cuplikan layar halaman Aturan Perutean. Kotak centang di samping Gunakan Penulisan Ulang U R L untuk memeriksa permintaan masuk dan Mengaktifkan offloading S S L keduanya dicentang.
  6. Offloading SSL diaktifkan secara default. Ketika fitur ini diaktifkan, semua komunikasi antara server ARR dan server aplikasi dilakukan dalam teks yang jelas, bahkan untuk permintaan HTTPS dari klien ke server ARR. Ketika server ARR dan server aplikasi disebarkan dalam jaringan tepercaya, seperti dalam pusat data yang sama, mengaktifkan offloading SSL tidak mengorbankan keamanan. Selain itu, mengaktifkan fitur ini lebih lanjut dapat membantu memaksimalkan sumber daya server di server aplikasi, karena mereka tidak perlu menghabiskan siklus dalam mengenkripsi dan mendekripsi permintaan dan respons.
    Untuk menonaktifkan offloading SSL, hapus centang pada kotak centang Aktifkan offloading SSL, lalu klik Terapkan.
  7. Buka browser dan kirim beberapa permintaan ke server ARR.
  8. Untuk memverifikasi bahwa permintaan sedang diseimbangkan bebannya secara merata antara server aplikasi, pilih myServerFarm. Klik ganda Pemantauan dan Manajemen.
    Cuplikan layar Farm Server. Ikon Pemantauan dan Manajemen ditampilkan di antara ikon lainnya.
  9. Dalam tampilan dasbor, verifikasi bahwa permintaan didistribusikan secara merata.
    Cuplikan layar halaman fitur Pemantauan dan Manajemen. Statistik runtime Perutean Permintaan Aplikasi ditampilkan.

Untuk memverifikasi aturan penulisan ulang URL menggunakan baris perintah:

  1. Buka prompt perintah dengan hak istimewa administrator .

  2. Buka %windir%\system32\inetsrv.

  3. Untuk memverifikasi bahwa aturan penulisan ulang URL telah dibuat dengan benar, masukkan konfigurasi daftar appcmd.exe -section:system.webServer/rewrite/globalRules. Ini mengembalikan globalRules yang terlihat seperti berikut ini:

    <system.webServer>
        <rewrite>
            <globalRules>
                <rule name="ARR_myServerFarm_loadbalance" patternSyntax="Wildcard"
                stopProcessing="true">
                    <match url="*" />
                    <conditions>
                    </conditions>
                    <action type="Rewrite" url="http://myServerFarm/{R:0}" />
                </rule>
            </globalRules>
        </rewrite>
    </system.webServer>
    
  4. Untuk menonaktifkan offloading SSL, pertama-tama hapus semua aturan penulisan ulang URL:

    appcmd.exe clear config -section:system.webServer/rewrite/globalRules
    

    Kemudian, buat aturan penulisan ulang URL untuk meneruskan lalu lintas HTTPS. Lebih khusus lagi, dengan aturan ini, ARR meneruskan permintaan menggunakan SSL jika permintaan masuk adalah HTTPS:

    appcmd.exe set config -section:system.webServer/rewrite/globalRules
    /+"[name='ARR_myServerFarm_loadbalance_SSL',patternSyntax='Wildcard',stopProcessing='True']"
    /commit:apphost
    
    appcmd.exe set config -section:system.webServer/rewrite/globalRules
    /[name='ARR_myServerFarm_loadbalance_SSL',patternSyntax='Wildcard',stopProcessing='True'].match.url:"*"
    /commit:apphost
    
    appcmd.exe set config -section:system.webServer/rewrite/globalRules
    /+"[name='ARR_myServerFarm_loadbalance_SSL',patternSyntax='Wildcard',stopProcessing='True'].conditions.[input='{HTTPS}',pattern='On']"
    /commit:apphost
    
    appcmd.exe set config -section:system.webServer/rewrite/globalRules
    /[name='ARR_myServerFarm_loadbalance_SSL',patternSyntax='Wildcard',stopProcessing='True'].action.type:"Rewrite"
    /[name='ARR_myServerFarm_loadbalance_SSL',patternSyntax='Wildcard',stopProcessing='True'].action.url:"https://myServerFarm/{R:0}"
    /commit:apphost
    

    Terakhir, buat aturan penulisan ulang URL untuk meneruskan lalu lintas HTTP dalam teks yang jelas ke server aplikasi:

    appcmd.exe set config -section:system.webServer/rewrite/globalRules
    /+"[name='ARR_myServerFarm_loadbalance',patternSyntax='Wildcard',stopProcessing='True']"
    /commit:apphost
    
    appcmd.exe set config -section:system.webServer/rewrite/globalRules
    /[name='ARR_myServerFarm_loadbalance',patternSyntax='Wildcard',stopProcessing='True'].match.url:"*"
    /commit:apphost
    
    appcmd.exe set config -section:system.webServer/rewrite/globalRules
    /[name='ARR_myServerFarm_loadbalance',patternSyntax='Wildcard',stopProcessing='True'].action.type:"Rewrite"
    /[name='ARR_myServerFarm_loadbalance',patternSyntax='Wildcard',stopProcessing='True'].action.url:"http://myServerFarm/{R:0}"
    /commit:apphost
    
  5. Untuk memverifikasi bahwa aturan penulisan ulang URL telah dibuat dengan benar dengan offloading SSL dinonaktifkan, masukkan daftar appcmd.exe konfigurasi -section:system.webServer/rewrite/globalRules. Ini mengembalikan globalRules yang terlihat seperti berikut ini:

    <system.webServer>
        <rewrite>
            <globalRules>
                <rule name="ARR_myServerFarm_loadbalance_SSL" patternSyntax="Wildcard"
                stopProcessing="true">
                    <match url="*" />
                    <conditions>
                    <add input="{HTTPS}" pattern="On" />
                    </conditions>
                    <action type="Rewrite" url="https://myServerFarm/{R:0}" />
                </rule>
                <rule name="ARR_myServerFarm_loadbalance" patternSyntax="Wildcard"
                stopProcessing="true">
                    <match url="*" />
                    <conditions>
                    </conditions>
                    <action type="Rewrite" url="http://myServerFarm/{R:0}" />
                </rule>
            </globalRules>
        </rewrite>
    </system.webServer>
    

Langkah 2 - Mengonfigurasi pemantauan pemeriksaan kesehatan

Perutean Permintaan Aplikasi memantau kesehatan server konten dengan dua cara:

  • Melalui lalu lintas langsung
  • Melalui pengujian URL eksplisit

Pengujian lalu lintas langsung dilakukan secara otomatis secara default saat permintaan dibuat ke Perutean Permintaan Aplikasi. Pengujian URL eksplisit adalah pengujian tambahan yang dapat digunakan dengan pengujian lalu lintas langsung. Di bagian ini, panduan memandu Anda mengonfigurasi pengujian URL eksplisit.

Untuk mengonfigurasi pemantauan pemeriksaan kesehatan menggunakan UI:

  1. Pengujian URL memerlukan URL tertentu untuk diuji. Untuk memenuhi persyaratan ini, gunakan Notepad untuk membuat file teks bernama healthCheck.txt yang berisi kalimat "Saya sehat."
  2. Tempatkan file healthCheck.txt di server aplikasi.
  3. Verifikasi bahwa healthCheck.txt dirender dengan benar dengan membuka halaman di browser.
  4. Di Manajer IIS, pilih farm server, myServerFarm. Ikon berikut diperlihatkan:
    Cuplikan layar Farm Server. Ikon Uji Kesehatan, Ikon Keseimbangan Beban, ikon Pemantauan dan Manajemen, dan ikon lainnya.
  5. Klik dua kali Tes Kesehatan.
    Cuplikan layar halaman fitur Uji Kesehatan. Uji U R L ditampilkan.
  6. Masukkan http://(server name or FQDN of ARR server)/healthCheck.txt sebagai nilai URL .
  7. Masukkan sehat sebagai nilai Kecocokan respons. Kecocokan respons adalah pengujian opsional untuk memastikan bahwa isi respons berisi string yang diharapkan. Dalam hal ini, karena healthCheck.txt berisi kalimat "Saya sehat.", Kecocokan respons akan mencari kata "sehat".
  8. Klik Terapkan untuk menyimpan perubahan.
  9. Untuk memverifikasi fungsionalitas pemantauan pemeriksaan kesehatan, hentikan situs yang dipantau di salah satu server aplikasi. Karena nilai Interval (detik) diatur ke 30 detik, tunggu selama 30 detik untuk pemeriksaan kesehatan berikutnya.
  10. Setelah menunggu selama 30 detik, kirim beberapa permintaan ke server ARR.
  11. Untuk memverifikasi bahwa semua permintaan masuk ke server yang sehat, klik dua kali Pemantauan dan Manajemen, lalu refresh dasbor dengan menggunakan kunci F5. Perhatikan bahwa statistik runtime telah direset. Ini memang disengaja. Anda mungkin ingin mengirim permintaan tambahan dan merefresh dasbor, sesuai kebutuhan.
    Cuplikan layar halaman fitur Pemantauan dan Manajemen. Statistik runtime ditampilkan.
  12. Pemantauan kesehatan juga digunakan untuk mendeteksi kapan server yang tidak sehat menjadi sehat. Untuk memverifikasi fungsionalitas ini, mulai situs yang dihentikan di Langkah 9. Sekali lagi, karena nilai Interval (detik) diatur ke 30 detik, tunggu selama 30 detik untuk pemeriksaan kesehatan berikutnya.
  13. Setelah menunggu selama 30 detik, kirim beberapa permintaan ke server ARR.
  14. Untuk memverifikasi bahwa permintaan didistribusikan secara merata antar server, refresh dasbor di IIS Manager. Perhatikan bahwa statistik runtime telah direset. Ini memang disengaja. Anda mungkin ingin mengirim permintaan tambahan dan merefresh dasbor, sesuai kebutuhan.

Untuk mengonfigurasi pemantauan pemeriksaan kesehatan menggunakan baris perintah:

  1. Buka prompt perintah dengan hak istimewa administrator .

  2. Buka %windir%\system32\inetsrv.

  3. Untuk mengatur URL ke http://(server name or FQDN of ARR server)/healthCheck.txt dengan saya sehat. sebagai string yang cocok, masukkan:

    appcmd.exe set config -section:webFarms
    /[name='myServerFarm1'].applicationRequestRouting.healthCheck.url:"http://(server
    name or FQDN of ARR server)/healthCheck.txt "
    /[name='myServerFarm1'].applicationRequestRouting.healthCheck.responseMatch:"I am
    healthy." /commit:apphost
    

Langkah 3 - Mengonfigurasi afinitas klien

Perutean Permintaan Aplikasi menyediakan fitur afinitas klien yang memetakan klien ke server konten di belakang Perutean Permintaan Aplikasi selama durasi sesi klien. Ketika fitur ini diaktifkan, algoritma penyeimbangan beban hanya diterapkan untuk permintaan pertama dari klien. Sejak saat itu, semua permintaan berikutnya dari klien yang sama akan dirutekan ke server konten yang sama selama durasi sesi klien. Fitur ini berguna jika aplikasi di server konten bersifat stateful dan permintaan klien harus dirutekan ke server konten yang sama karena manajemen sesi tidak terpusat.

Untuk mengonfigurasi afinitas klien menggunakan UI:

  1. Luncurkan Manajer IIS.
  2. Pilih farm server, myServerFarm, yang dibuat di Menentukan dan Mengonfigurasi Grup Server Perutean Permintaan Aplikasi (ARR).
  3. Ikon berikut diperlihatkan:
    Cuplikan layar kotak dialog Farm Server dan Ikon yang ditemukan di Grup Server.
  4. Klik dua kali Afinitas Server.
  5. Untuk mengaktifkan afinitas klien, centang kotak Afinitas klien, lalu klik Terapkan.
    Cuplikan layar halaman fitur Afinitas Server. Kotak centang di samping Afinitas klien ditampilkan. Dalam kotak Nama cookie, teks A Afinitas R R ditampilkan.
    Perutean Permintaan Aplikasi menggunakan cookie untuk mengaktifkan afinitas klien. Nama Cookie akan digunakan untuk mengatur cookie pada klien. Meskipun demikian, klien harus menerima cookie agar afinitas klien berfungsi dengan baik.
  6. Untuk memverifikasi fungsionalitas afinitas klien, kirim beberapa permintaan ke server ARR. Refresh dasbor di Manajer IIS (Pemantauan dan Manajemen). Verifikasi bahwa statistik runtime hanya berubah untuk salah satu server aplikasi ke tempat klien diafinisiskan. Anda mungkin ingin mengirim permintaan tambahan dan merefresh dasbor, sesuai kebutuhan.

Untuk mengonfigurasi afinitas klien menggunakan baris perintah:

  1. Buka prompt perintah dengan hak istimewa administrator .

  2. Buka %windir%\system32\inetsrv.

  3. Untuk mengaktifkan afinitas klien, masukkan:

    appcmd.exe set config -section:webFarms
    /[name='myServerFarm1'].applicationRequestRouting.affinity.useCookie:"True"
    /commit:apphost
    

Langkah 4 - Melarang koneksi baru

Melarang koneksi baru di server adalah cara yang anggun untuk mengeluarkan server dari lingkungan farm server. Ini lebih bermakna ketika fitur afinitas klien sedang digunakan, karena Perutean Permintaan Aplikasi akan menghormati sesi yang ada saat melarang koneksi baru. Artinya, ketika klien diafinisiskan ke server yang melarang koneksi baru, klien akan terus dirutekan ke server yang sama dan, oleh karena itu, tidak ada dampak pada klien. Namun, tidak ada klien baru yang akan dirutekan ke server yang melarang koneksi baru.

Untuk melarang koneksi baru menggunakan UI:

  1. Dengan menggunakan penyiapan dari Langkah 3 di atas, identifikasi server tempat klien Anda difinisikan.
  2. Pilih farm server, myServerFarm, yang dibuat di Menentukan dan Mengonfigurasi Grup Server Perutean Permintaan Aplikasi (ARR).
  3. Ikon berikut diperlihatkan:
    Cuplikan layar Farm Server. Ikon Uji Kesehatan, Ikon Keseimbangan Beban, ikon Pemantauan dan Manajemen, ikon Proksi, dan ikon lain yang ditemukan di Farm Server.
  4. Klik ganda Pemantauan dan Manajemen.
  5. Pilih server tempat klien Anda difinisikan. Di panel Tindakan, klik Larang Koneksi baru.
  6. Dalam kotak dialog konfirmasi, klik Ya.
    Cuplikan layar kotak dialog Perutean Permintaan Aplikasi. Teks Yakin ingin melarang sambungan baru ke server terpilih? ditampilkan. Opsi Ya disorot.
  7. Untuk memverifikasi bahwa permintaan dari klien Anda terus dirutekan ke server yang diafinisikan, yang sekarang melarang koneksi baru, kirim beberapa permintaan ke server ARR. Refresh dasbor di IIS Manager. Verifikasi bahwa statistik runtime hanya berubah untuk server ke tempat klien diafinisiskan. Anda mungkin ingin mengirim permintaan tambahan dan merefresh dasbor, sesuai kebutuhan.
  8. Untuk memverifikasi bahwa klien baru tidak dirutekan ke server yang melarang koneksi baru, hapus cookie yang ditetapkan oleh Perutean Permintaan Aplikasi dengan menutup dan memulai ulang browser.
  9. Kirim beberapa permintaan ke server ARR. Refresh dasbor di IIS Manager. Verifikasi bahwa statistik runtime hanya berubah untuk server yang Tersedia. Lebih khusus lagi, verifikasi bahwa statistik runtime untuk serveryang melarang koneksi baru tidak diubah. Anda mungkin ingin mengirim permintaan tambahan dan merefresh dasbor, sesuai kebutuhan.

Ringkasan

Anda sekarang telah berhasil mengonfigurasi sejumlah pengaturan untuk Perutean Permintaan Aplikasi untuk memperluas skala dan mendistribusikan beban secara merata. Untuk kemampuan perutean yang lebih canggih menggunakan Perutean Permintaan Aplikasi, lihat Menggunakan Perutean Permintaan Aplikasi.