LB服務,軟LB的服務能力(下)
現在常用的LB軟件,主要是LVS和nginx。普通情況下,LVS主要負責四層負載均衡,nginx負責七層。當然,業界也有友商基于LVS做出了七層負載均衡。本篇主要講一下LVS的工作模式及各種模式的缺陷。并試圖描述一下ELB服務的方案。
LVS的工作模式,主要包含三種:DR、fullnat、tunnel。
DR
在DR模式下,LVS上會配置服務虛IP,同時要求后端的real server上也會配置該IP地址,即LVS與后端服務器處于同一個網段。當client有報文發送到LVS的時候,LVS不會修改報文的IP地址,而是修改了報文的目的mac地址為real server的地址,后往后端server上送。real server回包直接回給網關,后發給client,不再經過LVS。
可以認為,DR是一種基于后端mac地址的負載分發方式,LVS會將報文按照負載均衡算法,輪詢給后端的不同mac地址。
DR模式的好處就是,回包不經過LVS,回城可以達到比較高的性能。缺點是,LVS與后端要求在一個二層網絡中,部署不太靈活。
Fullnat
Fullnat模式下,服務虛IP配在LVS上,報文路由到LVS以后,LVS先根據負載均衡算法確定分給哪一個后端real server,然后對報文的源地址和目的地址都做了轉換。目的地址改成real server的地址,源地址改成LVS自身地址。
報文路由到real server以后,real server回包報文目的地址為LVS的地址,報文會回到LVS上。LVS把報文源地址和目的地址還原成VIP和client地址,回給client。
由于報文在LVS出做了fullnat后,按照IP地址尋址轉發,所以后端real server不再需要與LVS在同一個二層網絡里面,支持更靈活的組網方案。
而fullnat模式的缺點,LVS做了源地址轉換以后,服務端無法看到訪問者的源IP,將無法針對訪問者進行分析。而當今大多數的游戲等應用,都需要知道是誰訪問的自己,做客戶來源分析等。而源地址可見,卻正是DR模式的優點。
Tunnel
前面說了,DR模式的優點是源地址可見,fullnat模式的優點是可以拉遠部署,那是否存在一種方式,技能拉遠部署又能保持源地址可見?當然有,那就tunnel模式。
Tunnel模式的原理是,報文到了LVS以后,LVS根據負載均衡算法,確定分給哪一個real server后,便將報文目的地址改成了real server的地址,源地址保持不變。LVS自己和后端所有的real server二層內(或VM的host)之間建立了隧道,報文在出LVS之間會匹配隧道規則進入相應的隧道到達可直接到real server的某個點上(一般是VM的host主機或者是real server自身)。Real server處理完成以后,回包從原先的隧道走回到LVS上。
在公有云上,一般LVS是跟host主機的VTEP IP建立隧道。
而隧道的選擇,一般選擇GRE隧道或者是VXLAN隧道。不同的友商根據自己的技術能力和場景不同,可以選擇不同的協議。華為云選擇什么?自然是VXLAN。
網上介紹LVS的文檔基本上將到這里就完了,但作為一個物理網絡虛擬網絡都有一丁點認識的小兵,筆者在此再給各位讀者吐槽一下LVS的一個坑人的地方。
ECMP引流
傳統的四層交換,基本上都是主備部署。主備之間跑VRRP,對于上層路由設備來說,發送ARP請求,是可以很明確的學習到四層交換的實IP或者是虛IP的mac地址,進而指導傳統的路由交換,將報文引給四層交換。
主備部署,平時工作的就只有主一臺設備,這也是我們吐槽硬件設備的一個地方——無法平滑拓展。但是,LVS如何解決這個問題呢?LVS如果再主備部署,性能只會比硬件更加差。Linux程序員設計出來的負載均衡,那當然是集群部署了。
可是,在LVS集群部署的時候,多臺LVS的配置完全一致,虛IP地址都是一樣的,如何規避如下兩個問題:
1、? IP地址/mac地址在一個二層網絡內部沖突如何解決?
2、? 上層設備,怎么知道應該路由給誰?
二層網絡內,服務虛IP對于LVS來說,并不是接口IP,本身是不會發送ARP也不會響應ARP。避免IP地址沖突的問題,當然,也意味著二層內部是無法訪問到虛IP的。
所有訪問LVS虛IP的流量,都需要三層轉發,而上層路由設備,需要通過等價路由ECMP給多臺LVS分流。
如圖,各個LVS服務器除了本身有相同的虛IP以外,還需要每臺設備有唯一的接口IP地址,上層的網關設備上,根據路由將報文發送給接口IP。路由形成的方式有兩種:靜態配置等價路由、LVS與網關建立動態路由形成等價路由。
靜態配置等價路由
如上圖,可以手工在網關設備上配置靜態路由,以指導流量轉發
Ip route-static 10.10.10.10 255.255.255.255 192.168.1.10
Ip route-static 10.10.10.10 255.255.255.255 192.168.1.11
Ip route-static 10.10.10.10 255.255.255.255 192.168.1.12
當然,靜態路由上需要增加NQA探測,以使得某臺LVS故障以后,可以快速撤銷對應的路由。
動態形成等價路由
LVS和網關設備之間建立動態路由協議鄰居,LVS將本地虛IP地址通告給網關,網關上行成多條等價路由指導轉發。
如圖,LVS與網關之間跑OSPF或者BGP,將10.10.10.10的IP地址同時通告給網關,網關會形成3條等價路徑。當某臺設備故障時,協議之間心跳探測失敗,路由自動撤銷。
只有實現了ECMP引流以后,LVS才能橫向拓展,通過N臺設備的組合,實現億級并發能力。
ELB服務
要使用華為云的ELB服務,有幾個概念需要先理解一下
華為云的ELB和EIP是分開的,EIP申請了以后,可以掛到ECS上,也可以掛到ELB上,還可以掛到NAT網關上
申請ELB實例,需要創建-,-為ELB實例所對外提供服務的特性特點,如分發協議,保持方式等
對于后端服務器的檢查,需要配置檢查類型、協議、周期等。后端檢查的方式
下面一張圖簡單描述
更多的ELB實例的材料可以在下面連接獲取
https://static.huaweicloud.com/upload/files/pdf/20180115/20180115114304_63601.pdf
對應于傳統的四層交換來說,LB有GSLB、LSLB、LLB。這里講的LVS,替代的就是傳統的LSLB。
那GSLB和LLB呢?
GSLB通過智能DNS來取代,華為的智能DNS還在開發中,敬請期待
LLB,通過BGP IP就已經可以實現了,不需要額外的負載均衡,下一期我們重點講解一下公有云的動態BGP和靜態BGP的概念。
TCP/IP 彈性負載均衡 ELB
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。