LB:实用的负载均衡群集原理及实现(2)

目标地址转换,即所有客户端的请求都被Director根据访问请求和算法被定向到后台的Real Server 上,后台的Real Server回应客户端的数据包也要经过Director返回给客户端,地址转换过程如图5-1所示:

clip_image008

图5-1

LVS-NAT特性:

1、Director和Real Server必须在同一个网段中;

2、一般情况下,RIP是私有地址,只用于集群内部节点间通信;

3、Director 会响应所有的请求在客户端和Real Server之间,所承担的负载较大;

4、所有的Real IP 网关必须指向DIP以响应客户端请求;

5、Director可以重映射网络端口,即前端使用标准端口,后端使用非标准端口;

6、后台的Real Server可以使用任何操作系统;

7、Director可能会成为系统瓶颈。

LVS-NAT集群的设计及实现

拓扑如图5-2所示:

clip_image010

图5-2

Director : VIP 192.168.0.80

DIP 192.168.110.254

Real Server 1: RIP 192.168.10.2 网关指向:192.168.110.254

提供Web服务,测试页内容为 Web1

Real Server 2: RIP 192.168.10.3 网关指向:192.168.110.254

提供Web服务,测试页内容为 Web2

Client: 192.168.0.1 客户端

Real Server 1:

# ifconfig eth0 192.168.110.2 //为eth0 设置IP地址;

# route add default gw 192.168.110.254 //添加网关;

Real Server 2:

# ifconfig eth0 192.168.110.3 //同上;

# route add default gw 192.168.110.254 //同上;

Director:

# ifconfig eth1 192.168.110.254 //为Director 设置DIP;

# echo 1 > /proc/sys/net/ipv4/ip_forward //开启内核路由功能;

# vim /etc/sysctl.conf //修改内核参数,确保永久有效;

net.ipv4.ip_forward = 1

# sysctl -p //查看内核参数;

net.ipv4.ip_forward = 1

准备工作已经配置完毕,开始LVS-NAT的配置:

# yum install ipvsadm -y //安装ipvsadm工具;

# ipvsadm -A -t 192.168.0.80:80 -s rr //定义服务,设定算法

为服务添加Real Server并设置权重:

# ipvsadm -a -t 192.168.0.80:80 -r 192.168.110.2 -m -w 5

# ipvsadm -a -t 192.168.0.80:80 -r 192.168.110.3 -m -w 2

# ipvsadm -Ln //查看服务状态;

-> RemoteAddress:Port Forward Weight ActiveConn InActConn

TCP 192.168.0.80:80 rr

-> 192.168.110.3:80 Masq 5 0 11

-> 192.168.110.2:80 Masq 2 0 12

此时,我们使用物理机访问http:192.168.0.80就会发现页面出现交替变化的情况,这是由RR算法的特性决定的。我们改变为WRR算法试试:

# ipvsadm -E -t 192.168.0.80:80 -s wrr //改为WRR调度算法;

# ipvsadm -Ln

-> RemoteAddress:Port Forward Weight ActiveConn InActConn

TCP 192.168.0.80:80 wrr

-> 192.168.110.3:80 Masq 5 0 50

-> 192.168.110.2:80 Masq 2 0 21

改变为LBLC算法:

# ipvsadm -E -t 192.168.0.80:80 -s lblc

# ipvsadm -Ln

-> RemoteAddress:Port Forward Weight ActiveConn InActConn

TCP 192.168.0.80:80 lblc

-> 192.168.110.3:80 Masq 5 0 100

-> 192.168.110.2:80 Masq 2 0 35

此时会发现无论客户端怎么刷新,访问页面都不会改变,这是由LBLC调度算法所决定的。

六、LVS-DR

直接路由就是客户端请求经过Director分发给Real Server后,Real Server直接回应客户端。如图6-1所示,数据包地址转换过程:

clip_image012

图6-1

LVS-DR特性:

1、Real Server 上必须配置VIP且需要隐藏起来,只有在响应客户端请求时才使用VIP作为源地址,除此之外并不使用此VIP;

2、集群节点和Director必须在同一个网络中;

3、RIP不要求为私有地址;

4、Director仅处理所有进来的请求;

5、Real Server 不能以DIP作为网关,而是以公网上的某台路由器作为网关;

6、Director 不能再使用端口重映射;

7、大多数操作系统可以被用来作为Real Server,windows除外;

8、LVS-DR模式可以处理比LVS-NAT更多的请求。

LVS-DR为实际生产环境中最常用的一种方式,因为RIP 为公网地址,管理员可以远程连接Real Server来查看工作状态;当Director 当掉,可以通过修改DNS记录将A记录指向RIP 继续向外提供服务。

Director分发到Real Server的过程中,数据包的源地址和目标地址都没有发生改变,Director仅仅是将目标mac地址转换成某台Real Server的mac地址,源mac地址改为Director内网网卡的mac地址。这里,我们要解决的两个技术难题:

1、Real Server要避免回应客户端发来的对VIP的arp地址解析请求;

解决方法:

修改内核的两个参数:arp_announce, arp_ignore;

arp_announce :定义不同级别:当ARP请求通过某个端口进来是否利用这个接口来回应;

0 默认级别,利用本地的任何地址,不管配置在哪个接口上去响应ARP请求;

1 避免使用另外一个接口上的mac地址去响应ARP请求;

2 尽可能使用能够匹配到ARP请求的最佳地址。

arp_ignore:当ARP请求发过来后发现自己正是请求的地址是否响应;

0 默认级别,利用本地的任何地址,不管配置在哪个接口上去响应ARP请求;

1 哪个接口上接受ARP请求,就从哪个端口上回应。

Red Hat系统提供了arptables工具,利用arp防火墙也可以实现。

2、当Real Server内网网卡响应客户端请求时,要以VIP作为源地址,不能以RIP作为源地址。

解决方法:添加一条路由

route add -host 192.168.110.1 dev lo:0

使客户端访问VIP,就让VIP来响应客户端。这样避免了使用RIP作为源地址。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/e03a22d8faadec57b8134b44918d408a.html