1、概念基礎
Load balancing,即負載均衡,是一種計算機技術,用來在多個計算機(計算機集群)、網絡連接、CPU、磁盤驅動器或其他資源中分配負載,以達到最優化資源使用、最大化吞吐率、最小化響應時間、同時避免過載的目的。
為了提升網站的服務能力,網站可以采用集群部署,就像話劇院有多個入口一樣。這時候,就需要一個協調者,來均衡的分配這些用戶的請求,可以讓用戶的可以均勻的分派到不同的服務器上。
單個服務器解決不了,我們增加服務器的數量,然后將請求分別分發到各個服務器上,將原來請求集中到單個服務器上的情況改為將請求分發到多個服務器上,降幅在分發到不同的服務器,也就是我們所說的負載均衡。
2、負載均衡實例
2.1、實現效果
在瀏覽器輸入123.com/te/test.html,負載均衡效果,平均到8080和8081端口中。
2.2、提前準備
- 兩臺Tomcat服務器,一臺8080,一臺8081;
- 在兩臺tomcat服務器里面的webapps目錄,分別建立te文件夾,并在其中創建test.html,用于測試.
2.3、在nginx配置文件中進行負載均衡配置
upstream myserver{server 127.0.0.1:8080;server 127.0.0.1:8081;}#gzip on;server {listen 80;server_name localhost;location / {root html;proxy_pass http://myserver;index index.html index.htm;}
2.4、效果展示
兩次刷新
3、nginx分配策略
3.1、輪詢(默認)
每個請求按照時間順序逐一分配到服務器中,如果后端服務器dowm掉,能自動剔除。
3.2、weight
weight代表權重值,默認為1,權重值越高,默認分配客戶端越多,指輪詢機率。
upstream myserver{server 127.0.0.1:8080 weight=5server 127.0.0.1:8081 weight=10}
3.3、ip_hash
每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個后端服務器,可以解決session問題。
upstream myserver{ip_hashserver 127.0.0.1:8080;server 127.0.0.1:8081;}
3.4、fair(第三方)
按照后端服務器的響應時間來分配,響應時間越多的優先分配。
upstream myserver{server 127.0.0.1:8080;server 127.0.0.1:8081;fair}