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

首先准备两台服务器,我这里的两台服务器的ip分别是192.168.129.128和192.168.129.129

1.安装keepalived(两台都要装):

yum install keepalived

2.修改配置文件,删除掉/etc/keepalived/keepalived.conf,然后重新创建一个/etc/keepalived/keepalived.conf:

vi /etc/keepalived/keepalived.conf

128这台服务器的内容如下:

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

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

    track_script {
     chk_nginx
    }
    virtual_ipaddress {
        192.168.129.100
    }
}
 

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

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

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

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,注意,要和两台服务器在一个网关里面。

129的配置文件如下:

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

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

    track_script {
     chk_nginx
    }
    virtual_ipaddress {
        192.168.129.100
    }
}
3.修改好配置文件之后,重启两台机器的keepalived:

systemctl restart keepalived

4.由于129这台机器的priority是100,比128的大,所以,这个时候,vip应该是被129占用着的。为了测试方便,我分别在两台服务器上安装了数据库postgresql,128里面有一个数据库128,129里面有一个数据库129,如图:

5.测试之前先把两台机器的防火墙都关掉:systemctl stop firewalld。然后使用192.168.129.100这个vip链接数据库,如前所述,当前是129占用着vip,因此使用padmin3尝试链接上数据库之后,应该看到129的数据库,如图:

6.把129的keepalived进程杀掉或者关机:

再尝试用100链接数据库,看到的应该是128数据库了,表明128服务器接管了当前服务变为主服务器了:

7.现在恢复129服务器,修改掉配置文件里面的priority为98(比128当前的值要小),然后启动keepalived,这样129就由原来的主服务器变为备用服务器了。重新用100这个vip链接数据库,看到的应该仍然是128数据库:

8.把128的keepalived进程终止掉或者把服务器关机,再次用100尝试链接数据库,看到的应该是129:

表示129正确接管了当前服务,尝试恢复128(恢复前将priority值改为97),这个时候128就变成了备用服务器了。

9.现在还有一个问题,前面说的是主备自动切换,两台服务器互为主从的模式,如果我们希望把其中一台服务器作为主服务器,当它宕机的时候,备用服务器接管,当它恢复后,将备用服务器的接管权抢占过来,该怎么做呢,方法就是利用priority这个属性。前面我们说过谁的值大,谁就会抢占vip,然后作为主服务器,也就是说在主服务器宕机恢复后,只要确保它的priority值大于备用服务器,那么它就会自动抢占vip,从而成为主服务器。这里我就不演示了,有需要的话自己可以尝试下。

  • 15
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值