1、准备两台虚拟机
192.168.139.8(主)和192.168.139.9(从)
vmware 12 :自行安装 https://blog.csdn.net/babyxue/article/details/80970526
配置NAT网络:https://blog.csdn.net/c571121319/article/details/47445761?tdsourcetag=s_pctim_aiomsg
2、安装ipvsadm
yum install ipvsadm
ipvsadm -v
ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1)
ipvs(IP Virtual Server)是整个负载均衡的基础,如果没有这个基础,故障隔离与失败切换就毫无意义了。ipvs 具体实现是由 ipvsadm 这个程序来完成的。
3、安装keepalived
yum install keepalived
keepalived -v
Keepalived v1.4.0 (12/29,2017)
4、配置keepalived.conf ps:两台主机有不一致的地方需要注意,看配置的注释
! Configuration File for keepalived
global_defs {
}
vrrp_script chk_nginx {
#必须放在track代码的上方,否则无效,测试了几次是这个情况
script "killall -0 nginx"
#用shell命令检查nginx服务是否存在
interval 1
#时间间隔为1秒检测一次
weight -15
#当nginx的进程不存在了,就把当前的权重-15
}
vrrp_instance VI_1 {
state MASTER #主LVS是MASTER,从主机时此项要改为BACKUP,要大写
interface ens33 #LVS监控的网络接口 我这里两台虚拟机都是ens33
virtual_router_id 51 #同一实例下virtual_router_id必须相同,MASTRE/BACKUP 设置值要一样
priority 100 #定义优先级,数字越大,优先级越高,把此份Conf拷贝到另一台机器上时,设置的priority值要比MASTRE权重值低,我这边主服务器192.168.139.8配的是100 从服务器192.168.139.9配的是90
advert_int 1
#MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
authentication {
auth_type PASS
auth_pass 123456
#验证类型和密码,有PASS和AH两种,一般用PASS,据说AH有问题,认证密码主备服务器之间一定要一致,否则出错
}
virtual_ipaddress {
192.168.139.20 #两台主机都一致
#设置虚拟IP,可以有多个地址,每个地址占一行,不需掩码。注意:这个 ip 必须与我们在 lvs 客户端设定的vip相一致
}
track_script {
chk_nginx
#引用上面的vrrp_script定义的脚本名称
}
}
看下我的网络接口:
启动keepalived:
systemctl start keepalived
查看是否启动:ps aux|grep keepalived 如下:启动成功
4、安装nginx---随便装,想怎么装就怎么装 你喜欢就好 只要能跑起来访问页面就行
实在不行就一键安装吧 https://oneinstack.com/install/ php nginx mysql redis
5、来来来,测试
两台主机都没宕机的时候 浏览器访问 http://192.168.139.20/test.php
你没看错,访问到主服的test.php了。
把主服宕机,我是把nginx关闭了 浏览器再访问 http://192.168.139.20/test.php
眼睛没瞎,就是这样的,访问到从服的test.php了。
好了,再见。自行脑补,总结。反正我是没理解。