Nginx初步了解

2021-09-28 19:34:51 字數 1543 閱讀 3199

反向**是在服務端發生的。服務端隱藏了真實的ip,客戶端通過請求反向**伺服器,讓反向**伺服器訪問後端的伺服器。

正向**是在客戶端發生的。比如vpn,vpn實在客戶端的瀏覽器中設定的,瀏覽器先訪問vpn位址,然後vpn將請求**至對應的伺服器。

nginx提供了多種負載均衡策略用於分發使用者請求,它們分別是:

1.輪詢(預設)

按順序逐一將請求分配到後端伺服器,如果伺服器down掉,可以自動剔除。

upstream backend

2.指定權重

主要用於後端伺服器效能不一致的情況,給效能好的伺服器配置高一點的權重,處理更多的請求

upstream backend

3.ip_hash

請求按照訪問ip的hash結果分配,這樣每個客戶端ip會訪問後端固定的一台伺服器,可以解決session共享問題。

upstream backend

session共享問題指的是,例如再進行使用者驗證的時候,驗證碼生產使用session1,驗證碼驗證的時候是session2,他們是分布在兩台不同的伺服器,可能就會出現永遠無法驗證的問題。

4.fair(第三方提供)

按後端伺服器的響應時間來分配請求,響應時間短的優先分配。

5.url_hash(第三方提供)

每個url定向到同乙個後端伺服器,後端伺服器為快取時比較有效。

keepalived最初是為lvs集群設計的,監控lvs集群中各個節點的狀態,如果發現有節點發生故障,可以將故障節點剔除。後來又加入了vrrp協議,解決路由單點故障問題,保證網路的不間斷穩定執行。

所以keepalived有兩大用途:healthcheck(管理lvs,對lvs下面的節點進行檢查) & failover(主備自動切換 -- vrrp協議實現)

keepalived工作時只有主節點在工作,備節點是不工作的。故障時會切換到備節點工作;主節點修復之後,備節點會切回到主節點。

兩者的區別在於nginx是基於第七層協議開發的,採用非同步**的原則,即在保持客戶端鏈結的同時新起乙個鏈結到負載均衡的服務端,等待服務端返回資料再返回給客戶端。這麼的好處是nginx可以進行失敗轉移(failover),如果nginix和後端某台伺服器的鏈結不通暢,可以換乙個鏈結,保證使用者請求的穩定性。

lvs是基於第四層協議開發的,採用同步**的原則,即lvs監聽到埠有鏈結時,會直接redirect到後端的伺服器,讓服務端直接與客戶端直接進行鏈結。這樣做避免了nginx單點大流量的頻寬瓶頸問題,但是有乙個弊端是如果請求失敗了,lvs不會像nginx一樣做失敗轉移,請求直接就失敗了

網路上看到現在都是lvs+nginx結合在一起使用的,前面使用lvs連線到後面的nginx,這種混合使用的方式可以建立更好的鏈結。

參考:正向**vs反向****)

分布式集群)

中nginx負載均衡策略)

混合使用)

Nginx和負載均衡的初步了解

1.nginx到底能做什麼 1 反向 由於真實伺服器不能被外部網路直接訪問,所以通過 伺服器把internet上的連線請求 給同在乙個內部網路上的伺服器,再把從伺服器上得到的結果返回給客戶端,可以是不同伺服器,也可以是同一臺伺服器,只是埠不同而已 2 負載均衡 根據一定規則 負載均衡策略 把不同的請...

C Boost 初步了解

boost是由c 標準委員會成員發起 眾多c 業界高人參與設計並實現的乙個涉及面廣 質量高且業已廣泛使用的c 標準後備庫,其中 tr1已經被納入c 0x標準庫。不論從風格和內容組織上講,都可以認為boost專案是c 標準庫的延伸。截止到boost 1.43版本,boost專案擁有大約100個用途廣泛...

jquery 初步了解

js 建立函式有以下三種方法 1 函式關鍵字 function foo x 2 匿名函式 var func function x 3 建構函式 var func new function x alert x 建構函式每次執行時都解析函式主題 頻繁呼叫建構函式效率很低 並且建構函式不能遞迴使用 關鍵字...