Solusi MSFT resmi untuk menyeimbangkan beban antara server web Windows di tambak IIS adalah ekstensi Aplikasi Permintaan Routing (ARR). Dalam artikel ini, kami akan mempertimbangkan skema di mana, sebagai penyeimbang beban antara server web Layanan Informasi Internet (IIS versi 8.0 dan lebih tinggi), proxy HTTP / reverse Nginx yang terbukti akan digunakan.
Nginx Ini adalah server HTTP yang sederhana, cepat, dan andal. Menggunakan Nginx disarankan terutama untuk situs web statis dan sebagai proxy terbalik di depan situs dinamis yang sangat dimuat. Nginx memungkinkan Anda untuk dengan cepat memproses permintaan statis, melakukan caching proxy dan mengimplementasikan fitur-fitur penyeimbangan beban sederhana.
Kiat. Kelemahan utama dari Application Request Routing (ARR) dibandingkan dengan Nginx adalah bahwa ia tidak memungkinkan Anda untuk melacak permintaan HTTP untuk banyak situs dan memerlukan lisensi tambahan untuk Windows.Dalam contoh kami, web farm terdiri dari dua server IIS berbasis Windows Server 2012. Server Linux dengan Nginx yang terinstal akan bertindak sebagai server front-end. Jika perlu, konfigurasi ini dapat dengan mudah ditingkatkan dengan menambahkan jumlah server IIS yang diperlukan. Nginx mampu menyembunyikan banyak server web backend di belakangnya sendiri, mendistribusikan permintaan di antara mereka menggunakan berbagai aturan. Menambah atau menghapus server IIS dari tambak semacam itu tidak memengaruhi ketersediaan situs dari sudut pandang pengguna.
Konfigurasikan Server Web di Peternakan IIS
Pertama-tama, Anda harus menginstal peran IIS di kedua server web Windows. Tugas dilakukan menggunakan konsol. Manajer server atau dengan Powerhell:
import-module servermanager
Instal-WindowsFeature -Name Web-Server, Web-Mgmt-Tools
Pada server terpisah, server file Windows, buat dua folder jaringan:
- Yang pertama akan menyimpan konfigurasi IIS umum - \\ file-srv1 \ iis_config
- Kedua - file situs - \\ file-srv1 \ iis_site
Dalam izin kedua folder publik, tambahkan grup Semuanya dengan hak Kontrol Penuh.
Kemudian di kedua situs Anda perlu menginstal ekstensi Pembantu ARR, yang akan memungkinkan Anda untuk menggunakan alamat pengunjung yang benar di header IIS (jika tidak, alamat ip server dengan Nginx akan selalu ditunjukkan di sana). Ekstensi ini adalah bagian dari Paket Routing Permintaan Aplikasi IIS (ARR) 3.0 dan setelah menginstal yang terakhir di server mana pun, distribusinya requestrouterhelper_x64.msi dapat disalin secara manual dari direktori% ProgramFiles% \ IIS \ Application Routing Permintaan.
Setelah menginstal IIS, salin isi direktori c: \ inetpub \ wwwroot ke folder jaringan \\ file-srv1 \ iis_site. Setelah itu, di konsol manajemen IIS, pilih situs DefaultWebSite dan buka pengaturannya (Pengaturan dasar) dengan menentukan di lapangan Jalan fisik jalur folder jaringan.
Konfigurasikan situs sesuai dengan persyaratan Anda, verifikasi bahwa situs itu terbuka dan berfungsi dengan benar. Kemudian, buka bagian itu Konfigurasi bersama dan klik tombolnya Konfigurasi ekspor.
Tentukan jalur lengkap ke folder jaringan tempat konfigurasi IIS akan disimpan, dan tentukan kata sandi untuk kunci enkripsi.
Aktifkan opsi Aktifkan konfigurasi bersama, dan tentukan jalur ke berbagi jaringan dengan konfigurasi IIS. Klik Terapkan dan masukkan kata sandi.
Kemudian tentukan akun tempat kumpulan IIS harus dimulai. Selain itu, akun ini juga harus memiliki hak RW untuk mengakses direktori jaringan yang dijelaskan sebelumnya (sebagai aturan, akun layanan domain khusus atau akun layanan grup gMSA digunakan). Untuk melakukan ini, buka bagian Otentikasi IIS dan ubah pengaturan Otentikasi Anonim dengan nama pengguna.
Coba buka situsnya. Jika semuanya berfungsi, lanjutkan ke langkah berikutnya..
Sekarang Anda perlu mengkonfigurasi server kedua dengan cara yang sama. Instal ARRhelper, sambungkan konfigurasi IIS umum dari folder jaringan, tentukan akun untuk memulai kumpulan.
Mengkonfigurasi load balancing pada Nginx
Setelah konfigurasi server web IIS selesai, Anda dapat melanjutkan untuk mengkonfigurasi Nginx.
Instal nginx dengan perintah:sudo apt-get install nginx
Setelah instalasi, edit file konfigurasi / etc / nginx / situs-enabled / default
Dalam kasus kami, kami mendapat konfigurasi berikut:
# daftar server web IIS di mana Anda perlu mendistribusikan beban
web_servers hulu
server 192.168.1.13;
server 192.168.1.14;
# port
server
dengarkan 80;
lokasi /
proxy_pass http://winitpro.ru;
# kustomisasi tajuk
proxy_set_header X-proxy 192.168.1.12;
proxy_set_header Host $ host;
proxy_set_header X-Real-IP $ remote_addr;
proxy_set_header X-Forwarded-For $ remote_addr;
proxy_set_header skema X-Forwarded-Proto $;
# Kesalahan di mana nginx harus beralih ke server berikutnya
proxy_next_upstream batas waktu kesalahan invalid_header http_500 http_404;
proxy_set_header X-Client-IP $ remote_addr;
Simpan file dan mulai ulang nginx:
sudo /etc/init.d/nginx restart
Tetap mengkonfigurasi catatan DNS situs agar mengarah ke alamat ip server nginx dan memastikan bahwa permintaan didistribusikan antara server web menggunakan algoritma round robin.