一、集群类型

1、LB:Load Balancing Cluster 负载均衡集群

2、HA: High Availiabty Cluster 高可用集群

3、HP: High Perfomance Cluster 高性能集群

二、负载均衡器

负载均衡器(调度器)是一种采用各种分配算法把网络请求分散到一个服务器集群中的可用服务器上去,通过管理进入的Web数据流量和增加有效的网络带宽,从而使网络访问者获得尽可能最佳的联网体验的硬件设备。

1、负载均衡器的工作层次:

1)工作于tcp/udp层实现底层协议的负载均衡,请求在内核中实现转发;

2)工作于应用层,支持特定的应用协议实现应用层的负载均衡,请求在用户空间中。

注:工作于tcp/udp层的性能要比工作于应用层的负载均衡器的好得多,若请求数量没超过应用层负载均衡器的容量,应使用应用层的负载均衡器,它能直接于前端更好的解决请求。

2、http/https协议层的负载均衡器

1)tcp/udp层:lvs,haproxy

2) 应用层:apache,nginx,haproxy,lighttpd,varnish,squid

3、mysql协议层的负载均衡器

1)tcp/udp层:lvs

2)应用层:mysql-proxy,amoeba,haproxy,数据库专用连接池能实现读写分离。

三、LVS的工作原理

LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。

其工作机制类似于netfilter(网络信息报文过滤器),因此,ipvsadm机制与iptables机制不能同时使用,两者都具有连接追踪功能。

ipvsadm/ipvs --> iptables/netfilter

四、LVS的调度算法

1、静态调度算法(fixed method)

1)rr(Round Robin):轮调,轮叫

调度器通过“轮叫”调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。

2)wrr (Weighted Round Robin):加权轮叫

调度器通过“加权轮叫”调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器能处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

3)sh (Source Hashing):源地址哈希,锁定请求的用户

源地址散列”调度算法根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

4)dh (Destination Hashing):目标地址哈希,锁定realserver(响应请求的服务器)

目标地址散列”调度算法根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

2、动态调度算法(dynamic method)

1)lc (Least Connections):最少连接调度

调度器通过“最少连接”调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用“最小连接”调度算法可以较好地均衡负载。

2)wlc (Weighted Least Connections):加权最少连接调度

调度器采用“加权最少链接”调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

3)sed (Shortest Expected Delay Scheduling SED):最少期望延迟

基于wlc的算法,使用sed算法计算最少的延迟进行请求分配。

4)nq (Never Queue Scheduling NQ):最少队列调度

无需队列。如果有台 realserver的连接数=0就直接分配过去,不需要在进行sed运算。

5)lblc (Locality-Based Least Connections):基于本地的最少连接

6)lblcr (Locality-Based Least Connections with Replication):带复制的基于本地的最少连接。

五、LVS的工作类型架构

1、NAT模型 :调度器只负责从后端的realserver中挑选一个响应用户请求;用户请求与响应报文都必须经过Director Server,调度器的处理能力将成为瓶颈,不适用于并发场景高的服务,适用于服务器较少的场景。

NAT模型的特性:

1)、RealServer应该使用私有IP地址;

2)、RealServer的网关应该指向DIP;

3)、RIP和DIP应该在同一个网段内;

4)、进出的报文都得经过Directory,在高负载下,

Directory会成为系统性能瓶颈;

5)、支持端口映射;

6)、RealServer可以使用任意OS;

2、DR模型 :用直接路由技术实现用户请求调度和报文响应;realserver的网关一定不能指向DIP,调度器通过改写请求报文的MAC地址,将请求发送给realserver,而响应报文由realserver通过路由直接响应给用户;DR模型适用于高并发场景的服务。

DR模型的特性:

1)、RealServer可以使用私有地址;

2)、RealServer的网关一定不能指向DIP;

3)、RealServer和Director要在同一物理网络内;DIP和RIP应该在同一网段,可以不在同一网段;

4)、入站报文经过Directory,出站则由RealServer直接响应Client;

5)、不能做端口映射;

6)、RealServer可以为大多数常见OS;

注:DR模型中禁止realserver上的VIP直接跟前端路由通信的三种方案:

1)、修改路由,使用静态ARP;

2)、在RS上使用arptables,禁止响应对VIP的ARP广播请求;

3)、在RS上修改其内核参数,并向VIP配置在与RIP不同的接口的别名上;

