nginx tcp转发_Nginx学习(九):负载均衡服务
介紹
對于請求而言,負載均衡能很好的均攤請求,提高服務端吞吐率和整體性能,多個服務節點部署的方式,也提高了容災和服務高可用。
一、負載均衡分類
負載均衡分為:GSLB和SLB。
1. GDLB
全局負載均衡,往往按照國家為單位或省為單位來進行負載均衡的。
北京用戶張三,他不可能直接就去請求調度中心節點,先請求北京地區的調度節點,調度節點返回給張三對應的地址,張三再訪問應用服務,這個應用服務也在北京。所以這樣沒有給中心節點造成壓力。
2. SLB
往往調度節點和服務節點在一個邏輯單元里面,或者說是在一個地域里面,那么小的地域就決定了他對部分服務的實時性,響應性是非常好的。
nginx就是一個典型的SLB。
負載均衡按照網絡模型(OSI)可以分為:四層負載均衡和七層負載均衡。
1. 四層負載均衡
四層負載均衡就是在OSI模型中的傳輸層,傳輸層可以支持到tcp/ip協議的控制,所以他只需要對客戶端的請求進行tcp/ip協議的包轉發,就可以實現負載均衡。
好處是性能非常快,只需要最底層進行應用處理,不需要進行復雜的邏輯,只需要進行包的轉發就可以。
2. 七層負載均衡
七層負載均衡是在應用層,所有可以完成很多應用方面的協議的請求,比如:http應用層負載均衡,他可以實現http信息的改寫,頭信息的改寫,安全應用規則的控制,以及轉發,rewrite等規則。
nginx就是一個典型的7層SLB。
二、配置語法
nginx實現負載均衡的原理:就是用到了proxy_pass,它把所有客戶端的請求代理去轉發到對應的后端服務器上,只是它不是轉發到一臺服務,而是轉發到一組虛擬的服務池中。
配置語法:
Syntax: upstream name {...};Default: --Context: http配置場景:
upstream load { server 192.168.x.xx1:8001; server 192.168.x.xx2:8002; server 192.168.x.xx3:8003; }server { listen 80; server_name localhost node1; location / { proxy_pass http://load; include proxy_params; }}使用iptables規則關閉8002服務:
iptables -I INPUT -p tcp --dport 8002 -j DROP訪問測試:
http://node1三、upstream參數介紹
upstream backend { ip_hash; server backend1.example.com weight=5; server backend2.example.com:8080; server unix:/tmp/backend3; server backend1.example.com:8080 down; server backend2.example.com:8080 backup; server backend3.example.com:8080 max_fails=1 fail_timeout=10s;}后端服務器在負載均衡調度中的狀態:
| 狀態 | 描述 |
| down | 當前的server暫時不參與負載均衡 |
| backup | 預留的備份服務器,其他節點都不提供服務時使用 |
| max_fails | 允許請求失敗的次數 |
| fail_timeout | 經過max_fails失敗后,服務暫停的時間 |
| max_conns | 限制最大的接收的連接數 |
四、調度算法
| 調度算法 | 描述 |
| 輪詢 | 按照時間 順序逐一分配到不同的后端服務器(默認) |
| 加權輪詢 | weight值越大,分配到的訪問幾率越高 |
| ip_hash | 每個請求按訪問IP的hash結果分配,這樣來自同一個IP的固定訪問一個后端服務器 |
| url_hash | 按照訪問的URL的hash結果來分配請求,使每個URL定向到同一個后端服務器 |
| least_conn | 最少連接數,那個機器連接數少就分發 |
| hash關鍵數值 | hash自定義的key |
url_hash配置:
upstream backend { hash $request_url; server backend1.example.com 8081; server backend2.example.com 8082; server backend3.example.com 8083;}hash key配置:
Syntax: hash key [xonsistent];Default: --Context: upstreamThis directive appeared in version 1.7.2推薦閱讀
Nginx學習(六):Nginx訪問控制
Nginx學習(七):Nginx作為靜態資源
Nginx學習(八):Nginx作為代理服務
看完本文有收獲?請轉發分享給更多人
關注「并發編程之美」,一起交流Java學習心得
總結
以上是生活随笔為你收集整理的nginx tcp转发_Nginx学习(九):负载均衡服务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 跨世界crossworlds安卓版(ds
- 下一篇: 查网址备案信息(查网址备案)