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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值