3、TUN模型 :通过IP隧道技术实现虚拟服务,其处理请求和响应报文与DR模型处理方式相同,由于调度器只处理用户的请求,从而使集群系统的吞吐量大大提高,适用于高并发场景的服务。

TUN模型的特性:

1)、RIP、DIP不能是私有地址;

2)、RealServer的网关不能指向DIP;

3)、入站报文经过Directory,出站则由RealServer直接响应Client;

4)、不支持端口映射;

5)、支持IP tunneling的OS才能用于RealServer;

4、FULLNAT模型 :完全地址转换和NAT模型不同之处在FULLNAT除了做DNAT,还做SNAT,从而实现LVS-RealServer 间可以跨vlan,realserver只需要连接到内网。

六、ipvs/ipvsadm的应用详解

1、ipvsadm的安装

[root@xz ~]# yum -y install ipvsadm
[root@xz ~]# man ipvsadm

2、ipvs的相关命令选项


SYNOPSIS
       ipvsadm -A|E -t|u|f service-address [-s scheduler]
               [-p [timeout]] [-O] [-M netmask]
## 定义、编辑一个集群服务 -A:新增,-E:编辑, -t|u|f: tcp|udp|firewall 指定集群服务的地址,-s:指定调度算法,-p:持久连接时长
       ipvsadm -D -t|u|f service-address
## 删除集群服务
       ipvsadm -C
## 清空所定义的规则
       ipvsadm -R
## 恢复所定义的规则
       ipvsadm -S [-n]
## 保存所定义的规则
       ipvsadm -a|e -t|u|f service-address -r server-address
               [-g|i|m] [-w weight] [-x upper] [-y lower]
## 添加、管理realserver,-a|e:向一个集群服务中添加|编辑一个realserver,-t|u|f service-address:指定需要添加realserver的集群地址,
-r server-address:指定realserver的地址 IP:[port],-g|i|m:指定LVS的类型,-g:DR模型、-i:TUN模型、-m:NAT模型,-w :指定权重
       ipvsadm -d -t|u|f service-address -r server-address
## 删除集群中的realserver
       ipvsadm -L|l [options]
## 查看集群和realserver的定义、选项参数
       ipvsadm -Z [-t|u|f service-address]
## 清空计数器
       ipvsadm --set tcp tcpfin udp
       ipvsadm --start-daemon state [--mcast-interface interface]
               [--syncid syncid]
       ipvsadm --stop-daemon state
       ipvsadm -h

3、集群服务管理

1)添加一个集群服务

[root@xz ~]# ipvsadm -A -t 172.16.20.5:80 -s rr

2)在集群服务中定义realserver,查看定义的realserver并保存


[root@xz ~]# ipvsadm -a -t 172.16.20.5:80 -r 172.16.200.8 -m
[root@xz ~]# ipvsadm -a -t 172.16.20.5:80 -r 172.16.200.9 -m
[root@xz ~]# ipvsadm -l -n --stats
[root@xz ~]# service ipvsadm save

3)删除集群服务中的realserver,及删除集群服务。

[root@xz ~]# ipvsadm -d -t 172.16.20.5:80 -r 172.16.200.8
[root@xz ~]# ipvsadm -D -t 172.16.20.5
[root@xz ~]# ipvsadm -l -n


七、ipvs实现LVS的NAT模型

NAT模型拓扑图

1、准备三个节点。

节点xz:172.16.20.5 做LVS的调度器;DIP:192.168.200.254,VIP:172.16.20.3

节点node1: 192.168.200.7 做LVS集群中的realserver1

节点node2: 192.168.200.9 做LVS集群中的realserver2

注:并在节点node1,node2上禁用NetworkManager,启用network



2、修改节点node1、node2的网卡连接模式(Network Connection:VMnet2),静态配置两个节点的IP并为他们添加指向xz的DIP的网关。

node1的RIP配置


node2的RIP配置

查看为两个realserver添加的网关

3、节点xz在第二块网卡上启用DIP:192.168.200.254且将第二块网卡的连接模式修改成和两个realserver的模式一样,并为两个realserver节点提供http的访问页面。

