LVS-端口亲缘性
http? 80
smtp 25
pop3 110
imap 143
dns? udp 53
mysql 3306
ftp? 多個端口? 主被動模式
PORT:??? Server?? 21 <---------------------- client
??? ???? ????????? 20? ---------------------->
PASV????? Server? 21? <---------------------- client
???????????????????? >1024 <----------------------
http + ssl?? 80? /? 143端口? 也是多端口(網上購物80,支付寶結帳時443)
實現FTP多端口解決方案
???????????????????????? ______________ Client?? CIP?
??????????????????????? |
??????????????????????? |
????????????????????? DGW????
??????????????????????? |
??????????????????????? |?????????????????? VIP
?????????????????????? +-----------[Director]
??????????????????????? |??? ??? ??? DIP
??? ??? ??????? |
??? ??? ?????? +
??????????????????????? |
??? ?????? ----------------------??? ???
??? ?????? |???????????????????????? |
??? ?? [rs1]??? ??? ????? [rs2]?? FTP PASV模式
???
Clinet:
??? CIP:110.0.0.1/24
DGW:
??? 110.0.0.254
??? 192.168.1.15???
Director:
??? DIP:192.168.1.254/24
??? VIP:192.168.1.250/24
???
RealServer:
??? RIP:192.168.1.5
??? RIP:192.168.1.188
數據包走向:
1、 客戶端發出數據包
sip:CIP?? sport:12345? smac:client_mac
dip:VIP?? dport:21??????? dmac:client_gateway_mac
每經過一個路由器,MAC地址都會改變
2、DGW這的數據包
sip:CIP?? sport:12345? smac:DGW_mac
dip:VIP?? dport:21??????? dmac:VIP_mac
3、 Director收到的數據包
sip:CIP?? sport:12345? smac:DGW_mac
dip:VIP?? dport:21??????? dmac:VIP_mac
改變為
sip:CIP?? sport:12345? smac:DIP_mac
dip:VIP?? dport:21??????? dmac:RIP_mac??? 調度,把目標MAC改為Real Server 的MAC
4、RS收到數據包?? ifconfig? lo:0? VIP netmask 255.255.255.255
5、RS給CLIENT回數據包,如下:
sip:VIP? sport:21???? smac:RIP_mac
dip:CIP dport:12345? dmac:DGW_mac
并且打開一個 大于1024 隨機端口。告知給CLIENT,讓其過來取數據? ,那么這樣一個數據包的 IP /PORT分別是多少呢?
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? IP應該是VIP (因為客戶端請求的地址是VIP)
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? PORT應該是大于1024
? 6、 客戶端得知到服務器打開的大于1024的端口及IP時,則會發起一個新的TCP三次握手。找FTP服務器請求數據。?
?? 而這時,Director將收到client的數據傳輸的請求,而LVS程序剛只負責管理21端口。那么并不會把新的請求調度給Real Server
?? 此時,會登錄沒問題,但是數據傳輸出問題。
??????????????????????????? |
????????????????????? 也就是說,新的請求,也應該讓Director上的LVS程序進行分發。
????????????????????????????? 有人說,再加新的端口的規則? ipvsadm -A -t? VIP:new_data_transfer_port? -s? rr
????????????????????????????????????? |
??? ??? ??? ??? ?這樣并不可行,lvs調度時,將不會連續調度,必須寫到一個規則中
??? ??? ??? ??? ???????? |
??? ??? ??? ??? 通過FW標記來做? :-)
??? ??? ??? ??? Director:iptables -t mangle -A PREROUTING -p tcp -d VIP --dport 21 -j MARK --set-mark? 2121
??? ??? ??? ??? ?????????????? iptables -t mangle -A PREROUTING -p tcp -d VIP --dport 10000:20000 -j MARK --set-mark 2121(需要配置vsftpd監聽的被動模式端口)
??? ??? ??? ??? ?????
????????????????????????????????????????????? ipvsadm -A -f 2121 -s lc -p 600?? 這邊有個小問題需要注意,關于調度算法問題。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ipvsadm? -a? -f? 2121 -r? RIP1? -g
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ipvsadm? -a? -f? 2121 -r? RIP2? -g
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?-p 600 保持持久性連接??
轉載于:https://www.cnblogs.com/centos-python/articles/8522603.html
總結
- 上一篇: 知识点 - python 类的私有/保护
- 下一篇: SQLSetEnvAttr