lvs DR模式的筆記

2021-06-22 22:47:37 字數 1192 閱讀 7828

最近在配置lvs,想用lvs做個vip,這樣不用客戶端自己做lb

vip 機器上配置eth0虛擬ip,  

安裝lvs

使用

ipvsadm -a -t 192.168.59.106:8080 -s wlc  設定vip 和lb的策略

ipvsadm -a -t ip:port -r realip:port -g 設定真實ip 對映和傳遞策略

真實機器上配置lo的虛擬ip,

設定允許路由

route add -host ip  dev lo:0

真實機器上關閉這個虛擬ip的arp應答

echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce

echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce

客戶端請求到vip, 先傳送arp請求得到vip機器的mac位址,然後傳送tcp請求,在ethernet上填寫的是vip的mac位址也就是安裝lvs的伺服器的mac位址

lvs伺服器核心在收到包解析到mac位址的時候,修改包裡的mac位址到真實伺服器的mac位址然後重新請求,修改mac位址後的包,被真實伺服器收到,真實伺服器上因為也配有這個vip的虛擬ip,所以完成應答,然後直接回給客戶端,也不需要改變任何內容。

在客戶端抓包能看到,客戶端發出的包的mac位址是vip的位址 收到的包的對方的mac位址是真實的伺服器地的

在真實伺服器端抓包,因為被vip修改了mac位址,真實伺服器上能看到的是自己的mac位址和客戶端的mac位址

因為vip是在ip包前修改的,tcpdump無法抓到包

netstat 檢視 

客戶端和真實伺服器端檢視正常

也是因為vip是在ip包之前修改而無法檢視

效能比起ngix 自然是好

核心不需要對tcp層解析,減少核心呼叫

在真實伺服器回給客戶端時候,不需要通過中轉,直接回給客戶端,減少網路包的數量和開銷。

lvs的解決之道,主要是客戶端並不對請求mac的位址進行檢查。

LVS DR模式搭建

1 dr模式下分發器和真實伺服器要在同ip段 2 分發器和真是伺服器都需要設定相同的vip,並且都能通外網 3 負載均衡器安裝 yum install y ipvsadm 4 負載均衡 ifconfig eno16777984 0 172.16.54.244 24 route add host 17...

LVS DR模式搭建

ip 備註192.168.174.128 排程器 關閉防火牆 安全規則 192.168.174.130 web端 關閉防火牆 安全規則 192.168.174.131 web端 關閉防火牆 安全規則 三颱centos7 兩台web端搭建ecshop和ecshop1,一台安裝ipvsadm實現排程 安...

LVS DR模式搭建

出於對架構的興趣,一有時間我就會了解一下如何搭建乙個高併發,高可用,可擴充套件的伺服器執行環境。lvs dr究竟現在的企業運用頻率有多高其實我也不清楚,本文是下班之餘斷斷續續研究搭建筆錄,並且僅僅在virtual box虛擬機器實踐,沒有實際生產實踐。但是在搭建過程中確實學到了許多理論知識,這裡只記...