keepalived配置虚拟ip(VRRP)实现双机热备以及自动切换主备

需求

1、我有两个服务器,一台A是正常处理数据的,还有一台B是备用机器;A如果网络异常或者崩了,B开启采集技术

2、但是其他人访问的ip地址,如果从A变成B,地址改变了,会影响业务需求的;所以需要A与B共用一个Ip地址,A服务器崩了,B还在,不影响对外的业务


方案实现

我有两台服务器,分别是11.11.1.110 和11.11.1.112

1.安装keepalived,两台机器都要安装

yum install keepalived

keepalived配置虚拟ip(VRRP)实现双机热备以及自动切换主备_第1张图片

 2、两台服务器都安装完毕以后,可以下面的操作了

      修改配置文件        vi  /etc/keepalived/keepalived.conf

     进入以后,删除所有的行,输入命令1000dd  

    keepalived配置虚拟ip(VRRP)实现双机热备以及自动切换主备_第2张图片

 输入

vrrp_script chk_nginx {
  script "/home/keepalived/nginx_check.sh"
  interval 2
  weight -20
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens192
    virtual_router_id 100
    mcast_src_ip 11.11.1.112
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }

    track_script {
     chk_nginx
    }
    virtual_ipaddress {
        11.11.1.116
    }
}
耐心解释一下:
vrrp_script chk_nginx       这里是一个执行脚本,定时2S执行一次,这里的演示我没有创建这个脚本,所以它不会执行,也就是这句不会生效了。因此你如果不需要脚本的时候,可以把这句连同track_script 这句一起去掉。留着也不会有什么影响。

state BACKUP                表示这两个服务器都是备用服务器。

interface ens192            表示当前使用的网卡,通过ifconfig可以查看到,这我用的是ens192。

virtual_router_id 100 这个是个分组标记,在一个网内,所有的virtual_router_id为100的服务器自动分到一个组里面,由于这里面我把两台服务器的status都设置成为了BACKUP,那么这两台服务器就会利用priority这个值来决定谁是主服务器,谁是备用服务器,高的那个会抢占当前的vip,也就是它就会变成主服务器。

mcast_src_ip 填写你当前机器的真实ip即可

advert_int 1 没有仔细研究,应该是两台服务器之间的心跳间隔

authentication 就用默认的就可以了。

track_script 和vrrp_script chk_nginx 配合使用的。

virtual_ipaddress 两台机器共有的vip,注意,要和两台服务器在一个网关里面。

根据自己的情况,修改 ,然后保存退出:wq

另一台服务器的设置如下  

vrrp_script chk_nginx {
  script "/home/keepalived/nginx_check.sh"
  interval 2
  weight -20
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens192
    virtual_router_id 100
    mcast_src_ip 11.11.1.110
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }

    track_script {
     chk_nginx
    }
    virtual_ipaddress {
        11.11.1.116
    }
}

A与B虚拟的ip地址是11.11.1.116

priority 100比priority 99的级别要高,所以100是主机,99是从机;


两台机器都重启keepalived

systemctl restart keepalived

并且设置开机自重启

systemctl enable keepalived.service

测试配置是否成功!

1、我的两台服务器上都有http服务器,因此只需要用postman请求这个接口;

     打印请求参数,两台机器都完好的情况下,priority 100的肯定是主机,

     会出现打印的信息,priority 99的是从机,不会启用;

2、关闭priority 100的机器;这个时候同样的操作,用postman请求这个接口;

    若priority 99的出现打印的请求参数,说明成功!!!若不出现,说明不成功!!

    因为此时priority 100的机器已经关机了,priority 99就是唯一的主机了!!!

    

你可能感兴趣的:(服务器)