keepalived+nginx实现双机热备(防止单点故障)

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了。

好了,再见。自行脑补,总结。反正我是没理解。

猜你喜欢

转载自blog.csdn.net/samtrue/article/details/83898137
今日推荐