Pengenalan kepada pengimbangan beban
Sebelum memperkenalkan pelaksanaan pengimbangan beban nginx, mari kita bercakap secara ringkas tentang klasifikasi pengimbangan beban, yang kebanyakannya dibahagikan kepada pengimbangan beban perkakasan dan pengimbangan beban perisian Pengimbangan beban perkakasan ialah peranti yang menggunakan perisian dan perkakasan khusus vendor akan menyediakan penyelesaian yang lengkap dan matang, seperti f5, yang sangat dipercayai dari segi kestabilan dan keselamatan data, tetapi lebih mahal daripada perisian. pengimbangan beban perisian terutamanya berdasarkan perisian seperti nginx, yang melaksanakan mekanisme pengedaran baris gilir mesej.
Ringkasnya, apa yang dipanggil pengimbangan beban adalah untuk memunggah banyak permintaan dan menetapkannya ke pelayan yang berbeza untuk diproses. Sebagai contoh, saya mempunyai 3 pelayan, iaitu a, b, dan c, dan kemudian menggunakan nginx untuk pengimbangan beban dan strategi pengundian Jika 9 permintaan diterima pada masa ini, 9 permintaan akan diedarkan secara sama rata kepada a dan b. cf pelayan, setiap pelayan mengendalikan 3 permintaan, supaya kita boleh menggunakan ciri-ciri kluster mesin berbilang untuk mengurangkan tekanan pada pelayan tunggal.
Contoh gambarajah nginx yang melaksanakan pengimbangan beban:
Strategi pengimbangan beban
sumber terbuka nginx menyokong empat jenis kaedah Load Balanced, dan nginx plus menambah dua lagi kaedah.
1.round robin:
Tinjau semua permintaan untuk menghantar permintaan, kaedah peruntukan lalai.
contoh konfigurasi nginx.conf:
Nota: Nama domain di atas juga boleh digantikan dengan ip.
2.sambungan paling sedikit:
Hantar permintaan kepada pelayan dengan bilangan sambungan aktif paling sedikit, juga mengambil kira berat pelayan.
contoh konfigurasi nginx.conf:
cincang 3.ip:
Pelayan yang menghantar permintaan ditentukan oleh alamat ip pelanggan. Dalam kes ini, nilai cincang dikira menggunakan tiga bait pertama alamat ipv4 atau keseluruhan alamat ipv6. Kaedah ini menjamin bahawa permintaan daripada alamat yang sama sampai ke pelayan yang sama, melainkan pelayan itu tidak tersedia.
4.cincang generik:
Pelayan yang permintaan dihantar ditentukan oleh kunci yang ditentukan pengguna, yang boleh menjadi rentetan teks, pembolehubah atau gabungan.
5.masa paling sedikit (nginx tambah sahaja)
Untuk setiap permintaan, nginx plus memilih pelayan dengan kependaman purata terendah dan bilangan sambungan aktif yang paling rendah, di mana purata Latensi terendah dikira berdasarkan parameter berikut yang mengandungi arahan terkecil_masa:
header: Masa untuk menerima bait pertama daripada pelayan.
last_byte: Masa untuk menerima respons lengkap daripada pelayan.
last_byte inflight: Masa untuk menerima respons lengkap daripada pelayan.
6.random:
Setiap permintaan akan dihantar ke pelayan yang dipilih secara rawak. Jika dua parameter ditentukan, pertama, nginx secara rawak memilih dua pelayan berdasarkan berat pelayan, dan kemudian memilih salah satu daripadanya menggunakan kaedah yang ditentukan.
least_conn: Bilangan minimum sambungan aktif
least_time=header (nginx plus): Purata masa minimum untuk menerima pengepala respons daripada pelayan ($upstream_header_time).
least_time=last_byte (nginx plus): Purata masa terpendek untuk menerima respons lengkap daripada pelayan ($upstream_response_time).
nginx+springboot mencapai pengimbangan beban
Persediaan persekitaran
Bergantung pada jdk1.8 atau lebih tinggi;
bergantung pada persekitaran nginx; projek springboot, alamat projek springboot: https://github.com/xuwujing/springboot-study/tree/master/springboot-thymeleaf
port, sebagai contoh, tukar kepada 8086.
mvn clean package
konfigurasi nginxapplication.properties
application.properties
Kami menemui fail konfigurasi nginx nginx.conf, yang terdapat dalam direktori nginx/conf/nginx.conf, dan kemudian kami mengubah suai ia Untuk konfigurasi ini, konfigurasi berikut ditambah:
Jika anda tidak mahu menggunakan strategi round robin, anda juga boleh menukarnya kepada strategi lain.
Arahan konfigurasi:
Ujian pengimbangan beban
Selepas melengkapkan konfigurasi nginx, kami mulakan nginx.
Linux memasuki /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
Jika ia sudah dimulakan, anda boleh menggunakan perintah /usr/local/nginx/sbin/nginx -s reload
untuk memuatkan fail konfigurasi Untuk Windows, klik terus nginx.exe
atau cmd
Jalankan start nginx
dalam direktori nginx. untuk memulakan. Jika ia dimulakan, ia masih boleh dilakukan. Gunakan nginx -s reload
untuk muat semula panas.
Selepas nginx dimulakan, kami memulakan springboot yang baru kami muat turun dan menyalin projek untuk menukar port Masukkan: java -jar springboot-jsp-thymeleaf.jar
untuk bermula.
Selepas semuanya dimulakan dengan jayanya, kami boleh memasukkan alamat IP perkhidmatan dalam penyemak imbas untuk mengaksesnya.
Gambar contoh:
Nota: Saya menggunakan sistem windows untuk ujian di sini, dan sistem Linux sebenar adalah sama.
Kemudian mari kita lakukannya dan lihat log konsol!
Daripada contoh rajah di atas, kami membuat 4 permintaan muat semula antara muka, dan akhirnya mengagihkannya secara sama rata kepada kedua-dua perkhidmatan Daripada keputusan ujian di atas, kami mencapai pengimbangan beban .
Di sini saya bercakap tentang langkah berjaga-jaga untuk menggunakan nginx Semasa belajar dan menguji, secara amnya tiada masalah dalam menggunakan port lalai nginx untuk mencapai pengimbangan beban, tetapi apabila kita menggunakannya dalam projek, ia adalah. terutamanya bermasalah. Apabila log masuk ke antara muka dan port tidak 80, antara muka log masuk tidak boleh melompat Apabila menyahpepijat, ralat seperti net::err_name_not_resolved akan muncul lompatan lalai ialah Ini juga berlaku, jadi apabila ini berlaku, anda perlu menambah hos proxy_set_header $host:port konfigurasi di bawah lokasi Hanya pastikan port dan dengar port konsisten.
Atas ialah kandungan terperinci Bagaimana untuk mencapai pengimbangan beban dengan Nginx+SpringBoot. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!