5.1 安装前准备
5.1.1 服务器准备如下:
-192.168.4.1 mysql
-192.168.4.2 web1
-192.168.4.3 web2
-192.168.4.4 LVS

5.1.2 安装前准备
- LVS的IP负载均衡技术是通过IPVS模块实现的
-IPVS模块已成为Linux组成部分

[root@LVS ~]# grep -i 'ipvs' /boot/config-3.10.0-327.el7.x86_64
# IPVS transport protocol load balancing support
# IPVS scheduler
# IPVS SH scheduler
# IPVS applicaLon helper

5.2 安装ipvsadm
5.2.1 使用rpm命令安装ipvsadm
[root@LVS Packages]# rpm -ihv ipvsadm-1.27-7.el7.x86_64.rpm.rpm
warning: ipvsadm-1.27-7.el7.x86_64.rpm.rpm: Header V3 RSA/SHA256
Signature, key ID fd431d51: NOKEY
Preparing... ###################################### [100%]
1:ipvsadm ###################################### [100%]
[root@LVS Packages]# ipvsadm -v
ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1)
5.2.2 ipvsadm用法
•  创建虚拟服务器
–  -A 添加虚拟服务器
–  -t 设置群集地址(VIP,Virtual IP)
–  -s 指定负载调度算法
[root@LVS ~]# ipvsadm -A -t 172.16.16.172:80 -s rr
•  添加、 删除服务器节点
–  -a 添加真实服务器
–  -d 删除真实服务器
–  -r 指定真实服务器(Real Server)的地址
–  -m 使用NAT模式;-g、 -i分别对应DR、 TUN模式
–  -w 为节点服务器设置权重,默认为1
[root@LVS ~]# ipvsadm -a -t 172.16.16.172:80 -r 192.168.7.21:80 -m
[root@LVS ~]# ipvsadm -d -r 192.168.7.24:80 -t 172.16.16.172:80
•  查看IPVS
[root@LVS ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 201.1.1.4:80 rr
-> 192.168.4.2:80 Masq 2 0 0
-> 192.168.4.3:80 Masq 1 0 0
5.3 操作流程
5.3.1 配置web服务器
-在web1和web2两台 web服务器上,把网关指向192.168.4.4
# nmtui 添加网关
# ifdown eth0; ifup eth0
[root@web1 html]# nmcli connection modify eth0 ipv4.method manual ipv4.gateway 192.168.4.4 connection.autoconnect yes
[root@web1 html]# ifdown eth0; ifup eth0
Device 'eth0' successfully disconnected.
成功激活的连接(D-Bus 激活路径:/org/freedesktop/NetworkManager/ActiveConnection/348)
[root@web1 html]# route -n | grep eth0 | awk '/UG/{print $2}'
192.168.4.4
[root@web2 html]# nmcli connection modify eth0 ipv4.method manual ipv4.gateway 192.168.4.4 connection.autoconnect yes
[root@web2 html]# ifdown eth0; ifup eth0
Device 'eth0' successfully disconnected.
成功激活的连接(D-Bus 激活路径:/org/freedesktop/NetworkManager/ActiveConnection/519)
[root@web2 html]# route -n | grep eth0 | awk '/UG/{print $2}'
192.168.4.4
5.3.2 配置Director Server(lvs调度服务器)
5.3.1 在lvs服务器上安装ipvsadm(已安装调过)
[root@LVS ~]# yum -y install ipvsadm
[root@LVS ~]# rpm -q ipvsadm
ipvsadm-1.27-7.el7.x86_64
[root@LVS ~]# systemctl start ipvsadm
[root@LVS ~]# systemctl enable ipvsadm
5.3.2 部署LVS调度器
5.3.2.1 创建虚拟服务器,VIP地址为:201.1.1.4
*在lvs的eth2上配置VIP的地址201.1.1.4/24
[root@LVS ~]# nmcli connection add con-name eth2 ifname eth2 type ethernet
成功添加的连接 'eth2'(156cfee7-a9db-4af3-8b9c-5f2183da7d56)。
[root@LVS ~]# nmcli connection modify eth2 ipv4.method manual ipv4.addresses 201.1.1.4/24 connection.autoconnect yes
[root@LVS ~]# nmcli connection up eth2
成功激活的连接(D-Bus 激活路径:/org/freedesktop/NetworkManager/ActiveConnection/556)
5.3.2.2 打开 ip_forward即lvs的路由转发功能(RHEL7默认已打开,以前版本需要做以下配置)
[root@LVS ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@LVS ~]# sysctl -p
net.ipv4.ip_forward = 1 让内核参数生效
[root@LVS ~]# sysctl -a 查看所有的内核参数
[root@LVS ~]# sysctl -a | grep net.ipv4.ip_forward
net.ipv4.ip_forward = 1
5.3.3 lvs集群配置
5.3.3.1 创建虚拟服务器,VIP为201.1.1.4使用tcp的80端口,采用的调度算
法为Round Robin(rr)
[root@LVS ~]# ipvsadm -A -t 201.1.1.4:80 -s rr
注:不加-s选项默认是wlc
5.3.3.2 向向虚拟服务器中加入节点,并指定权重分别为1和2,目前权重不起作用(为什么?)
[root@LVS ~]# ipvsadm -a -t 201.1.1.4:80 -r 192.168.4.2 -m -w 1
[root@LVS ~]# ipvsadm -a -t 201.1.1.4:80 -r 192.168.4.3 -m -w 2
5.4 验证
5.4.1 在web1和web2上做一个网页
-web1
[root@web1 html]# vim index.html
<html><h1><<font color=red>我想和你一起吃火锅</font></h1></html>
[root@web1 html]## systemctl restart httpd
-web2
[root@web2 html]# vim index.html
<html><h1><font color=yellow>我想和你一起吃汤锅!</font></h1></html>
[root@web2 html]# systemctl restart httpd
5.4.2 网页查看
[root@LVS ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 201.1.1.4:80 rr
-> 192.168.4.2:80 Masq 2 0 0
-> 192.168.4.3:80 Masq 1 0 0
[root@client ~]# ~]# firefox http://201.1.1.4/bbs
[root@client ~]# ~]# firefox http://201.1.1.4
刷新页面时,按ctrl+f5重新连接服务器
5.4.3 修改调度算法为WRR
[root@LVS ~]# ipvsadm -E -t 201.1.1.4:80 -s wrr
[root@LVS ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 201.1.1.4:80 wrr
-> 192.168.4.12:80 Masq 2 0 0
-> 192.168.4.13:80 Masq 1 0 0
5.4.4 从规则中移除real server
[root@LVS ~]# ipvsadm -d -t 201.1.1.4:80 -r 192.168.4.12
[root@LVS ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 201.1.1.4:80 wrr
-> 192.168.4.13:80 Masq 1 0 0
[root@LVS ~]#

[root@LVS ~]# vim 1.sh
#!/bin/bash
RIP1=192.168.4.2
RIP2=192.168.4.3
VIP=201.1.1.4:80

while [ 1 ]
do
for IP in $RIP1 $RIP2
do
curl -I http://${IP} &> /dev/null
web_state=$?
ipvsadm -Ln | grep ${IP} &> /dev/null
ip_in_lvs=$?
if
[ $web_state -ne 0 -a $ip_in_lvs -eq 0 ]
then
ipvsadm -d -t $VIP -r $IP
elif
[ $web_state -eq 0 -a $ip_in_lvs -ne 0 ]
then
ipvsadm -a -t $VIP -r $IP -m
fi
done
sleep 3
done
[root@LVS ~]# sh 1.sh &
[root@web1 html]# systemctl stop httpd
[root@LVS ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 201.1.1.4:80 rr
-> 192.168.4.3:80 Masq 1 0 0
[root@web1 html]# systemctl restart httpd
[root@LVS ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 201.1.1.4:80 rr
-> 192.168.4.2:80 Masq 1 0 0
-> 192.168.4.3:80 Masq 1 0 0
5.5 lvs起动状态管理
[root@LVS ~]# systemctl stop ipvsadm
[root@LVS ~]# systemctl restart ipvsadm 重起失败,提示执行journalctl -xe,报错日志是/etc/sysconfig/ipvsadm文件不存在,所以要
创建它
查看状态
[root@LVS ~]# systemctl status ipvsadm 会检查出没有/etc/sysconfig/ipvsadm文件
[root@LVS ~]# touch /etc/sysconfig/ipvsadm 创建文件
[root@LVS ~]# ipvsadm -A -t 201.1.1.4:80 -s rr
[root@LVS ~]# ipvsadm -a -t 201.1.1.4:80 -r 192.168.4.2 -m -w 2
[root@LVS ~]# ipvsadm -a -t 201.1.1.4:80 -r 192.168.4.3 -m
[root@LVS ~]# ipvsadm -Ln
[root@LVS ~]# systemctl restart ipvsadm
[root@LVS ~]# systemctl enable ipvsadm
[root@LVS ~]# cat /etc/sysconfig/ipvsadm
-A -t 201.1.1.4:80 -s rr
-a -t 201.1.1.4:80 -r 192.168.4.2:80 -m -w 2
-a -t 201.1.1.4:80 -r 192.168.4.3:80 -m -w 1