


Bagaimana Nginx menggunakan ngx_http_upstream_module untuk melaksanakan fungsi pengimbangan beban
Pengenalan kepada Pengimbangan Beban
Apakah itu Pengimbangan Beban
Imbangan Beban bermaksud membahagikan beban (tugas kerja, Permintaan akses) adalah seimbang dan diedarkan kepada berbilang unit operasi (pelayan, komponen) untuk pelaksanaan.
Mengapa pengimbangan beban diperlukan
Apabila pelayan web tunggal menghadap pengguna secara langsung, ia mungkin membawa sejumlah besar permintaan serentak Satu pelayan mungkin sukar untuk dimuatkan pelayan web untuk membentuk Kluster menggunakan fungsi pengimbangan beban Nginx untuk mengedarkan permintaan kepada pelayan bahagian belakang yang berbeza untuk mencapai pengagihan trafik beban, meningkatkan prestasi keseluruhan dan keupayaan pemulihan bencana sistem.
Apakah perbezaan antara pengimbangan beban dan proksi
Proksi ialah proksi untuk pelayan menjadualkan berdasarkan URI dan jadual ke aplikasi nod dengan fungsi berbeza
Pengimbangan beban adalah untuk memproksi permintaan klien kepada set kumpulan sumber huluan melalui proxy_pass
Untuk mencapai senario pengimbangan beban
Untuk mencapai beban Fungsi pengimbangan memerlukan penggunaan dua modul:
proxy_pass: modul proksi
upstream: sumber maya pool
Contoh: Demonstrasi pengimbangan beban rasmi
upstream backend { server backend1.example.com weight=5; server backend2.example.com:8080; server unix:/tmp/backend3; server backup1.example.com:8080 backup; server backup2.example.com:8080 backup; } server { location / { proxy_pass http://backend; } }
Contoh: Lengkapkan contoh kecil sendiri
upstream node { server 192.168.10.3:80; server 192.168.10.4:80; } server { listen 80; server_name www.yyang.com; location / { proxy_pass http://node; include prxoy_params; } }
Algoritma penjadualan pengimbangan beban
Penjadualan pengundian
diperuntukkan kepada nod hujung belakang yang berbeza satu demi satu mengikut tertib, yang juga merupakan algoritma lalai. (Ringkasnya, ia adalah 1:1:1)
Tinjauan berwajaran
Memandangkan prestasi berbeza pelayan yang berbeza, pemberat yang berbeza diberikan kepada nod supaya mereka boleh menerima sepadan Bilangan permintaan berat
server 192.168.10.3:80 weight=3; server 192.168.10.4:80 weight=1;
Contoh di atas bermakna setiap 4 permintaan akan diperuntukkan kepada tiga permintaan untuk 10.3 dan satu untuk 10.4, dan kitaran diteruskan.
ip_hash
Menurut IP yang diminta oleh pengguna, lakukan operasi cincang pada IP dan tetapkan permintaan itu kepada nod belakang khusus untuk pemprosesan berasaskan pada nilai yang dikira.
Julat nilai ialah tiga 8 bit pertama alamat ipv4 atau keseluruhan alamat ipv6 sebagai kunci cincang, memastikan bahawa IP daripada satu pelanggan sentiasa dihantar ke pelayan yang sama, melainkan pelayan kedua tidak tersedia. Ringkasnya, tiga set nombor pertama 172.16.20.1 dan 172.16.20.2 adalah sama (semua 172.16.20)
formula operasi ip_hash: hash (ip) %node_counts=index
Masalah yang disebabkan oleh ip_hash:
Sebilangan besar permintaan untuk IP yang sama akan menyebabkan trafik yang berlebihan pada nod
Jika nod di luar talian buat sementara waktu, nilai cincang akan dikira semula nyatakan
Contoh : Ambil perhatian bahawa ip_hash dan berat tidak boleh digunakan pada masa yang sama
ip_hash; server 192.168.10.3:80; server 192.168.10.4:80;
Hash yang konsisten
Untuk mengelakkan masalah di atas, pencincangan yang konsisten telah dilahirkan, menggunakan kaedah modulo, tetapi ia tidak betul Bilangan nod pelayan adalah modulo, tetapi modulo 2 dinaikkan kepada kuasa ke-32 Nilai fungsi cincang ialah 0~2^32-1. (Membentuk gelang maya, permintaan pengguna akan dihantar ke nod bersebelahan mengikut arah jam)
Terdapat masalah: jika terdapat kurang nod hujung belakang, ia boleh menyebabkan data condong, jadi pencincangan yang konsisten memperkenalkan mekanisme nod maya, iaitu , untuk Setiap pelayan mengira berbilang cincangan dan meletakkan nod maya pada setiap lokasi hasil yang dikira.
Apakah yang perlu kita lakukan jika kita ingin menggunakan ip_hash, tetapi formula pengiraan menggunakan cincang yang konsisten?
hash $remote_addr consistent; server 192.168.10.3:80; server 192.168.10.4:80;
url_hash
Berbilang cincang berdasarkan url pengguna dan tetapkan permintaan kepada pelayan bahagian belakang tertentu berdasarkan nilai operasi.
1. Pengguna meminta pengimbangan beban nginx Melalui algoritma url, permintaan dijadualkan untuk cache1
2. Jika cache1 tidak mempunyai data, ia akan memperoleh data dari bahagian belakang, mengembalikan data, dan cache data
3 Apabila Apabila pengguna lain mengakses URL yang sama, penjadual masih akan menjadualkan ke nod cache1
4.cache1 akan terus mengembalikan data kepada
hash $request_uri consistent; server 192.168.10.3:80; server 192.168.10.4:80;
least_conn
pelayan mana Jika bilangan sambungan paling sedikit, permintaan akan dihantar ke pelayan ini
least_conn; server 192.168.10.3:80; server 192.168.10.4:80;
Status nod hujung belakang pengimbangan beban
turun
Tandai nod pelayan sebagai status tidak tersedia, biasanya digunakan untuk penyelenggaraan penutupan.
server 192.168.10.3:80 down; server 192.168.10.4:80;
sandaran
Nod sandaran, nod ini tidak akan dijadualkan dalam keadaan biasa apabila semua nod yang berfungsi normal tidak tersedia, nod ini akan didayakan; pulih, nod ini Nod akan terus kembali ke status siap sedia.
server 192.168.10.3:80; server 192.168.10.4:80; server 192.168.10.5:80 backup;
max_conns
digunakan untuk mengehadkan bilangan maksimum sambungan TCP yang diterima oleh setiap nod hujung belakang Jika melebihi had, ralat akan dilemparkan.
server 192.168.10.3:80 max_conns=10; server 192.168.10.4:80 max_conns=10;
Seorang boleh menyambung 10. Dua boleh menyambung 20. Jika melebihi 20, ralat akan berlaku.
keeplived
Aktifkan cache dengan pelayan bahagian belakang, yang merupakan pautan panjang, untuk meningkatkan daya pemprosesan tapak web.
Fungsi ini tidak didayakan secara lalai Apabila terdapat permintaan, sambungan akan diwujudkan, dikekalkan dan ditutup, jadi akan ada penggunaan rangkaian tetapi jika semua sambungan dicache, sumber sistem lain akan diduduki apabila sambungan melahu, jadi Parameter keepalived boleh digunakan.
server 192.168.10.3:80; server 192.168.10.4:80; keepalived 32; # 最大空闲连接数的个数 keepalived_timeout 100s; # 空闲连接的超时时间 # 需要配合以下两个参数使用 proxy_http_version 1.1; proxy_set_header connection "";
max_fails dan fail_timeout
max_fails=2:服务器通信失败两次,认为服务器不可用
fail_timeout=5s:服务器通信失败后,每5秒探测一次服务器是否恢复正常。
在fail_timeout设定时间内,与服务器连接失败次数达到max_fails数量,则认为服务器不可用。
如果不设置的话默认是探测一次,间隔10s。
server 192.168.10.3:80 max_fails=2 fail_timeout=5s; server 192.168.10.4:80 max_fails=2 fail_timeout=5s;
Atas ialah kandungan terperinci Bagaimana Nginx menggunakan ngx_http_upstream_module untuk melaksanakan fungsi pengimbangan beban. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Nginx sesuai untuk mengendalikan kandungan serentak dan statik yang tinggi, manakala Apache sesuai untuk konfigurasi kompleks dan kandungan dinamik. 1. Nginx dengan cekap mengendalikan sambungan serentak, sesuai untuk senario-senario tinggi, tetapi memerlukan konfigurasi tambahan apabila memproses kandungan dinamik. 2. Apache menyediakan modul yang kaya dan konfigurasi yang fleksibel, yang sesuai untuk keperluan kompleks, tetapi mempunyai prestasi konkurensi tinggi yang tinggi.

Nginx dan Apache masing -masing mempunyai kelebihan dan kekurangan mereka sendiri, dan pilihannya harus berdasarkan keperluan khusus. 1.Nginx sesuai untuk senario konvensional yang tinggi kerana seni bina yang tidak menyekatnya. 2. Apache sesuai untuk senario rendah-concurrency yang memerlukan konfigurasi kompleks, kerana reka bentuk modularnya.

NginxUnit adalah pelayan aplikasi sumber terbuka yang menyokong pelbagai bahasa pengaturcaraan dan menyediakan fungsi seperti konfigurasi dinamik, kemas kini downtime sifar dan mengimbangi beban terbina dalam. 1. Konfigurasi Dinamik: Anda boleh mengubah suai konfigurasi tanpa memulakan semula. 2. 4. Pengimbangan beban terbina dalam: Permintaan boleh diedarkan kepada beberapa contoh aplikasi.

Nginxunit lebih baik daripada pelayan HTTP yang terbina dalam Apachetomcat, Gunicorn dan Node.js, sesuai untuk projek berbilang bahasa dan keperluan konfigurasi dinamik. 1) Menyokong pelbagai bahasa pengaturcaraan, 2) menyediakan penambahbaikan konfigurasi dinamik, 3) fungsi mengimbangi beban terbina dalam, sesuai untuk projek yang memerlukan skalabilitas dan kebolehpercayaan yang tinggi.

NginxUnit meningkatkan prestasi aplikasi dan pengurusan dengan seni bina modular dan keupayaan konfigurasi semula dinamik. 1) Reka bentuk modular termasuk proses induk, router dan proses permohonan, menyokong pengurusan dan pengembangan yang cekap. 2) Konfigurasi semula dinamik membolehkan kemas kini konfigurasi yang lancar semasa runtime, sesuai untuk persekitaran CI/CD. 3) Sokongan berbilang bahasa dilaksanakan melalui pemuatan dinamik bahasa runtime, meningkatkan fleksibiliti pembangunan. 4) Prestasi tinggi dicapai melalui model yang didorong oleh peristiwa dan I/O asynchronous, dan tetap efisien walaupun di bawah kesesuaian yang tinggi. 5) Keselamatan diperbaiki dengan mengasingkan proses permohonan dan mengurangkan pengaruh bersama antara aplikasi.

