双击热备方案实现(全)

双击热备是应用与服务器的一种解决方案,其构造思想是主机和从机通过TCP/IP网络连接,正常情况下主机处于工作状态,从机处于监视状态,一旦从机发现主机异常,从机将会在很短的时间内代替主机。完全实现主机的功能。

要想实现双击热备方案,就需要用到keepalived软件。

1.Keepalived介绍

Keepalived 是一种高性能的服务器高可用或热备解决方案, Keepalived 可以用来防止服务器单点故障的发生,通过配合 Nginx 可以实现 web 前端服务的高可用。

Keepalived是Linux下一个轻量级别的高可用解决方案。使用的是VRP协议,VRP协议将两台或多台设备组成一个虚拟路由组,在这个虚拟路由组中会存在一个MASTER书点以及多个BACKUP节点,在MASTER节点上会绑定一个虚拟VIP虚拟VIP),作为客户机只需要使用这个VIP来访问后端的服务器即可。虚拟IP的使用和真是P其实没有区别。当MASTER节点宕机以后,此时会从多个BACKUP节点中选择一个节点作为MASTER节点,而只有MASTER节点才可以绑定对应的VP,此时VIP就会重新绑定到新的MASTER节点上,这样就实现了ip的飘逸。而整个过程对客户机是透明的,客户机是感知不到ip飘逸的整个过程。

2.实操演示

2.1环境说明

本次我们使用两个虚拟机来演示一下借助于keepalived来实现双机热备。具体的环境说明如下所示:

2.2nginx安装

分别安装nginx

查看正在运行的进程并过滤出包含nginx关键字的进程的命令 :

ps -ef | grep nginx

查看防火墙状态:

systemctl status firewalld.service

如果状态为running

关闭防火墙:

systemctl stop firewalld.service

浏览器输入主从节点的IP查看nginx页面

主节点:

从节点:

2.3keppalived安装

主节点配置文件内容:

#定义虚拟网卡需要和当前服务器(192.168.35.xxx)绑定的网卡相对应

#定义组vriid,主从节点id配置相同

#adver_int : 1 每一秒发送一次心跳检查包

#主从节点之间的认证是通过密码认证,主从节点配置必须相同

#设置虚拟ip:用户去访问的ip,主从节点需要一致

备份节点配置文件内容:

配置完毕后启动Keepalived服务:

(先启动主节点,在启动从节点)

启动完成之后,查看ens33网卡ip地址是否新增了前面所配置的虚拟ip地址(110)

此时在主节点上查看查看ens33网卡ip地址时,可查看新增的110ip,从节点不显示110ip。

主节点:

从节点:

2.4 进行测试

1、使用虚拟ip访问nginx服务:http://192.168.136.1102、关闭主节点上的keepalived软件,查看ip是否可以自动飘逸

2.当把主节点(150)的keepalived服务停止时

停止后查看主节点(150)ens33网卡ip地址时,IP已发生飘逸变成150的IP

查看从节点(151)时,IP已经变成110

3.当把主节点(150)的keepalived服务启动时

启动后查看主节点(150)ens33网卡ip地址时,IP已发生飘逸变成110的IP

查看从节点(151)时,IP已经不显示虚拟IP

3.编写检测脚本

在刚才我们是通过手动关闭keepalived软件然后让ip飘逸到从节点上了,大家试想一下如果这个主机上的keepalived软件没有出现问题,而是nginx出现了问题,此时ip开会自动飘逸吗?肯定是不会的,那么此时用户使用虚拟ip访问的还是有问题的nginx,此时就无法完成请求访问。

虚拟IP(110)访问失败,因为目前110绑定的是主节点150,当访问虚拟IP110时,实际上访问的是主节点150的nginx,此时主节点150的nginx挂了,nginx访问失败。

解决该问题的思路:就是编写一个检测nginx服务的脚本,然后让keepalived每隔一段时间执行一次,一旦检测到了nginx出现问题了以后,就将keepalived进程关闭掉,keepalived进程关闭后,IP会进行漂移到另一台服务器。

检测脚本(check_nginx.sh):

(反引号)判断nginx的结果,当结果A=0时,标识nginx没启动,此时就将keepalived进程关闭掉。

设置可执行权限:

可将此脚本放在keepalived配置文件的相同目录

脚本执行命令:sh /路径/check_nginx.sh

测试

当执行脚本之后,主节点150 ens33网卡ip地址没有虚拟IP 110 ,此时访问110 时实际访问的是另一台服务器(151)的nginx

现在就能解决该问题,但是以上脚本时手动执行的,不现实,下面将修改配置,自动执行检测脚本。

在原来主节点的keepalived配置文件加上如下配置

注意:如果发现检测脚本不执行,此时就需要关闭linux中安全检测模块。

测试

1.启动主节点(150)的nginx,在启动主节点(150)的keepalived,此时查看主节点的 ens33网卡ip地址,发现虚拟IP110已经漂移回来了。

此时访问虚拟IP 110时,实际访问的是主节点 150的nginx

2.主动关闭主节点上的nginx

再次访问虚拟IP 110,此时实际访问的从节点151的nginx

至此,完整的双击热备解决方案得以解决!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值