日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

keepalived vip ping不通_【干货分享】OpenStack LVS负载均衡为什么不通?

發(fā)布時間:2023/12/9 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 keepalived vip ping不通_【干货分享】OpenStack LVS负载均衡为什么不通? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

OpenStack環(huán)境Neutron 的安全組會向虛擬機默認添加?anti-spoof?的規(guī)則,將保證虛擬機只能發(fā)出/接收以本機Port為原地址或目的地址(IP、MAC)的流量,提高了云的安全性。但是LVS等需要綁定VIP的場景,默認流量是被攔截的。需要做allow pairs設(shè)置才能放通流量。

02

業(yè)務(wù)拓撲

● Director Server分發(fā)器

VIP:xx.xx.xx.241

內(nèi)網(wǎng)IP 主xx.xx.xx.5

? ? ? ? ? ? 備xx.xx.xx.7

Keepalived配置文件路徑 /etc/keepalived/keepalived.conf

● 真實服務(wù)器RS關(guān)閉ARP,并添加lo:0 IP為VIP

內(nèi)網(wǎng)(專網(wǎng))IP xx.xx.xx.8?? xx.xx.xx.10

? ? ? ? ? ? ? ? ? ? ? xx.xx.xx.11 ??xx.xx.xx.13

以上六臺虛擬機都對VIP做過allowed_address_pairs(僅對VIP做的,后面會詳述)。

03

問題現(xiàn)象

配置了LVS的DR模式,配置完成后Client ping VIP可以通,但是發(fā)送HTTP請求,沒有反應(yīng)。抓包發(fā)現(xiàn),Director收到了Client的報文,但是RS沒有收到HTTP請求,只有VRRP報文。

04

排除過程

4.1懷疑是LVS配置問題

Client能ping通VIP,CURL VIP沒響應(yīng),LVS 處在SYN_RECV狀態(tài),抓包發(fā)現(xiàn),LB端有進來的VIP報文,RS沒有。問題應(yīng)該是LB端發(fā)不出去,或RS收不到報文。

結(jié)果

反復(fù)檢查keepalived和RS配置,沒有問題。同樣的配置在非openstack上跑,可以跑通。排除配置問題。

4.2?懷疑是宿主機防火墻問題

4.2.1 懷疑是宿主機本地防火墻規(guī)則問題

在查看宿主機防火墻cat /etc/sysconfig/firewalld的時候,發(fā)現(xiàn)有一條規(guī)則影響業(yè)務(wù),注掉并重啟防火墻就可以跑通業(yè)務(wù)。

重啟宿主機iptables后:

結(jié)果

其實并不是這個問題,是重啟防火墻之后,啟用了本地防火墻規(guī)則,把原先Neutron的防火墻規(guī)則沖掉了,iptables幾乎都空了,所以業(yè)務(wù)感覺通了。等Neutron同步規(guī)則后,還是會不通。

4.2.2懷疑是虛機防火墻問題

一開始出現(xiàn)不通的時候, iptables -F清空虛機里面的iptables規(guī)則,發(fā)現(xiàn)并沒有實質(zhì)作用

還是必須重啟宿主機的iptables。

虛機iptables規(guī)則:

結(jié)果

其實虛機的iptables已經(jīng)幾乎沒有規(guī)則了,也并沒有影響業(yè)務(wù)的條目。重啟宿主機iptables通,實則還是上一個問題,把宿主機本地Neutron的iptables規(guī)則給沖了。

4.2.3懷疑是Neutron安全組問題

后期排查主要是在Neutron安全組方向。必現(xiàn)的場景是,在刪除增加后端或者重啟Neutron-openvswitch-agent的時候,業(yè)務(wù)就不通了。

● 嘗試分別對LVS節(jié)點(xx.xx.xx.5、xx.xx.xx.7)和RS節(jié)點(xx.xx.xx.8、xx.xx.xx.10、xx.xx.xx.11、xx.xx.xx.13)做了allow_pairs,但是業(yè)務(wù)不通。

Dump宿主機防火墻的時候,發(fā)現(xiàn)如下規(guī)則:

這些條目出現(xiàn)的原因是對Port和VIP做了allow_pairs綁定。會生成對應(yīng)條目的iptables。由Chain ID追溯,是Neutron-openvswi-FORWARD規(guī)則,屬于虛機Port轉(zhuǎn)發(fā)鏈規(guī)則,問題應(yīng)該就是出在這邊。

● 嘗試對LVS的Port加了80端口的放通規(guī)則后,業(yè)務(wù)通了:

結(jié)果

確實是安全組導(dǎo)致iptables把流量給drop了,有多個辦法可以規(guī)避這個問題:

● 在iptables對應(yīng)子鏈加規(guī)則放行。但是在界面更新或’neutron-openvswitch-agent’重啟的時候,Neutron重新下發(fā)規(guī)則,會刷掉本地手動加的規(guī)則,不可以完全保證業(yè)務(wù)不通。

● 把端口的port-curity-enable設(shè)置成false,但是安全組不再生效

