首先两台服务器都安装keepalived

yum install keepalived

修改keepalived配置文件

vim /etc/keepalived/keepalived.conf

主服务器配置文件修改为

vrrp_instance VI_1 {         #定义VRRP热备实例
    state MASTER             #热备状态,MASTER表示主服务器
    interface eth0           #承载VIP地址的物理接口
    virtual_router_id 1      #虚拟路由ID号,每个热备组保持一致
    priority 100             #优先级,数值越大优先级越高
    advert_int 1             #通告间隔秒数
    authentication {         #认证信息,每个热备组保持一致      
        auth_type PASS       #认证类型
        auth_pass 123456     #密码字串
    }
    virtual_ipaddress {      #指定VIP漂移地址,可以写多个
        192.168.10.20   
    }
}

从服务器配置文件修改为

vrrp_instance VI_1 {
    state BACKUP  #改这里
    interface eth0
    virtual_router_id 1
    priority 10  #改这里,这里要改成比主服务器值要小
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        192.168.10.20  
    }
}

两台都开启keepalived服务

/bin/systemctl stop keepalived.service

以下是检查是否成功了,运行

ip a

如果成功了,主服务器有虚似ip:192.168.10.20,从服务器没有虚拟ip。把主服务器keepalived关闭掉,从服务器有虚拟ip了,主服务器没有了,如果主服务器重新启动,主服器这时又有虚拟ip了,从服务器没有虚拟ip了

注意:

如果出现了主从服务器都有虚拟ip,那么一般是脑裂了,

比如阿里云的服务器都会有这情况,vrrp没有开放,不支持广播和组播。需要将配置文件中的通信方式修改为单播通信。

以下例子主服务器内网ip为:172.18.40.183,从服务器内网ip为:172.18.40.182,虚拟ip定为:172.18.40.185

主服务器配置文件改为:

vrrp_script chk_nginx {               #检测nginx的运行状态
 script "/etc/keepalived/nginx_check.sh"            #脚本路径
 interval 2             #探测间隔时间
 weight -20            #如果条件满足,权重-20
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    unicast_src_ip 172.18.40.183
    unicast_peer {
                  172.18.40.182   #对端IP地址,此地址一定不能忘记
                }
    advert_int 1
        priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {                                #将track_script块加入instance配置块
        chk_nginx                                     #执行Nginx检测
    }
    virtual_ipaddress {
        172.18.40.185/32
    }
}

从服务器配置改为:

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    unicast_src_ip 172.18.40.182
   unicast_peer {
                  172.18.40.183   #对端IP地址,此地址一定不能忘记
                }
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.18.40.185/32
    }
}

这里增加了nginx检查

vim /etc/keepalived/nginx_check.sh

sh脚本的内容为:

#!/bin/bash
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi

给它附执行权限:

chmod +x /etc/keepalived/nginx_check.sh

单通道配置文件最关键设置的两个参数为:

unicast_src_ip,
unicast_peer
检试下是否成功
主服务器图

keepalived的vip怎么绑定域名 keepalived配置vip_服务器配置

 

 从服务器图

keepalived的vip怎么绑定域名 keepalived配置vip_服务器_02

 

 当主服务器nginx挂掉之后,sh脚本会执行杀掉keepalived命令,从而虚拟ip为飘到从服务器上面。