對(duì)LVS只做了粗淺的了解,LVS的工作模式主要分
- VS-NAT
- VS-DRouting
- VS-IPTunneling
其中用的最多的是NAT模式,下面分別來闡述下
VS-NAT
原理圖

請(qǐng)求到達(dá)lvs之后,lvs會(huì)重寫數(shù)據(jù)包的目的地址到real server ip:port,并將請(qǐng)求轉(zhuǎn)發(fā)給real server,real server處理完之后,將請(qǐng)求包反饋給lvs,lvs修改數(shù)據(jù)包的源地址為vip:port.
假設(shè)202.100.1.2:3456是客戶端的地址,202.103.106.5:80是LVS的虛擬地址,172.16.0.3:8000是內(nèi)網(wǎng)真實(shí)server地址。
The incoming packet for web service would has source and destination addresses as:
SOURCE 202.100.1.2:3456 DEST 202.103.106.5:80
The load balancer will choose a real server, e.g. 172.16.0.3:8000. The packet would >be rewritten and forwarded to the server as:SOURCE 202.100.1.2:3456 DEST 172.16.0.3:8000
Replies get back to the load balancer as:SOURCE 172.16.0.3:8000 DEST 202.100.1.2:3456
The packets would be written back to the virtual server address and returned to the client as:SOURCE 202.103.106.5:80 DEST 202.100.1.2:3456
疑問1:對(duì)于返回的數(shù)據(jù)包怎么DEST是202.100.1.2:3456,還是會(huì)請(qǐng)求到LVS呢?
解答:這個(gè)其實(shí)是因?yàn)楹蠖说膔eal server沒有獨(dú)立的公網(wǎng)IP,在real server上有配置路由規(guī)則,LVS是該機(jī)器上所有外網(wǎng)請(qǐng)求的網(wǎng)關(guān)。
VS-DRouting
原理圖

在dr模式下:
- lvs只是接收client的請(qǐng)求,response是直接由后端的real server返回給client的,相當(dāng)于lvs只是做了負(fù)載均衡。
- 要求所有的real server都必須要有公網(wǎng)IP。
- lvs和real server都需要共享這個(gè)虛IP,所以lvs和real server必須要在同一個(gè)物理網(wǎng)段下。
疑問1: 為什么lvs和real server必須要在同一個(gè)物理網(wǎng)段?因?yàn)橐蚕硪粋€(gè)虛擬IP。為什么只有同一個(gè)物理網(wǎng)段才能共享同一個(gè)虛擬IP呢?
疑問2:這是通過MAC地址轉(zhuǎn)發(fā)嗎,走的數(shù)據(jù)鏈路層?
流程圖

VS-IPTunneling
原理圖

在ip-tunneling模式下:
- lvs只是接收client的請(qǐng)求,response是直接由后端的real server返回給client的,相當(dāng)于lvs只是做了負(fù)載均衡(與dr模式一致)。
- 這個(gè)要求所有的real server都必須要有公網(wǎng)IP(與dr模式一致)。
- real server不需要跟lvs在同一個(gè)網(wǎng)段下,也不需要共享一個(gè)虛擬IP。
流程圖

疑問1: client請(qǐng)求的時(shí)候dest是lvs的外網(wǎng)地址,但接收包的src變成real server的外網(wǎng)地址了,client還會(huì)認(rèn)這個(gè)包嗎,不會(huì)認(rèn)為這個(gè)是偽造的請(qǐng)求回復(fù)包?
疑問2:IP封包技術(shù),走IP層的轉(zhuǎn)發(fā)?對(duì)下層透明
其他說明
echo 1 > /proc/sys/net/ipv4/ip_forward
作用?