1. LVS-DR数据包流向分析
- 客户端发送请求到Director Server(负载均衡器),请求的数据报文(源IP是CIP,目标IP是VIP)到达内核空间
- Director Server和Real Server在同一个网络中,数据通过二层数据链路层来传输
- 首先内核空间判断数据包的目标IP是否为本机VIP,同时IPVS(IP虚拟服务器)比对数据包请求的服务是否是群集服务,如果是群集服务就重新封装数据包。然后修改源MAC地址为Director Server的MAC地址,修改目标MAC地址为Real Server的MAC地址,源IP地址与目标IP地址不变,最后将数据包发送给Real Server
- 如果到达Real Server的请求报文的MAC地址是自身的MAC地址,就接收此报文。然后数据包重新封装报文(源IP地址为VIP,目标IP为CIP)时,将响应报文通过lo接口再传送给物理网卡并向外发出
- Real Server直接将响应报文传送到客户端
2. LVS-DR中ARP问题
2.1 ARP广播
问题:VIP地址相同导致所有节点服务器和调度器通信紊乱
解决方法——
原理:使其不响应针对VIP的ARP请求
方法:对节点服务器进行处理,使用虚接口lo:0承载VIP地址,设置内核参数arp_ignore=1
效果:系统只会根据本地IP的ARP请求响应目的IP
2.2 ARP表项
问题:路由器根据ARP表项将新来的请求报文转发给RealServer,导致Director的VIP调度器失效
解决方法——
原理:使系统不使用IP包的源地址(VIP)来设置ARP请求的源地址,而 选择发送接口的IP地址作为ARP请求报文的源IP地址
方法:对节点服务器进行处理,设置内核参数arp announce=2
效果:可以防止网关路由器接受到以VIP为源IP地址发送的请求报文后又更新ARP缓存表,导致外网在发送请求时数据包到达不了调度器
3. LVS-DR特性
- Director Server和Real Server必须在同一个物理网络中
- Real Server可以使用私有地址,也可以使用公网地址。如果使用公网地址,可以通过互联网对RIP进行直接访问
- Director Server可以作为群集的访问入口,但不作为网关使用
- 所有的请求报文经由Director Server,但回复响应报文不能经过 Director Server
- Real Server的网关不允许指向Director Server的IP,即Real Server发送的数据包不允许经过Director Server
- Real Server上的lo接口可以用来配置VIP的IP地址