NginxUnit boleh digunakan untuk menggunakan dan mengurus aplikasi dalam pelbagai bahasa. 1) Pasang nginxUnit. 2) Konfigurasikannya untuk menjalankan pelbagai jenis aplikasi seperti Python dan PHP. 3) Gunakan fungsi konfigurasi dinamik untuk pengurusan aplikasi. Melalui langkah -langkah ini, anda dapat menggunakan dan mengurus aplikasi dengan cekap dan meningkatkan kecekapan projek.

Nginx lebih sesuai untuk mengendalikan sambungan serentak yang tinggi, manakala Apache lebih sesuai untuk senario di mana konfigurasi kompleks dan sambungan modul diperlukan. 1.Nginx dikenali dengan prestasi tinggi dan penggunaan sumber yang rendah, dan sesuai untuk kesesuaian yang tinggi. 2.apache terkenal dengan kestabilan dan sambungan modul yang kaya, yang sesuai untuk keperluan konfigurasi kompleks.

NginxUnit meningkatkan fleksibiliti dan prestasi aplikasi dengan konfigurasi dinamik dan seni bina berprestasi tinggi. 1. Konfigurasi dinamik membolehkan konfigurasi aplikasi diselaraskan tanpa memulakan semula pelayan. 2. Prestasi tinggi dicerminkan dalam seni bina yang didorong dan tidak menyekat dan model multi-proses, dan dapat mengendalikan sambungan serentak dengan cekap dan menggunakan CPU multi-teras.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),