● 寫腳本探測iptables重載,再添加規(guī)則。但是規(guī)則沒有添加的瞬間,也會出現(xiàn)業(yè)務(wù)短時間斷的情況。

●? 在’neutron-openvswitch-agent’里添加規(guī)則放行,但是需要修改Agent,太麻煩。

●??在安全組設(shè)置這個規(guī)則,但是沒找到相應(yīng)的入口。

05

解決方案

5.1 LVS DR模式模型原理

DR模式的工作過程

●??Client 發(fā)送Request包到LB服務(wù)器的VIP上

●??負載均衡服務(wù)器根據(jù)VIP選擇對應(yīng)的RS。然后修改報文目的MAC為RS的MAC地址,將Client的請求發(fā)給RS

●??被選擇的RS把應(yīng)答包直接傳給Client

5.2 問題根本原因

上面的DR模式過程可以看出,LVS轉(zhuǎn)發(fā)過程中不修改IP,只修改DST MAC,Source IP沒變。而由上面的截圖可以看出,allow_pairs在iptables里是用一組IP和MAC的組合規(guī)則來放通流量。所以只綁定VIP為allow_pairs,實際是VIP和自己網(wǎng)卡的MAC的規(guī)則,而目的MAC在經(jīng)過LVS的時候已經(jīng)被修改成后端MAC了,流量自然就過不去。而VRRP報文能出去的原因是IP和MAC都是本機的,在iptables里。

5.3 解決辦法

● 負載均衡器設(shè)置

1. 一種辦法,因為Client的CIP是任意的,負載均衡器需要轉(zhuǎn)發(fā)Source IP為CIP的報文,所以可以讓allow_pairs綁定IP為0.0.0.0/0,讓所有的IP可以從Director出去。原理是放開了基于本機MAC的所有IP報文。如:neutron port-update port_id --allowed-address-pairs type=dict list=true ip_address=0.0.0.0/02. 另一種辦法,負載均衡器修改的目的MAC是后端服務(wù)器的,可以把后端服務(wù)器的MAC都加到allow_pairs。如果MAC不確定的情況,直接設(shè)成0:0:0:0:0:0,放開所有的MAC。如:neutron port-update port_id --allowed-address-pairs type=dict list=true ip_address=$VIP mac_address=$RSMAC● 后端設(shè)置因為RS需要轉(zhuǎn)發(fā)Source IP為VIP的報文,所以應(yīng)該對RS對應(yīng)PORT 做放開VIP的allow_pairs。如:neutron port-update port_id --allowed-address-pairs type=dict list=true ip_address=$VIP

添加后的iptables會出現(xiàn)如下的規(guī)則:

問題解決

5.4 可能出現(xiàn)的安全問題

因為上述規(guī)則實際上是放開了對應(yīng)虛機的流量限制,DR模式可以讓任意IP或者MAC能訪問VIP,流量從LVS節(jié)點透傳過來,這個對虛機和應(yīng)用的安全性會有一定的隱患,這里有幾條安全建議:

1.搭建前端硬件防火墻

2.虛機操作日志記錄,權(quán)限管理

3.虛機安裝安全軟件

4.虛機arp_announce設(shè)置成2(總是使用最合適的網(wǎng)卡來響應(yīng))

5.虛機iptables設(shè)置,只允許VRRP和對應(yīng)TCP+PORT的規(guī)則

6.更換NAT/TUNNEL/FULLNAT,可以做內(nèi)外網(wǎng)隔離的模式

06

總結(jié)

LVS的特點是需要在Port添加VIP,內(nèi)部去進行地址的轉(zhuǎn)換,再發(fā)給后端。單純在iptables層去修改問題,還是會被Neutron刷新??梢栽诎踩M里面去修改,也可以在Neutron命令行設(shè)置,才能保證設(shè)置持久化,不會出現(xiàn)iptables被刷新的問題。

OpenStack的網(wǎng)絡(luò)環(huán)境iptables規(guī)則比較復(fù)雜,出現(xiàn)問題的時候,應(yīng)該在iptables找到自己的IP:Port,NIC Dev ID, 子Chain ID,向上追溯屬于哪條鏈、哪個表,再結(jié)合網(wǎng)絡(luò)拓撲和業(yè)務(wù)場景去規(guī)劃和設(shè)置確定問題在哪。

單純考慮到VIP是不夠的。類似問題解決辦法不是一成不變的,除了剛才提到的,還有多種辦法,可以關(guān)閉Port安全組,也可以在安全組添加條目,或者修改agent代碼關(guān)閉Port的firewall或者添加accept條目等等,方法有很多,需要權(quán)衡利弊根據(jù)需求選擇。

End

往期推薦

【干貨分享】|??深度解析python之生成器

【干貨分享】|??大云彈性計算產(chǎn)品BC-EC全面支持跨版本升級

【干貨分享】|??為啥熱遷移總是斷網(wǎng)呢?

總結(jié)

以上是生活随笔為你收集整理的keepalived vip ping不通_【干货分享】OpenStack LVS负载均衡为什么不通?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。