LVS-DR
- Direct Routing,简称DR模式采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络
- 负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道
LVS-DR的数据流向
为了方便分析,将client与群集机器放在同一个网络中,结构图如下,数据包流经的路线为1-2-3。
在DR模式中,服务器返回处理请求时,不经过负载调度器,直接返回给用户,这样很大程度上减轻了调度器的压力。
具体数据包流向如下:
1.client向VIP发送请求,调度器接收,数据帧格式如下:
源MAC | 目标MAC | … | 源IP | 目标ip | … |
---|---|---|---|---|---|
MACC | MACA | 192.168.10.30 | 192.168.10.8 |
2.调度器根据负载均衡算法选择server1,不修改也不封装IP报文,而是将数据帧的MAC地址改为server1的MAC地址,在局域网上传播,数据帧合适如下
源MAC | 目标MAC | … | 源IP | 目标ip | … |
---|---|---|---|---|---|
MACA | MACAB | 192.168.10.30 | 192.168.10.8 |
3.server1收到数据帧后,解封装发现目标ip与本机匹配(绑定过VIP),处理过后,发送到局域网,数据帧格式如下
源MAC | 目标MAC | … | 源IP | 目标ip | … |
---|---|---|---|---|---|
MACB | MACC | 192.168.10.8 | 192.168.10.30 |
4.client收到回复的报文
如果是跨网段,则报文经过路由器Internet放回给用户
LVS-DR中的ARP问题
由于在LVS-DR中调度服务器和真实服务器上都配置了VIP地址,所以在局域网进行ARP广播,请求MAC地址时,各个设备都回去响应这样就会造成混乱,所以我们要抑制真实服务器对此ARP的响应,这样客户就可以正确的将请求发送到调度服务器上了,具体为:
- 使用虚接口lo:0承载VIP
- 设置内核参数arp_ignore=1,表示系统只响应目的IP为本地IP的arp请求
keepalived
为了防止只有一台调度服务器带来的单点故障,如果调度服务器故障整个架构及瘫