Linux 集群的基本概念与LB(负载均衡)集群详解(3)

五、LVS-DR 模式演示

实验图:

Lvs-DR

1.ip 规则

Director:

eth0 172.16.100.2 DIP

eth0:0 172.16.100.1 VIP

RS1:

eth0: 172.16.100.10 RIP

lo0:0 172.16.100.1 VIP

RS2:

eth0: 172.16.100.11 RIP

lo0:0 172.16.100.1 VIP

2.关闭arp响应

RS1与RS2:

1

2

3

4

 

sysctl -w net.ipv4.conf.eth0.arp_announce=2

sysctl -w net.ipv4.conf.all.arp_announce=2

echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

 

说明:

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

0:只要本地配置的有相应地址,就给予响应;

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

arp_ignore = 1

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

0:将本地任何接口上的任何地址向外通告;

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

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

arp_announce = 2

3.配置VIP

Director:

1

 

[root@master ~]# ifconfig eth0:0 172.16.100.1 netmask 255.255.255.0

 

RS1:

1

 

[root@rs1 ~]# ifconfig lo:0 172.16.100.1 broadcast 172.16.100.1 netmask 255.255.255.255 up

 

RS2:

1

 

[root@rs2 ~]# ifconfig lo:0 172.16.100.1 broadcast 172.16.100.1 netmask 255.255.255.255 up

 

4.增加路由

RS1:

1

 

[root@rs1~]# route add -host 172.16.100.1 dev lo:0

 

RS2:

1

 

[root@rs2~]# route add -host 172.16.100.1 dev lo:0

 

Director:

1

 

[root@master ~]# route add -host 172.16.100.1 dev eth0:0

 

5.配置lvs-dr

1

2

3

 

[root@master ~]# ipvsadm -A -t 172.16.100.1:80 -s wlc

[root@master ~]# ipvsadm -a -t 172.16.100.1:80 -r 172.16.100.10 -g -w 3

[root@master ~]# ipvsadm -a -t 172.16.100.1:80 -r 172.16.100.10 -g -w 1

 

6.测试效果

1

2

3

4

5

6

7

 

[root@master ~]# ipvsadm -L -n

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port Forward Weight ActiveConn InActConn

TCP 172.16.100.1:80 rr

-> 172.16.100.10:80 Route 3 0 0

-> 172.16.100.11:80 Route 1 0 0

 

Linux 集群的基本概念与LB(负载均衡)集群详解

Linux 集群的基本概念与LB(负载均衡)集群详解

六、LVS 持久连接

说明:尽管我们选择了LVS的分发方法,但是大多时候我们要保证返回给客户端的所有响应请求必须来自于同一台Real Server,这里我们就要用到LVS Persistence(持久性)。

1.LVS 持久连接和类型

PCC 来自同一客户端所有服务的请求都被重定向到同一台Real Server上,以IP地址为准。

PPC 来自同一服务的请求都被重定向到同一台Real Server上,以端口号为准。

PNMP 基于防火墙标记的持久连接,根据iptables 的规则,将对于某类服务几个不同端口的访问定义为一类。

2.持久连接命令

1

2

 

ipvsadm -A|E … -p timeout

-p timeout 持久连接时长,默认为300秒,单位是秒!

 

3.PCC 演示

PCC是一个虚拟服务没有端口号(或者端口号为0),以"-p" 来标识服务。

缺陷:定向所有服务,期望访问不同的Real Server无法实现。

1

2

3

 

ipvsadm -A -t 172.16.100.1:0 -s rr -p 3600

ipvsadm -a -t 172.16.100.1:0 -r 172.16.100.10 -g -w 2

ipvsadm -a -t 172.16.100.1:0 -r 172.16.100.11 -g -w 2

 

4.PPC 演示

例如:client---->LVS(80,22)------>RS1 client----->LVS(23)----->RS2

缺陷:期望访问不同的端口到同一台RS上,无法实现。

1

2

3

 

ipvsadm -A -t 172.16.100.1:80 -s rr -p 3600

ipvsadm -a -t 172.16.100.1:80 -r 172.16.100.10 -g -w 2

ipvsadm -a -t 172.16.100.1:80 -r 172.16.100.11 -g -w 2

 

5.PNMP 演示

先对某一特定类型的数据包打上标记,然后再将基于某一类标记的服务送到后台的Real Server上去,后台的Real Server 并不识别这些标记。将持久和防火墙标记结合起来就能够实现端口姻亲功能,只要是来自某一客户端的对某一特定服务(需要不同的端口)的访问都定义到同一台Real Server上去。假设这样一种场景:一个用户在访问购物网站时同时使用HTTP(80)和HTTPS(443)两种协议,我们需要将其定义到同一台Real Server上,而其他的服务不受限制。

1

2

3

4

5

 

iptables -t mangle -A PREROUTING -d 172.16.100.1 -i eth0 -p tcp --dport 80 -j MARK --set-mark 8

iptables -t mangle -A PREROUTING -d 172.16.100.1 -i eth0 -p tcp --dport 443 -j MARK --set-mark 8

ipvsadm -A -f 8 -s rr -p 600

ipvsadm -a -f 8 -r 172.16.100.10 -g -w 2

ipvsadm -a -f 8 -r 172.16.100.11 -g -w 1

 

注:关于LVS持久连接的具体案例(80与443),见

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

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