码迷,mamicode.com
首页 > 其他好文 > 详细

LVS中DR类型集群实现

时间:2017-10-23 15:43:54      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:lvs中dr类型集群实现

LVS负载均衡集群中DR类型的架构图示如下:

技术分享

图中,客户端发送的请求会由路由器和交换机转发后直接达到director。再由director调度给指定的real server ,最后由real server直接响应给客户端而不经过director,在此架构中directorreal server的网络架构是此类型的重点。所以,配置DR类型一定要注意以下两点:

(1) RS要直接响应Client,因此,各RS均得配置VIP;但仅能够让Director上的VIP能够与本地路由直接通信;

(2) Director不会拆除或修改请求报文的IP首部,而是通过封闭新的帧首部(源MACDirectorMAC,目标MAC为挑选出的RSMAC)完成调度。

要完成上述的要求,着实很难,因为RSDR都有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查询

 

举例1VIPDIPRIP在同一网段时的DR类型负载均衡

首先设计网络拓扑,我在这里准备三个虚拟机,V1作为directorV2V3作为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

技术分享

V2V3上更改地址:

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

不留图了

更改V2V3的内核参数(不更改的话会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类型的负载均衡配置。

 

举例2VIPDIPRIP在不在同一网段时的DR类型负载均衡

首先设计网络拓扑,我在这里准备三个虚拟机,V1作为directorV2V3作为real server。环境中应有两个网段172.16.0.1192.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

V2V3上更改地址:

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

不留图了

更改V2V3的内核参数(不更改的话会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类型集群实现

标签:lvs中dr类型集群实现

原文地址:http://brave666.blog.51cto.com/12079391/1975234

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!