第一步,环境准备
服务器名称 | IP | 描述 |
master | VIP:192.168.244.100 DIP:192.168.244.101 | 高可用keeplived_master LVS负载均衡 |
backup | VIP:192.168.244.100 DIP:192.168.244.102 | 高可用keeplived_backup LVS负载均衡 |
server1 | RIP:192.168.244.103 | Web服务器 |
server2 | RIP:192.168.244.104 | Web服务器 |
初始化部署,
修改主机名
hostnamectl set-hostname master
hostnamectl set-hostname backup
hostnamectl set-hostname server1
hostnamectl set-hostname server2
配置域名解析,四台服务器都配置
# cat >> /etc/hosts <<EOF
192.168.244.101 master
192.168.244.102 backup
192.168.244.103 server1
192.168.244.104 server2
EOF
关闭防火墙,关闭selinux,四台服务器都要关闭
systemctl disable firewalld --now
关闭selinux
sed -i '/^SELINUX/s/enforcing/disabled/g' /etc/selinux/config
setenforce 0
安装常用软件
yum -y install ntpdate bash-completion* net-tools wget
配置时间同步
crontab -e
*/1 * * * * /usr/sbin/ntpdate ntp.aliyun.com
第二步,开始安装keepalived,并将/etc/keepalived/keepalived.conf文件进行备份
在master和backup两台服务器上安装
yum -y install keepalived
cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
第三步,开始修改keepalived.conf配置文件 ,在master和backup两台服务器上修改
cat > /etc/keepalived/keepalived.conf << EOF
global_defs {
router_id LVS_master #主和从要有单独的route_id
}
vrrp_instance VI_1 {
state MASTER #主为MASTER 从为BACKUP
interface ens33 #指定配机网卡的设备名
virtual_router_id 51 #指定虚拟路由主从要一致
priority 100 #指定优先级主优先高 从做先级低
advert_int 1 #心跳检测时间间隔
authentication { #keepalived内通信认证方式
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { #指定绑定的vip
192.168.244.100
}
}
EOF
master上要修改的keeplived.conf配置文件
backup上要修改的keeplived.conf配置文件
第四步,开启keepalived
启动keepalived
master ~]# systemctl start keepalived
backup ~]# systemctl start keepalived
使用ip a指令查看vip是否配置成功
在master主服务器上配置成功
[root@master ~]# ip a
[root@backup ~]# ip a //从服务器上没有
测试一下vip是否飘移
关闭master服务器上的keepalived,查看backup服务器上是否有vip 也就是192.168.244.100/32的IP地址,有这说明vip漂移到了backup从服务器上,再开启master主服务器上的keepalived,就会漂移到master主服务器上
[root@master ~]# systemctl stop keepalived.service
成功
第五步,安装ipvsadm
master ~]# yum -y install ipvsadm
backup ~]# yum -y install ipvsadm
查看系统是否支持ip_vs模块
第六步,配置 LVS负载均衡,在master和backup两台主从服务器上配置
master ~]# ipvsamd -C
master ~]# ipvsadm -A -t 192.168.10.100:80 -s rr
master ~]# ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.103:80 -g
master ~]# ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.103:80 -g
master ~]# ipvsadm -Ln
backup ~]# ipvsamd -C
backup ~]# ipvsadm -A -t 192.168.10.100:80 -s rr
backup ~]# ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.103:80 -g
backup ~]# ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.103:80 -g
backup ~]# ipvsadm -Ln
第七步,在server1和server2上安装web服务器
server1 ~]# yum -y install httpd
server1 ~]echo "server1" > /var/www/html/index.html
server1 ~]# systemctl start httpd
server1 ~]# curl 192.168.10.103
server2 ~]# yum -y install httpd
server2 ~]echo "server02" > /var/www/html/index.html
server2 ~]# systemctl start httpd
server2 ~]# curl 192.168.244.104
第八步,配置server1和server2的虚拟vip
# cat > lvs.sh << EOF
#!/bin/bash
#description : start realserver
VIP=192.168.244.100
case "\$1" in
start)
echo " start LVS of REALServer"
/usr/sbin/ifconfig lo:0 \$VIP broadcast \$VIP netmask 255.255.255.255 up
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
;;
stop)
/usr/sbin/ifconfig lo:0 down
echo "close LVS Directorserver"
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usage: \$0 {start|stop}"
exit 1
esac
EOF
在server1和server2上启动脚本,并使用ip a 指令来查看虚拟vip是否配置成功
sh lvs.sh start //启动脚本
ip a //查看IP地址
第九步,使用客户端进行测试
随便找一台服务器进行访问虚拟vip
[root@localhost ~]# for((i=1;i<=10;i++));do curl 192.168.244.100;done
成功
开始模拟故障
当master主服务器出现故障,keepalived关闭了
master ~]# systemctl stop keepalived
master ~]# keepalived_lvs_master ~]# ip a
[root@localhost ~]# for((i=1;i<=10;i++));do curl 192.168.244.100;done
还是可以使用
模拟server1宕机
[root@server1 ~]# systemctl stop httpd
在用ipvsadm做为负载均衡时,它没有健康检查功能,不能将宕机的后端realserver从lvs中清除