高階階段回顧:
nginx高階之靜態web資源服務
nginx高階之**服務
模型:
① gslb(全域性負載均衡), 特點: 節點龐大, 範圍廣
② slb(伺服器負載均衡), 特點: 範圍小, 實時性/響應性好
slb分為四層負載均衡和七層負載均衡, nginx是典型的七層負載均衡.
nginx的負載均衡:
測試nginx的負載均衡
要測試nginx的負載均衡功能需要兩台伺服器, 192.168.19.134和192.168.19.136
136伺服器提供三個server服務:
134伺服器提供負載均衡服務:
客戶端(瀏覽器)訪問:
預設的結果是在這3個服務埠之間輪詢
可以使用命令關閉其中某個埠, 模擬其中乙個服務掛掉的情況, 測試其他兩個服務還能否正常訪問.
命令如下:
iptables -i input -p tcp --dport 8082 -j drop #關閉8082埠
iptables -i input -p tcp --dport 8082 -j accept #開啟8082埠
測試結果是8082埠的服務無法訪問, 而其他兩個服務正常訪問.
上面提到的upstream模組還有其他的配置項:
upstream [自定義的虛擬服務的名稱, 如上面我自定義的"testslb"] {
server [網域名稱的寫法www.example.com] weight=[權重值越大則訪問越多, 值為1/2/3/4/5/...];
server [網域名稱+埠的寫法www.example.com:8080];
server [socket的寫法unix:/tmp/...];
配置引數:
down
表示當前的server不參與負載均衡
backup
備份伺服器, 當其他服務沒有完全掛掉的情況下不使用該備份伺服器, 一旦全部掛掉, 則啟用該備份伺服器
max_fails
允許請求失敗的次數, 如: max_fails=1
fail_timeout
經過max_fails失敗後服務暫停的時間, 如: fail_timeout=10s
max_conns
限制最大的接收連線數(用於每台伺服器配置不統一的情況, 降低低配置伺服器的壓力)
進入134伺服器的.conf配置, 在upstream的每一台server後面加上對應的引數再測試
測試結果是只能訪問到8083埠, 利用上面的命令關閉8083埠, 測試能夠訪問到的是8082埠.
nginx的排程演算法
nginx的排程演算法預設是輪詢策略, 依次訪問.
排程演算法:
輪詢按照時間順序逐一分配到不同的後端伺服器
加權輪詢
weight值越大, 分配到的訪問機率就越大
ip_hash
每個請求按照訪問的ip的hash結果進行分配, 使得來自同乙個ip的固定訪問同乙個後端伺服器
least_conn
最少鏈結數, 當前哪個伺服器的連線數少就分發給哪個伺服器
url_hash
每個請求按照訪問的url的hash結果進行分配, 使得來自同乙個url的請求定向到同乙個後端伺服器
hash關鍵值
hash自定義的key
測試加權輪詢:
134伺服器的配置:
輪詢和加權輪詢都是基於請求來實現的, 這種輪詢有個缺點會導致使用者的cookie等資訊丟失, 可以採取ip_hash的排程演算法:
此時通過ip下的方問就只會固定乙個server
ip_hash的缺陷在於, 如果使用者在前端再走**的話, 此時nginx是無法獲取到使用者的真是ip的, 同時如果使用者訪問的後台是多台伺服器的話, 那麼會導致使用者的快取發生改變, 那麼資訊也將發生改變.
解決辦法: hash關鍵值/url_hash
url_hash跟hash關鍵值其實是同乙個道理, 配置語法如下:
systax: hash [key, 如$request_uri]
default: 無配置
context: upstream域
進入.conf檔案進行配置:
134伺服器:
136伺服器分別在code1/code2/code3裡面新增url1.html/url2.html/url3.html檔案, 用於區別訪問的路徑而已.
訪問: /url1.html, 此時只能定向訪問到server1下的url1.html,
訪問: /url2.html, 此時只能定向訪問到server3下的url2.html,
訪問: /url3.html, 此時只能定向訪問到server2下的url3.html,
具體訪問哪台伺服器則根據url的hash計算結果進行分發的.
nginx之負載均衡
負載均衡 load balancing 是一種計算機網路技術,用來在多個計算機 計算機集群 網路連線 cpu 磁碟驅動器或其他資源中分配負載,以達到最佳化資源使用 最大化吞吐率 最小化響應時間 同時避免過載的目的。使用帶有負載均衡的多個伺服器元件,取代單一的元件,可以通過冗餘提高可靠性。負載均衡服務...
nginx之負載均衡
nginx常用來配置成服務的閘道器並通過反向 實現負載均衡。這裡記錄一下有關負載均衡的策略以及相關引數的配置。假設這是乙個基本的反向 配置 upstrean tomcats server 輪訓 輪訓是nginx預設的一種策略,當不進行其他配置時就會執行這種策略。對於上面的基本配置,當訪問www.to...
Nginx之負載均衡
按照網路模型osi nginx負載均衡 配置語法 upstream backend server 機器測試nginx負載均衡 upstream的常見用法 後端伺服器在負載均衡排程中的狀態 1down 當前server暫時不參與負載均衡 1backup 預留的備份伺服器 當正在使用的後端服務異常時,啟...