交換機(jī)配置ecmp實(shí)現(xiàn)load balanacer vip

config bgp

基于Cumulus VX實(shí)驗(yàn)ECMP+OSPF負(fù)載均衡

k8s系列08-負(fù)載均衡器之PureLB _

基于ECMP的多活負(fù)載均衡策略

ECMP模式的優(yōu)缺點(diǎn)幾乎和Layer2模式相反

優(yōu)點(diǎn):

無單點(diǎn)故障,在開啟ECMP的前提下,k8s集群內(nèi)所有的節(jié)點(diǎn)都有請(qǐng)求流量,都會(huì)參與負(fù)載均衡并轉(zhuǎn)發(fā)請(qǐng)求
支持了Linux網(wǎng)絡(luò)棧,因此可以使用bird、quagga、frr等各種路由軟件實(shí)現(xiàn)標(biāo)準(zhǔn)的路由協(xié)議
缺點(diǎn):

條件苛刻,需要有特殊路由器支持,配置起來也更復(fù)雜;
ECMP的故障轉(zhuǎn)移(failover)并不是特別地優(yōu)雅,這個(gè)問題的嚴(yán)重程度取決于使用的ECMP算法;當(dāng)集群的節(jié)點(diǎn)出現(xiàn)變動(dòng)導(dǎo)致BGP連接出現(xiàn)變動(dòng),所有的連接都會(huì)進(jìn)行重新哈希(使用三元組或五元組哈希),這對(duì)一些服務(wù)來說可能會(huì)有影響;
路由器中使用的哈希值通常 不穩(wěn)定,因此每當(dāng)后端集的大小發(fā)生變化時(shí)(例如,當(dāng)一個(gè)節(jié)點(diǎn)的 BGP 會(huì)話關(guān)閉時(shí)),現(xiàn)有的連接將被有效地隨機(jī)重新哈希,這意味著大多數(shù)現(xiàn)有的連接最終會(huì)突然被轉(zhuǎn)發(fā)到不同的后端,而這個(gè)后端可能和此前的后端毫不相干且不清楚上下文狀態(tài)信息。

PureLB官方只簡單提及了使用路由協(xié)議的一些問題:

Depending on the router and its configuration, load balancing techniques will vary however they are all generally based upon a 4 tuple hash of sourceIP, sourcePort, destinationIP, destinationPort. The router will also have a limit to the number of ECMP paths that can be used, in modern TOR switches, this can be set to a size larger than a /24 subnet, however in old routers, the count can be less than 10. This needs to be considered in the infrastructure design and PureLB combined with routing software can help create a design that avoids this limitation. Another important consideration can be how the router load balancer cache is populated and updated when paths are removed, again modern devices provide better behavior.

不過由于都是使用ECMP,我們可以參考MetalLB官方給出的資料,下面是MetalLB給出的一些改進(jìn)方案,列出來給大家參考一下

使用更穩(wěn)定的ECMP算法來減少后端變動(dòng)時(shí)對(duì)現(xiàn)有連接的影響,如“resilient ECMP” or “resilient LAG”
將服務(wù)部署到特定的節(jié)點(diǎn)上減少可能帶來的影響
在流量低峰期進(jìn)行變更
將服務(wù)分開部署到兩個(gè)不同的LoadBalanceIP的服務(wù)中,然后利用DNS進(jìn)行流量切換
在客戶端加入透明的用戶無感的重試邏輯
在LoadBalance后面加入一層ingress來實(shí)現(xiàn)更優(yōu)雅的failover(但是并不是所有的服務(wù)都可以使用ingress)
接受現(xiàn)實(shí)……(Accept that there will be occasional bursts of reset connections. For low-availability internal services, this may be acceptable as-is.)

ECMP面臨的問題

ECMP是一種較為簡單的負(fù)載均衡策略,其在實(shí)際中面臨的問題也不容忽視。

可能增加鏈路的擁塞 ,ECMP并沒有擁塞感知的機(jī)制,只是將流分散到不同的路徑上轉(zhuǎn)發(fā)。對(duì)于已經(jīng)產(chǎn)生擁塞的路徑來說,很可能加劇路徑的擁塞。而使用哈希的方法,產(chǎn)生哈皮碰撞也會(huì)增加鏈路擁塞的可能。
非對(duì)稱網(wǎng)絡(luò)使用效果不好,例如在圖2中,A與h3之間的通信,ECMP只是均勻的將流通過B,D兩條路徑分別轉(zhuǎn)發(fā),但實(shí)際上,在B處可以承擔(dān)更多的流量。因?yàn)锽后面還有兩條路徑可以到達(dá)h3;
基于流的負(fù)載均衡效果不好,ECMP對(duì)于流大小相差不多的情況效果更好,而對(duì)于流大小差異較大,例如大象流和老鼠流并存的情況下,效果不好。如圖2,主機(jī)h1到A的流量為15,h2到A的流量為5.那么無論為h1的流量選擇哪條路徑都會(huì)發(fā)生擁塞。但若將h1的流拆分成為兩部分傳輸,可以避免擁塞的情況;

Cumulus

Troubleshooting BGP

cumulus ecmp

cumulus lldp

https://docs.redhat.com/zh_hans/documentation/red_hat_openstack_platform/17.1/html/configuring_red_hat_openstack_platform_networking/phys-cumulus-linux_config-physical-switch-osp-network

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容