DR:客户端请求,director接收客户端响应,通过交换机进行调度分发其中某个服务器,然后该服务器直接响应用户请求

不需要再通过director响应客户端(director只处理进站请求)

ARP协议解析得到mac地址:广播

1、各集群节点必须和director在同一物理网络中(进行的是MAC地址通信)

2、RIP可以使用公网地址,实现便捷的远程管理和监控

3、director仅负责处理入站请求,响应报文则由RIP直接发往客户端

4、real sever不能将网关指向DIP,director直接只有一个网卡,都在同一网段

5、RIP必须隐藏VIP(VIP就是RIP上ip别名),director上也有VIP别名(也是隐藏VIP)

6、不支持端口映射



                            director

                            | 

DR模型:                    |

客户端----》路由-------》交换机----》RS1

                            |

                            |

                            RS2 

当客户端发起ip请求时,到达INPUT链进入PREROUTING链时,

监听在INPUT链上的director发现请求的是集群服务上的web服务的80端口时,根据规则修改报文的传输

(不会动报文的ip首部,tcp首部),director在原有的报文外面封装了一个MAC地址(源地址为director的MAC地址)

根据算法进行挑选RS,进行RS中ip地址所对应的MAC地址为目标地址

在每一个real server都配上一个VIP地址,RS响应完报文之后,直接通过交换机

路由将响应的报文传输给客户端


路由判断VIP:根据mac地址

arptables:定义规则哪些VIP给予响应,哪些不响应


内核参数:

arp_ignore:定义接收到ARP请求时的响应级别

0:默认级别(只要本地配置的有相应地址,就给予响应)

1:仅仅在请求的目标地址配置在请求到达的接口上的时候,才给予响应

arp_announce:定义将自己地址向外通告的通告级别

0:将本机任何接口上的任何地址向外通告(默认)

1:试图仅向目标网络通过与其网络匹配的地址

2:仅向与本地接口上地址匹配的网络进行通告



ip分配:

director:

DIP(eth0):只需要一块网卡

ip:192.168.31.100 gateway 192.168.31.1 netmask 255.255.255.0

VIP:

eth0:0

ifconfig eth0:0 192.168.31.111 broadcast 192.168.31.111 netmask 255.255.255.255 up

route add -host 192.168.31.111 dev eth0:0

route add -host VIP dev eth0:0(相当于就是当访问的是VIP的时候,从设备eth0:0进出)


RS1:

ip:192.168.31.112 gateway 192.168.31.1 netmask 255.255.255.0

配置完RIP之后再配置arp_announce,arp_ignore

/proc/sys/net/ipv4/conf/all/arp_announce全局配置为2

/proc/sys/net/ipv4/conf/all/arp_ignore全局配置为1

/proc/sys/net/ipv4/conf/eth0/arp_announce局部也需要配置为2

/proc/sys/net/ipv4/conf/eth0/arp_ignore局部也需要配置为1

然后最后配置VIP:

ifconfig lo:0 192.168.31.111 broadcast 192.168.31.111 netmask 255.255.255.255 up

route add -host 192.168.31.111 dev lo:0



RS2:

ip:192.168.31.113 gateway 192.168.31.1 netmask 255.255.255.0

配置完RIP之后再配置arp_announce,arp_ignore

/proc/sys/net/ipv4/conf/all/arp_announce全局配置为2

/proc/sys/net/ipv4/conf/all/arp_ignore全局配置为1

/proc/sys/net/ipv4/conf/eth0/arp_announce局部也需要配置为2

/proc/sys/net/ipv4/conf/eth0/arp_ignore局部也需要配置为1

然后最后配置VIP:

ifconfig lo:0 192.168.31.111 broadcast 192.168.31.111 netmask 255.255.255.255 up

route add -host 192.168.31.111 dev lo:0


接下来创建集群服务:

ipvsadm -A -t 192.168.31.111:80 -s wlc

ipvsadm -a -t 192.168.31.111:80 -r 192.168.31.112 -g -w 2

ipvsadm -a -t 192.168.31.111:80 -r 192.168.31.113 -g -w 1

于是访问浏览器:

http://192.168.31.111(访问的是VIP的IP地址)


director的DIP也可以作为RS的ip进行负载均衡,操作如下:

ipvsadm -a -t 192.168.31.111:80 -r 127.0.0.1 -g:添加本地ip到ipvsadm即可


curl:

--connect-timeout n:定义连接的超时时间

curl --connect-timeout 1 http://192.168.31.111

-I:获取页面的响应首部

-s:输出静音模式


记录:

当创建完成DR模型之后,本人开始使用的是RR算法进行轮询,但是在浏览器中输入ip之后,开始显示的RS1的web访问,中间间隔了几分钟都刷新不懂DR,几分钟之后再次刷新之后就不变成了RS2,不知道是怎么一回事,先mark一下: