javascript
Nginx实现负载均衡(整合SpringBoot小demo)
目錄
- 1.前言
- 2.什么是負載均衡
- 3.準備工作
- 3.1 關于Mac系統安裝Nginx
- 3.2 測試項目說明
- 4.Nginx負載均衡的集中方式介紹
- 4.1 輪詢
- 4.2 權重
- 4.3 iphash
- 4.4 最少連接
- 4.5 fair(第三方)
- 4.6 url_hash(第三方)
- 5.測試(以輪詢為例子)
- 測試SpringBoot項目地址
1.前言
要理解負載均衡,必須先搞清楚正向代理和反向代理。
注:
正向代理,代理的是用戶。
反向代理,代理的是服務器。
2.什么是負載均衡
當一臺服務器的單位時間內的訪問量越大時,服務器壓力就越大,大到超過自身承受能力時,服務器就會崩潰。為了避免服務器崩潰,讓用戶有更好的體驗,我們通過負載均衡的方式來分擔服務器壓力。
我們可以建立很多很多服務器,組成一個服務器集群,當用戶訪問網站時,先訪問一個中間服務器,在讓這個中間服務器在服務器集群中選擇一個壓力較小的服務器,然后將該訪問請求引入該服務器。如此以來,用戶的每次訪問,都會保證服務器集群中的每個服務器壓力趨于平衡,分擔了服務器壓力,避免了服務器崩潰的情況。
負載均衡是用反向代理的原理實現的。
3.準備工作
結合本文場景,需要安裝Nginx和Java環境(運行SpringBoot項目)
3.1 關于Mac系統安裝Nginx
本次用的是 homebrew 安裝的
大家也可前去官網下載
3.2 測試項目說明
由于只是測試, SpringBoot只是映射了根路徑,端口分別是 10001 和 10002 ,分別返回 demo1 和 demo2 字符串作為區分。
4.Nginx負載均衡的集中方式介紹
4.1 輪詢
輪詢方式是Nginx負載默認的方式,顧名思義,所有請求都按照時間順序分配到不同的服務上,如果服務Down掉,可以自動剔除,如下配置后輪訓10001服務和10002服務。
upstream codingce-nginx {server localhost:10001;server localhost:10002; }4.2 權重
指定每個服務的權重比例,weight和訪問比率成正比,通常用于后端服務機器性能不統一,將性能好的分配權重高來發揮服務器最大性能,如下配置后10002服務的訪問比率會是10001服務的二倍。
upstream codingce-nginx {server localhost:10001 weight=1;server localhost:10002 weight=2; }4.3 iphash
每個請求都根據訪問ip的hash結果分配,經過這樣的處理,每個訪客固定訪問一個后端服務,如下配置(ip_hash可以和weight配合使用)。
upstream codingce-nginx {ip_hash; server localhost:10001 weight=1;server localhost:10002 weight=2; }4.4 最少連接
將請求分配到連接數最少的服務上。
upstream codingce-nginx {least_conn;server localhost:10001 weight=1;server localhost:10002 weight=2; }4.5 fair(第三方)
按后端服務器的響應時間來分配請求,響應時間短的優先分配。
upstream codingce-nginx {server localhost:10001 weight=1;server localhost:10002 weight=2;fair; }4.6 url_hash(第三方)
按訪問url的hash結果來分配請求,使每個url定向到同一個后端服務器,后端服務器為緩存時比較有效。
upstream codingce-nginx {server localhost:10001;server localhost:10002;hash $request_uri;hash_method crc32; }5.測試(以輪詢為例子)
訪問http://localhost:10000
輪詢方式,刷新后依次切換后端服務
如果要修改負載均衡算法修改對應upstream模塊即可。
此次nginx路徑展示
主配置與自定義配置
注意:下方自定義配置文件是自定義配置文件目錄 vhost/
輪詢配置 在nginx.conf文件中配置的
upstream codingce-nginx {server localhost:10001;server localhost:10002; }進入自定義配置文件夾配置自定義配置
williamma@WilliamdeMacBook-Pro nginx % cd vhost williamma@WilliamdeMacBook-Pro vhost % ll total 16 drwxr-xr-x 4 williamma admin 128 5 13 15:17 ./ drwxr-xr-x 19 williamma admin 608 5 13 15:28 ../ -rw-r--r-- 1 williamma admin 549 4 16 16:17 gulimall.conf -rw-r--r-- 1 williamma admin 167 5 13 15:17 mytest.conf williamma@WilliamdeMacBook-Pro vhost % vim mytest.conf配置文件展示
server {listen 10000;server_name localhost;location / {#用在此處proxy_pass http://codingce-nginx;proxy_redirect default;}}測試SpringBoot項目地址
[Github]:https://github.com/xzMhehe/codingce-java
[Gitee]:https://gitee.com/codingce/codingce-java
如有問題歡迎評論區討論
總結
以上是生活随笔為你收集整理的Nginx实现负载均衡(整合SpringBoot小demo)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HBase环境搭建与使用
- 下一篇: Apache Software Foun