标签:lvs中dr类型集群实现
LVS负载均衡集群中DR类型的架构图示如下:
图中,客户端发送的请求会由路由器和交换机转发后直接达到director。再由director调度给指定的real server ,最后由real server直接响应给客户端而不经过director,在此架构中director和real server的网络架构是此类型的重点。所以,配置DR类型一定要注意以下两点:
(1) 各RS要直接响应Client,因此,各RS均得配置VIP;但仅能够让Director上的VIP能够与本地路由直接通信;
(2) Director不会拆除或修改请求报文的IP首部,而是通过封闭新的帧首部(源MAC为Director的MAC,目标MAC为挑选出的RS的MAC)完成调度。
要完成上述的要求,着实很难,因为RS和DR都有VIP,而请求进入时必须最先发送给DR,所以,在DR类型中,首先通过ARP广播确认DR主机,其他RS主机不响应,这就确定了哪一个是DR主机。
但是在linux主机中,IP地址不属于网卡而是属于内核,就是说无论一个linux主机有多少个IP地址,它在接入的各个网络中都会公布它拥有的所有地址,这就给ARP广播的响应制造了困难,所以就需要修改内核参数来保证router发出ARP广播时,DR会响应RS不予响应,这里所说的内核参数分别为:
#arp_announce:定义arp通知级别;
0:默认级别,在各个网络中通告本机所含有的所有地址
1:尽量不在各个网络中通告本机中含有的不属于该网络的地址
2:不在各个网络中通告本机中含有的不属于该网络的地址
#arp_ignore:定义arp忽略arp请求或arp通告的级别;
0:(默认值): 回应任何网络接口上对任何本地IP地址的arp查询请求
1:只回答目标IP地址是来访网络接口本地地址的ARP查询请求
2:只回答目标IP地址是来访网络接口本地地址的ARP查询请求,且来访IP必须在该网络接口的子网段内
3:不回应该网络界面的arp请求,而只对设置的唯一和连接地址做出回应
4-7:保留未使用
8:不回应所有(本地地址)的arp查询
举例1:VIP、DIP、RIP在同一网段时的DR类型负载均衡
首先设计网络拓扑,我在这里准备三个虚拟机,V1作为director,V2、V3作为real server。
设计完拓扑,现在开始配置:
在V1上更改IP地址
Ifconfigeth0 172.16.50.11 up
Ifconfig eth0:0 172.16.50.12 netmask255.255.255.255 broadcast 172.16.50.12 up
Routeadd –host 172.16.50.12 dev eth0:0
在V2、V3上更改地址:
Ifconfigeth0 172.16.50.21 up
Ifconfiglo:0 172.16.50.12 netmask 255.255.255.255 broadcast 172.16.50.12 up
Route add –host 172.16.50.12 dev lo:0
Ifconfigeth0 172.16.50.31 up
Ifconfiglo:0 172.16.50.12 netmask 255.255.255.255 broadcast 172.16.50.12 up
Routeadd –host 172.16.50.12 dev lo:0
不留图了
更改V2、V3的内核参数(不更改的话会ping不通)
echo1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo2 > /proc/sys/net/ipv4/conf/all/arp_announce
如果觉得不放心的话,还可以再执行两个命令
echo1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo2 > /proc/sys/net/ipv4/conf/lo/arp_announce
现在就可以添加规则了
在V1上执行如下命令:
Ipvsadm–A –t 172.16.50.12:80 –s rr
Ipvsadm–a –t 172.16.50.12:80 –r 172.16.50.21 –g –w 1 这里加权重是为了以后改算法省事
Ipvsadm–a –t 172.16.50.12:80 –r 172.16.50.31 –g –w 2
这样就完成了同网段内DR类型的负载均衡配置。
举例2:VIP、DIP、RIP在不在同一网段时的DR类型负载均衡
首先设计网络拓扑,我在这里准备三个虚拟机,V1作为director,V2、V3作为real server。环境中应有两个网段172.16.0.1和192.168.0.254且打开了路由间转发功能。
设计完拓扑,现在开始配置:
在V1上更改IP地址
Ifconfigeth0 192.18.0.11 up
Routeadd default gw 192.168.0.254
Ifconfigeth0:0 172.16.50.12 netmask 255.255.255.255 broadcast 172.16.50.12 up
Routeadd –host 172.16.50.12 dev eth0:0
在V2、V3上更改地址:
Ifconfigeth0 192.168.0.21 up
Routeadd default gw 192.168.0.254
Ifconfiglo:0 172.16.50.12 netmask 255.255.255.255 broadcast 172.16.50.12 up
Routeadd –host 172.16.50.12 dev lo:0
Ifconfigeth0 192.168.0.31 up
Routeadd default gw 192.168.0.254
Ifconfiglo:0 172.16.50.12 netmask 255.255.255.255 broadcast 172.16.50.12 up
Routeadd –host 172.16.50.12 dev lo:0
不留图了
更改V2、V3的内核参数(不更改的话会ping不通)
echo1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo2 > /proc/sys/net/ipv4/conf/all/arp_announce
如果觉得不放心的话,还可以再执行两个命令
echo1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo2 > /proc/sys/net/ipv4/conf/lo/arp_announce
现在就可以添加规则了
在V1上执行如下命令:
Ipvsadm–A –t 172.16.50.12:80 –s rr
Ipvsadm–a –t 172.16.50.12:80 –r 192.168.0.21:80 –g –w 1 这里加权重是为了以后改算法省事
Ipvsadm–a –t 172.16.50.12:80 –r 192.168.0.31:80 –g –w 2
这样就完成了不通网段内DR类型的负载均衡配置。
注意:在普通电脑上实现这个负载均衡,访问页面时会反应比较慢,不要以为没成功,是慢!慢!慢!
标签:lvs中dr类型集群实现
原文地址:http://brave666.blog.51cto.com/12079391/1975234