說起F5,可能有些小伙伴比較陌生,先簡單介紹下F5。由于網絡各個核心部分隨著業務量提高,訪問量和數據流量快速增長,其處理能力和計算強度也相應的增大,使得單一的服務器設備根本無法承擔。針對此情況衍生出來的一種廉價透明有效的方法,以此擴展現有網絡設備和服務器的帶寬、增加吞吐量、加強網絡數據處理能力、提高網絡的靈活性和可用性的技術就是負載均衡(LoadBalance),也稱之為F5。
F5負載均衡器應用交換機后面的一組服務器10.1.1.4:80、10.1.1.5:80、10.1.1.6:80對外構成一臺虛擬的服務器(VirtualServer)192.168.101.1:80,對外提供服務。當一個訪問虛擬服務器192.168.101.1:80的請求到達負載均衡器后,負載均衡器根據預先設定的負載均衡算法從服務器pool(WEB_POOL)中挑選一臺服務器來服務該請求,例如選定的是10.1.1.4:80;然后通過網絡地址轉換(NAT)將訪問請求包的目的地址與端口轉換成10.1.1.4:80,并將數據包發給10.1.1.4。服務器10.1.1.4處理訪問請求,并作出回應。回應的包必須返回到負載均衡器上,由負載均衡器將回應包的源地址與端口轉換回虛擬服務器的地址與端口,并返回給客戶。這樣完成一次訪問過程。
在大多數WEB應用系統或者需要進行用戶身份認證的在線系統中,一個客戶與服務器經常經過三次以上交互過程才能完成一筆交易或一個請求。交互過程是密切相關的,服務器進行交互過程的下一個交互步驟,需要了解上一交互過程的處理結果,或者上幾步的交互過程結果,服務器進行下一步操作時就要求所有這些相關的交互過程都由一臺服務器完成,而不能被負載均衡器分散到不同的服務器上。這就涉及到會話保持,常見會話保持如下。
簡單會話保持:
簡單會話保持也被稱為基于源地址的會話保持,是指負載均衡器在作負載均衡時是根據訪問請求的源地址作為判斷關聯會話的依據。對來自同一IP地址的所有訪問,請求在作負載均時都會被保持到一臺服務器上去。
基于源地址的會話保持實現起來簡單,效率也比較高。存在的問題就在于當多個客戶是通過代理或地址轉換的方式來訪問服務器時,由于都分配到同一臺服務器上,會導致服務器之間的負載嚴重失衡。
基于Cookie的會話保持:
在Cookie插入模式下,Big-IP將負責插入cookie,后端服務器無需作出任何修改。當客戶進行第一次請求時,客戶HTTP請求(不帶cookie)進入BIG-IP,BIG-IP根據負載平衡算法策略選擇后端一臺服務器,并將請求發送至該服務器,后端服務器進行HTTP回復(不帶cookie)被發回BIGIP,然后BIG-IP插入cookie,將HTTP回復返回到客戶端。當客戶請求再次發生時,客戶HTTP請求(帶有上次BIGIP插入的cookie)進入BIGIP,然后BIGIP讀出cookie里的會話保持數值,將HTTP請求(帶有與上面同樣的cookie)發到指定的服務器,然后后端服務器進行請求回復,由于服務器并不寫入cookie,HTTP回復將不帶有cookie,恢復流量再次經過進入BIG-IP時,BIG-IP再次寫入更新后的會話保持cookie。
輪詢(RoundRobin):順序循環將請求一次順序循環地連接每個服務器。當其中某個服務器發生故障,BIG/IP就把其從順序循環隊列中拿出,不參加下一次的輪詢,直到其恢復正常。
比率(Ratio):給每個服務器分配一個加權值為比例,根椐這個比例,把用戶的請求分配到每個服務器。當其中某個服務器發生故障,BIG/IP就把其從服務器隊列中拿出,不參加下一次的用戶請求的分配,直到其恢復正常。
優先權(Priority):給所有服務器分組,給每個組定義優先權,BIG/IP用戶的請求,分配給優先級最高的服務器組(在同一組內,采用輪詢或比率算法,分配用戶的請求);當最高優先級中所有服務器出現故障,BIG/IP才將請求送給次優先級的服務器組。這種方式,實際為用戶提供一種備份的方式。
最小的連接數(LeastConnection):傳遞新的連接給那些進行最少連接處理的服務器。當其中某個服務器發生故障,BIG/IP就把其從服務器隊列中拿出,不參加下一次的用戶請求的分配,直到其恢復正常。
ICMP Monitor
利用互聯網控制信息協議(ICMP)檢查節點的狀態。
TCP Monitor
通過嘗試從節點接收特定內容來驗證TCP服務。
HTTPMonitor
通過嘗試從網頁接收特定內容來驗證HTTP服務。
以某業務為例進行F5配置解析,首先創建http健康性檢測規則,首先進入負載均衡的健康性檢測功能模塊,點擊create創建健康性檢測規則,如下圖所示:
然后開始配置健康性檢測檢測路徑及返回值,協議為http協議,檢測路徑需要由項目相關開發人員提供,HTTP/1.1表示業務所使用的http版本號,200表示檢測路徑信息接收成功(也可根據業務curl返回值中特定字段進行設置,當然也可以采用tcp端口檢測以及icmp檢測等F5自帶檢測功能進行配置,此案例以http檢測為例)
對健康檢測路徑進行驗證,可使用curl以及wget命令對健康性檢測路徑進行驗證,確認路徑是否正確,可根據curl以及wget返回值來判斷業務是否正常。
pool配置,首先創建pool,并配置名稱、健康性檢測規則、負載方式相關信息,然后添加相應的后臺服務器節點,status為綠色表示節點健康性檢測通過,負載方式本案例默認采用輪詢方式,也可根據具體需求進行調整,配置如下所示:
創建VS,配置虛服務名字、ip、端口、協議、源地址等相關信息,本案例采用由于對外網開放,沒有限定源地址,協議為http協議,配置如下所示:
配置完成后業務獲取的為F5浮動ip,如業務想獲取用戶源ip,將httpprofile配置為X-Forwarded-For,然后在后臺節點抓包XFF報頭即可看到用戶真實ip,開發側可根據代碼配置獲取xff攜帶真實ip
至此F5配置完成,可在NetWorkMap中查看虛服務狀態,狀態為綠色表示成功,具體如下圖所示:
如果虛服務已經映射外網,也可登錄后臺查看虛ip的用戶訪問情況,或者在管理界面查看虛服務當前用戶連接狀態來判斷是否建立成功,方法如下所示:
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/130205.html
上篇文章和大家聊了 Spring Session 實現 Session 共享的問題,有的小伙伴看了后表示對 Nginx 還是很懵,因此有了這篇文章,算是一個 Nginx 掃盲入門吧! 基本介紹 Nginx 是一個高性能的 HTTP 和反向代理 web 服務器,同時也提供了 IMAP/POP3/SMTP 服務。 Nginx 是由伊戈爾·賽索耶夫為俄羅斯訪問量第二的 Rambler.ru 站點開發...
摘要:最近瀏覽,收藏了一些還算不錯的面試學習相關的倉庫,分享給大家,希望對你有幫助。除了這九個倉庫,再推薦幾個不錯的學習方向的倉庫給大家。數高達的筆記后端尤其是程序員的學習倉庫兩個算法相關的倉庫,刷的小伙伴必備 最近瀏覽 Github ,收藏了一些還算不錯的 Java面試/學習相關的倉庫,分享給大家,希望對你有幫助。我暫且按照目前的 Star 數量來排序。 本文由 SnailClimb 整理...
摘要:在的的首次會議慶祝了其新功能版本的發布。可以以這三種方式暴露出來內部外部和負載均衡。比如,可能會通過一個彈性負載均衡器接收流量,或者通過谷歌的負載均衡器接收。這個功能令第三方負載均衡器整合到。負起了接管發現任務和微服務負載均衡器的重任。 隨著容器逐漸受到企業的注意,焦點慢慢被轉移到了容器編排工具上。復雜的工作負載在生產過程中需要成熟地被調度,編排,彈性擴容和管理工具。有了Docker,...
摘要:微服務基礎層主要是為容器提供計算存儲網絡等基礎資源。微服務訪問層,目前服務對外暴露訪問主要以綁定或是負載均衡方式。除此之外,內置的負載均衡是基于實現的,支持。私有云場景中,很多行業用戶在內部都使用硬件負載均衡來暴露服務訪問地址。 站在微服務的角度看容器的基礎設施服務可以分為三層: 微服務基礎層 微服務構建層 微服務訪問層 showImg(https://segmentfault.c...
摘要:正在失業中的課多周刊第期我們的微信公眾號,更多精彩內容皆在微信公眾號,歡迎關注。若有幫助,請把課多周刊推薦給你的朋友,你的支持是我們最大的動力。是一種禍害譯本文淺談了在中關于的不好之處。淺談超時一運維的排查方式。 正在失業中的《課多周刊》(第3期) 我們的微信公眾號:fed-talk,更多精彩內容皆在微信公眾號,歡迎關注。 若有幫助,請把 課多周刊 推薦給你的朋友,你的支持是我們最大的...
閱讀 1346·2023-01-11 13:20
閱讀 1684·2023-01-11 13:20
閱讀 1132·2023-01-11 13:20
閱讀 1858·2023-01-11 13:20
閱讀 4100·2023-01-11 13:20
閱讀 2704·2023-01-11 13:20
閱讀 1385·2023-01-11 13:20
閱讀 3597·2023-01-11 13:20