使用nginx進行負載均衡
我使用了三臺 VPS 伺服器,同一網段的,用來搭建網站,推薦你們也可以使用 3A 伺服器
1. nginx 負載均衡介紹
nginx 應用場景之一就是負載均衡。在訪問量較多的時候,可以透過負載均衡,將多個請求分攤到多臺伺服器上,相當於把一臺伺服器需要承擔的負載量交給多臺伺服器處理,進而提高系統的吞吐率;另外如果其中某一臺伺服器掛掉,其他伺服器還可以正常提供服務,以此來提高系統的可伸縮性與可靠性。
下圖為負載均衡示例圖,當使用者請求傳送後,首先傳送到負載均衡伺服器,而後由負載均衡伺服器根據配置規則將請求轉發到不同的web 伺服器上。
2. nginx 負載均衡策略
以下截圖為nginx 官網文件
nginx 內建負載均衡策略主要分為三大類,分別是輪詢、最少連線和 ip hash
最少連線
請求分配給活動連線數最少的伺服器,哪臺伺服器連線數最少,則把請求交給哪臺伺服器,由nginx 統計伺服器連線數
ip hash
基於客戶端ip 的分配
2.1 輪詢
以迴圈方式分發對應用伺服器的請求,將請求平均分發到每臺伺服器上。
2.1.1 普通輪詢方式
該方式是預設方式,輪詢適合伺服器配置相當,無狀態且短平快的服務使用。另外在輪詢中,如果伺服器掛掉,會自動剔除該伺服器。
http { # 定義轉發分配規則 upstream myapp1 { server srv1.com; # 要轉發到的伺服器,如ip、ip:埠號、域名、域名:埠號 server srv2.com:8088; server 192.168.0.100:8088; } server { listen 80; # nginx監聽的埠 location / { # 使用myapp1分配規則,即剛自定義新增的upstream節點 # 將所有請求轉發到myapp1伺服器組中配置的某一臺伺服器上 proxy_pass } } }
2.1.2 權重輪詢方式
如果在 upstream 中配置的 server 引數後追加 weight 配置,則會根據配置的權重進行請求分發。此策略可以與 least_conn 和 ip_hash 結合使用,適合伺服器的硬體配置差別比較大的情況。
# 定義轉發分配規則 upstream myapp1 { server srv1.com weight=1; # 該臺伺服器接受1/6的請求量 server srv2.com:8088 weight=2; # 該臺伺服器接受2/6的請求量 server 192.168.0.100:8088 weight=3; # 該臺伺服器接受3/6的請求量; }
2.2 最少連線
輪詢演算法是把請求平均的轉發給各個後端,使它們的負載大致相同;但是,有些請求佔用的時間很長,會導致其所在的後端負載較高。這種情況下,least_conn 這種方式就可以達到更好的負載均衡效果,適合請求處理時間長短不一造成伺服器過載的情況。
# 定義轉發分配規則 upstream myapp1 { least_conn; # 把請求分派給連線數最少的伺服器 server srv1.com; server srv2.com:8088; server 192.168.0.100:8088; }
2.3 ip hash
這個方法確保了相同的客戶端的請求一直髮送到相同的伺服器,這樣每個訪客都固定訪問一個後端伺服器。如使用者需要分片上傳檔案到伺服器下,然後再由伺服器將分片合併,這時如果使用者的請求到達了不同的伺服器,那麼分片將儲存於不同的伺服器目錄中,導致無法將分片合併,該場景則需要使用ip hash 策略。
需要注意的是,ip_hash 不能與 backup 同時使用,另外當有伺服器需要剔除,必須手動 down 掉,此模式適合有狀態服務,比如 session 。
# 定義轉發分配規則 upstream myapp1 { ip_hash; # #保證每個請求固定訪問一個後端伺服器 server srv1.com; server srv2.com:8088; server 192.168.0.100:8088; }
3. nginx 負載均衡搭建示例
該示例使用一臺nginx 作為負載均衡伺服器,兩臺 tomcat 作為 web 伺服器;可以把三個服務均在一臺機器進行搭建,也可以使用虛擬機器虛擬三臺機器,然後進行測試。教程這裡就只在一臺機器進行搭建,採用預設的權重方式進行配置。
3.1 tomcat 配置
將兩臺tomcat 解壓出來,配置完畢相應的埠,然後在 webapps 目錄下建立 test 目錄,然後在 test 目錄中建立 index.html 檔案,隨便寫入一些內容,兩臺 tomcat 中 test 目錄下的 index.html 檔案內容要區分開來,例如寫入 1111111 / 222222222 ,如下圖所示。
3.2 nginx 配置
首先進行nginx 的安裝,安裝教程可以參考
https://blog.csdn.net/guo_ridgepole/article/details/124438127
安裝完畢後,進入nginx 目錄下的 conf 目錄,編輯 nginx.conf 檔案,修改內容為在 http 節點下增加
upstream tomcat { # 該部分內容與 server 節點同級 server tomcat服務的ip:tomcat服務的埠號; server tomcat服務的ip:tomcat服務的埠號; }
server 節點下的 location / 節點中,把預設的
location / { root html; index index.html index.htm; }
修改為
location / { proxy_pass }
然後啟動 兩臺tomcat 與 nginx 服務,在瀏覽器輸入 nginx 服務的地址 : 埠,不停重新整理頁面,就可以看到每次請求的伺服器發生了改變。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70022313/viewspace-2917232/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用 haproxy 進行 TCP 負載均衡TCP負載
- 通過nginx進行udp報文負載均衡NginxUDP負載
- NGINX 負載均衡Nginx負載
- 【Nginx】負載均衡Nginx負載
- nginx負載均衡Nginx負載
- 使用Nginx配置TCP負載均衡NginxTCP負載
- 使用nginx負載均衡nodejsNginx負載NodeJS
- Nginx實現tomcat叢集進行負載均衡NginxTomcat負載
- Nginx負載均衡模式Nginx負載模式
- Nginx--負載均衡Nginx負載
- nginx 負載均衡搭建Nginx負載
- Nginx負載均衡策略Nginx負載
- 解析 Nginx 負載均衡Nginx負載
- nginx自定義負載均衡及根據cpu執行自定義負載均衡Nginx負載
- 使用Docker+Nginx模擬負載均衡DockerNginx負載
- 使用nginx配置多個phpfastcgi負載均衡NginxPHPAST負載
- Nginx負載均衡詳解Nginx負載
- Nginx負載均衡高可用Nginx負載
- nginx實現負載均衡Nginx負載
- 【Nginx】Nginx反向代理和負載均衡部署Nginx負載
- Nginx服務系列——負載均衡Nginx負載
- nginx學習之負載均衡Nginx負載
- Nginx 負載均衡原理解讀Nginx負載
- [Open Source] 負載均衡之Nginx負載Nginx
- Nginx負載均衡配置說明Nginx負載
- Nginx + IIS 實現負載均衡Nginx負載
- 012.Nginx負載均衡Nginx負載
- Nginx/Httpd負載均衡tomcat配置Nginxhttpd負載Tomcat
- Nginx多種負載均衡策略搭建Nginx負載
- Nginx 學習系列(二) ------------- 負載均衡Nginx負載
- Nginx 學習系列(二) ————- 負載均衡Nginx負載
- Nginx+Tomcat部署負載均衡NginxTomcat負載
- nginx負載均衡策略你知道多少?Nginx負載
- nginx配置+uwsgi+負載均衡配置Nginx負載
- Nginx常用命令、負載均衡Nginx負載
- Nginx/ZooKeeper 負載均衡的差異Nginx負載
- Nginx負載均衡之健康檢查Nginx負載
- nginx詳解反向代理負載均衡Nginx負載