[root@xz ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE="eth1"
BOOTPROTO="static"
IPADDR=192.168.200.254
GATEWAY=192.168.0.1
ONBOOT="yes"
.........
[root@xz ~]# ifconfig
.........
eth1      Link encap:Ethernet  HWaddr 00:0C:29:73:32:87
          inet addr:192.168.200.254  Bcast:192.168.200.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe73:3287/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:12 errors:0 dropped:0 overruns:0 frame:0
          TX packets:26 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1024 (1024.0 b)  TX bytes:1852 (1.8 KiB)

为两个realserver提供http访问页面

4、于节点xz上ping通node1、node2,启动两个realserver的httpd服务并在命令行访问两个realserver的http页面。

ping通node1节点

[root@xz ~]# ping 192.168.200.7
PING 192.168.200.7 (192.168.200.7) 56(84) bytes of data.
64 bytes from 192.168.200.7: icmp_seq=1 ttl=64 time=2.16 ms
64 bytes from 192.168.200.7: icmp_seq=2 ttl=64 time=0.371 ms
^C
--- 192.168.200.7 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1825ms
rtt min/avg/max/mdev = 0.371/1.267/2.164/0.897 ms

ping通node2节点

[root@xz ~]# ping 192.168.200.9
PING 192.168.200.9 (192.168.200.9) 56(84) bytes of data.
64 bytes from 192.168.200.9: icmp_seq=1 ttl=64 time=1.12 ms
64 bytes from 192.168.200.9: icmp_seq=2 ttl=64 time=0.379 ms
^C
--- 192.168.200.9 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1769ms
rtt min/avg/max/mdev = 0.379/0.752/1.125/0.373 ms

在节点xz上访问两个realserver的http的页面

[root@xz ~]# curl -I http://192.168.200.7
HTTP/1.1 200 OK
Date: Sat, 14 Sep 2013 04:33:31 GMT
Server: Apache/2.2.15 (CentOS)
Last-Modified: Sat, 14 Sep 2013 03:27:07 GMT
ETag: "c0103-24-4e64f8bba6c96"
Accept-Ranges: bytes
Content-Length: 36
Connection: close
Content-Type: text/html; charset=UTF-8

[root@xz ~]# curl -I http://192.168.200.9
HTTP/1.1 200 OK
Date: Tue, 24 Sep 2013 02:08:59 GMT
Server: Apache/2.2.15 (CentOS)
Last-Modified: Mon, 23 Sep 2013 22:47:27 GMT
ETag: "e0101-24-4e714cdfb017d"
Accept-Ranges: bytes
Content-Length: 36
Connection: close
Content-Type: text/html; charset=UTF-8

5、NAT模型准备好之后,配置xz调度器上的VIP,并确保物理机能够与VIP通信。

[root@xz ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0:1
DEVICE=eth0:1
BOOTPROTO=static
ONBOOT=yes
IPADDR=172.16.20.3
NETMASK=255.255.0.0
GATEWAY=172.16.0.1
TYPE=Ethernet"

[root@xz ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0:1
DEVICE="eth0:1"
BOOTPROTO="static"
ONBOOT="yes"
IPADDR=172.16.20.3
NETMASK=255.255.0.0
GATEWAY=172.16.0.1
TYPE="Ethernet"

确保物理机能与VIP通信

6、在xz负载均衡器上定义LVS的NAT模型的集群服务,并添加node1、node2的realserver。

[root@xz ~]# ipvsadm -A -t 172.16.20.3:80 -s rr
[root@xz ~]# ipvsadm -a -t 172.16.20.3:80 -r 192.168.200.7 -m
[root@xz ~]# ipvsadm -a -t 172.16.20.3:80 -r 192.168.200.9 -m
[root@xz ~]# ipvsadm -l -n --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
  -> RemoteAddress:Port
TCP  172.16.20.3:80                      0        0        0        0        0
  -> 192.168.200.7:80                    0        0        0        0        0
  -> 192.168.200.9:80                    0        0        0        0        0


7、在节点xz上打开ipv4的网络转发功能,并访问VIP的http页面,查看ipvs规则信息。

[root@xz ~]# sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1
[root@xz ~]# ab -c 10 -n 100 http://172.16.20.3/index.html
[root@xz ~]# watch   'ipvsadm -l -n --stats'
Every 2.0s: ipvsadm -l -n --stats                                            Thu Sep 12 09:31:38 2013
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
  -> RemoteAddress:Port
TCP  172.16.20.3:80                    292     1443     1424   119297   157846
  -> 192.168.200.7:80                  146   721  711    59536    79200
  -> 192.168.200.9:80                  146   722  713    59761    78646




8、将调度器算法由rr改为wrr,清空计数器后再查看ipvs规则信息,保存ipvs规则。

[root@xz ~]# ipvsadm -E -t 172.16.20.3:80 -s wrr
[root@xz ~]# ipvsadm -e -t 172.16.20.3:80 -r 192.168.200.9 -m -w 2
[root@xz ~]# 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.20.3:80 wrr
  -> 192.168.200.7:80             Masq    1      0          0    
  -> 192.168.200.9:80             Masq    2      0          0

清空计数器,用ab命令对VIP的httpd页面进行压测

[root@xz ~]# ipvsadm -Z
[root@xz ~]# ab -c 10 -n 100 http://172.16.20.3/index.html
[root@xz ~]# watch   'ipvsadm -l -n --stats'

八、ipvs实现LVS的DR模型

DR模型拓扑图

注:DR模型中请求报文经过调度器改变的只是其MAC地址,各个几点的VIP要保持一致,且保证各个realserverVIP禁止跟前端路由通信。

1、准备三个节点

基于NAT模型的三个节点xz,node1,node2,禁用xz节点的第二块网卡eth1。

调度器:节点xz,DIP:172.16.200.5,VIP:172.16.200.6

realserver: 节点node1,RIP:172.16.200.7,VIP:172.16.200.6

节点node2,RIP:172.16.200.9,VIP:172.16.200.6

[root@xz ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE="eth1"
BOOTPROTO="static"
IPADDR=192.168.200.254
GATEWAY=192.168.0.1
ONBOOT="no"
[root@xz ~]# chkconfig --list NetworkManager
NetworkManager  0:off   1:off   2:off   3:off   4:off   5:off   6:off
[root@xz ~]# service network restart
Shutting down interface eth0:                              [  OK  ]
Shutting down interface eth1:                              [  OK  ]
Shutting down loopback interface:                          [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface eth0:                                [  OK  ]
[root@xz ~]# ifconfig

2、配置xz的DIP以及realserver的RIP,将三个节点的网卡模式改为桥接,禁用NetworkManager并启用network。

配置xz的DIP

[root@xz ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:73:32:7D
          inet addr:172.16.200.5  Bcast:172.16.255.255  Mask:255.255.0.0
          inet6 addr: fe80::20c:29ff:fe73:327d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2383 errors:0 dropped:0 overruns:0 frame:0
          TX packets:531 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:212117 (207.1 KiB)  TX bytes:65562 (64.0 KiB)


配置realserver节点node1 的RIP

[root@node1 ~]# chkconfig --list NetworkManager
NetworkManager  0:off   1:off   2:off   3:off   4:off   5:off   6:off
[root@node1 ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:44:20:EC
          inet addr:172.16.200.7  Bcast:172.16.255.255  Mask:255.255.0.0
........

配置realserver节点node2 的RIP

[root@node2 ~]# chkconfig --list NetworkManager
NetworkManager  0:off   1:off   2:off   3:off   4:off   5:off   6:off
[root@node2 ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:8E:72:15
          inet addr:172.16.200.9  Bcast:172.16.255.255  Mask:255.255.0.0
          inet6 addr: fe80::20c:29ff:fe8e:7215/64 Scope:Link
..........

3、在调度器节点xz上ping通realserver的两个节点node1与node2,并访两个节点的http页面。

[root@xz ~]# ping 172.16.200.7
PING 172.16.200.7 (172.16.200.7) 56(84) bytes of data.
64 bytes from 172.16.200.7: icmp_seq=1 ttl=64 time=2.37 ms
64 bytes from 172.16.200.7: icmp_seq=2 ttl=64 time=0.372 ms
^C
--- 172.16.200.7 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1895ms
rtt min/avg/max/mdev = 0.372/1.371/2.371/1.000 ms
[root@xz ~]# ping 172.16.200.9
PING 172.16.200.9 (172.16.200.9) 56(84) bytes of data.
64 bytes from 172.16.200.9: icmp_seq=1 ttl=64 time=6.18 ms
64 bytes from 172.16.200.9: icmp_seq=2 ttl=64 time=0.378 ms
^C
--- 172.16.200.9 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1560ms
rtt min/avg/max/mdev = 0.378/3.280/6.182/2.902 ms
........
[root@xz ~]# curl http://172.16.200.7

Realserver Node1 it works

[root@xz ~]# curl http://172.16.200.9

Realserver Node2 it works

4、在realserver上配置内核参数来禁止realserver上的VIP直接跟前端路由通信,并配置realserver的VIP。

注:先配置内核参数,再配置realserver的VIP,VIP配置于lo接口上。

1)配置内核参数

[root@node1 ~]# vim /var/www/html/index.html
[root@node1 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@node1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@node1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@node1 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@node1 ~]# ls /proc/sys/net/ipv4/conf/
all  default  eth0  lo

2)配置node1节点的VIP,并与物理机上测试是否已经隔离

[root@node1 ~]# ifconfig lo:1 172.16.200.6 broadcast 172.16.200.6 netmask 255.255.255.255 up
[root@node1 ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:44:20:EC
          inet addr:172.16.200.7  Bcast:172.16.255.255  Mask:255.255.0.0
.............
lo:1      Link encap:Local Loopback
          inet addr:172.16.200.6  Mask:255.255.255.255
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
[root@node1 ~]# route add -host 172.16.200.6 dev lo:1
[root@node1 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
172.16.200.6    0.0.0.0         255.255.255.255 UH    0      0        0 lo
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
172.16.0.0      0.0.0.0         255.255.0.0     U     0      0        0 eth0
0.0.0.0         172.16.0.1      0.0.0.0         UG    0      0        0 eth0


3)node2节点的配置同node1

[root@node2 ~]# ifconfig lo:1 172.16.200.6 broadcast 172.16.200.6 netmask 255.255.255.255 up
[root@node2 ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:8E:72:15
          inet addr:172.16.200.9  Bcast:172.16.255.255  Mask:255.255.0.0
..........
lo:1      Link encap:Local Loopback
          inet addr:172.16.200.6  Mask:255.255.255.255
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
[root@node2 ~]# route add -host 172.16.200.6 dev lo:1
[root@node2 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
172.16.200.6   0.0.0.0         255.255.255.255 UH    0      0        0 lo
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
172.16.0.0      0.0.0.0         255.255.0.0     U     0      0        0 eth0
0.0.0.0         172.16.0.1      0.0.0.0         UG    0      0        0 eth0

5、在调度器节点xz上配置VIP,VIP配置在外网eth接口上。
1)清除ipvs上的所有规则,并配置节点xz的VIP

[root@xz ~]# ipvsadm -C
[root@xz ~]# ipvsadm -l -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
[root@xz ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination      
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination      
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
[root@xz ~]# ifconfig eth0:1 172.16.200.6 broadcast 172.16.200.6 netmask 255.255.255.255 up
[root@xz ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:73:32:7D
          inet addr:172.16.200.5  Bcast:172.16.255.255  Mask:255.255.0.0
          inet6 addr: fe80::20c:29ff:fe73:327d/64 Scope:Link
...................
eth0:1    Link encap:Ethernet  HWaddr 00:0C:29:73:32:7D
          inet addr:172.16.200.6  Bcast:172.16.200.6  Mask:255.255.255.255
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

2)确保物理机能与VIP通信

6、使用ipvsadm添加集群服务及定义realserver。

[root@xz ~]# ipvsadm -A -t 172.16.200.6:80 -s wrr
[root@xz ~]# ipvsadm -a -t 172.16.200.6:80 -r 172.16.200.7 -g -w 2
[root@xz ~]# ipvsadm -a -t 172.16.200.6:80 -r 172.16.200.9 -g -w 1
[root@xz ~]# 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.200.6:80 wrr
  -> 172.16.200.7:80              Route   2      0          0      
  -> 172.16.200.9:80              Route   1      0          0

7、访问VIP的http,查看ipvs规则信息。

[root@xz ~]# ipvsadm -L -n --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
  -> RemoteAddress:Port
TCP  172.16.200.6:80                   145      671        0    59945        0
  -> 172.16.200.7:80                    97      449        0    40064        0
  -> 172.16.200.9:80                    48      222        0    19881        0


8、使用不同的LVS调度算法,并继续查看ipvs规则信息。

[root@xz ~]# ipvsadm -E -t 172.16.200.6:80 -s wlc
[root@xz ~]# ipvsadm -l -n --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
  -> RemoteAddress:Port
TCP  172.16.200.6:80                   191      903        0    89293        0
  -> 172.16.200.7:80                   122      576        0    55657        0
  -> 172.16.200.9:80                    69      327        0    33636        0