LVS也是开源的负载均衡服务软件。LVS是Linux Virtual Server 即Linux虚拟服务器,是一个虚拟的服务器集群系统。

术语说明
DS前段负载均衡节点服务器
RS后段真实服务器
DIP用于与内部主机通信的IP地址
VIP向外部直接面向用户请求,用于用户请求的目标IP
RIP后端真实服务器的IP地址
CIP访问客户端的IP地址

LVS与nginx相比较来说,LVS具有更强的负载能力,对资源消耗比较少。LVS工作在网络传输层,流量由内核来处理,nginx工作在网络的应用层。

LVS工作模式

直接路由模式(DR)

LVS-直接路由模式 部署 LVS 192.168.1.100 VIP:192.168.1.105 RS-a 192.168.1.101 RS-b 192.168.1.102

1
[root@100 ~]# yum install ipvsadm kernel-devel -y #安装ipvsadm及内核

添加192.168.1.105地址

1
2
3
4
5
6
7
8
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:26:ca:39 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.100/24 brd 192.168.1.255 scope global noprefixroute ens192
       valid_lft forever preferred_lft forever
    inet 192.168.1.105/24 brd 192.168.1.255 scope global secondary ens192
       valid_lft forever preferred_lft forever
    inet6 fe80::baef:8bc3:8e1c:44e1/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

配置LVS DR模式负载均衡

1
2
3
[root@100 ~]# ipvsadm -C #清除原来的配置
[root@100 ~]# ipvsadm -A -t 192.168.1.105:80 -s wrr #配置VIP与调度算法
[root@100 ~]# ipvsadm -L -n #查看

添加后段服务器

1
2
3
4
5
6
7
8
9
[root@100 ~]# ipvsadm -a -t 192.168.1.105:80 -r 192.168.1.101 -g -w 1
[root@100 ~]# ipvsadm -a -t 192.168.1.105:80 -r 192.168.1.102 -g -w 1
[root@100 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.1.105:80 wrr
  -> 192.168.1.101:80             Route   1      0          0         
  -> 192.168.1.102:80             Route   1      0          0  

后端主机配置抑制ARP与绑定VIP

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
[root@101 ~]# echo "1">/proc/sys/net/ipv4/conf/lo/arp_ignore 
[root@101 ~]# echo "2">/proc/sys/net/ipv4/conf/lo/arp_announce 
[root@101 ~]# echo "1">/proc/sys/net/ipv4/conf/all/arp_ignore 
[root@101 ~]# echo "2">/proc/sys/net/ipv4/conf/all/arp_announce
[root@101 ~]# ifconfig lo:105 192.168.1.105/32
[root@101 ~]# ifconfig lo:105
lo:105: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 192.168.1.105  netmask 0.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
[root@102 htdocs]# echo "1">/proc/sys/net/ipv4/conf/lo/arp_ignore 
[root@102 htdocs]# echo "2">/proc/sys/net/ipv4/conf/lo/arp_announce
[root@102 htdocs]# echo "1">/proc/sys/net/ipv4/conf/all/arp_ignore
[root@102 htdocs]# echo "2">/proc/sys/net/ipv4/conf/all/arp_announce
[root@102 htdocs]# ifconfig lo:105 192.168.1.105/32
[root@102 htdocs]# ifconfig lo:105
lo:105: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 192.168.1.105  netmask 0.0.0.0
        loop  txqueuelen 1000  (Local Loopback)

效果

1
2
3
4
5
6
7
[root@100 ~]# ipvsadm -L -n  --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
  -> RemoteAddress:Port
TCP  192.168.1.105:80                    4       78        0    23862        0
  -> 192.168.1.101:80                    2       18        0     4446        0
  -> 192.168.1.102:80                    2       60        0    19416        0

NAT模式

略。。。