通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务。
当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短。
下面来以keepalived结合tomcat来实现一个web服务器的双机热备过程:
keepalived的工作原理是VRRP虚拟路由冗余协议。
在VRRP中有两组重要的概念:VRRP路由器和虚拟路由器,主控路由器和备份路由器。
VRRP路由器是指运行VRRP的路由器,是物理实体,虚拟路由器是指VRRP协议创建的,是逻辑概念。一组VRRP路由器协同工作,共同构成一台虚拟路由器。Vrrp中存在着一种选举机制,用以选出提供服务的路由即主控路由,其他的则成了备份路由。
当主控路由失效后,备份路由中会重新选举出一个主控路由,来继续工作,来保障不间断服务。
两台物理服务器和一个虚拟服务器(vip):master:redhat2.6.18-53.el5192.168.8.4;backup:redhat2.6.18-53.el5192.168.8.6;vip:192.168.8.100。
节点A192.168.8.4(主节点),节点B192.168.8.6(备用节点),虚拟IP(对外提供服务的IP192.168.8.100)
在这种模式下,虚拟IP在某时刻只能属于某一个节点,另一个节点作为备用节点存在。
当主节点不可用时,备用节点接管虚拟IP(即虚拟IP漂移至节点B),提供正常服务。
keepalived的原理可以这样简单理解:
keepalived安装在两台物理服务器上,并相互监控对方是否在正常运行。
当节点A正常的时候:节点A上的keepalived会将下面的信息广播出去:
192.168.8.100这个IP对应的MAC地址为节点A网卡的MAC地址
其它电脑如客户端和NodeB会更新自己的ARP表,对应192.168.8.100的MAC地址=节点A网卡的MAC地址。
当节点A发生故障的时候,节点B上的keepalived会检测到,并且将下面的信息广播出去:
192.168.8.100这个IP对应的MAC地址为节点B网卡的MAC地址
其它电脑如客户端会更新自己的ARP表,对应192.168.8.100的MAC地址=节点B网卡的MAC地址。
扩展资料:
双机热备特指基于active/standby方式的服务器热备。服务器数据包括数据库数据同时往两台或多台服务器执行写 *** 作,或者使用一个共享的存储设备。在同一时间内只有一台服务器运行。
当其中运行着的一台服务器出现故障无法启动时,另一台备份服务器会通过软件诊测(一般是通过心跳诊断)将standby机器激活,保证应用在短时间内完全恢复正常使用。
Keepalived的运行原理是基于VRRP(虚拟路由冗余协议)机制,在VRRP中有两个重要的概念:VRRP路由器和虚拟路由器,主控路由器和备份路由器。
VRRP路由器是一种实体路由器设备,而虚拟路由器则是基于VRRP协议构建的虚拟路由器,是软性的虚拟概念,一组VRRP路由器协同工作,共同构造一台虚拟服务器。
VRRP协议支持一种选举机制,主要用来选出用来提供服务的路由即主控路由,其它的就是备份路由了,当主控路由失效之后,备份路由中重新选出一个主控路由(往往按照设置好的优先级别重新分配),接管主控服务,继续工作,来保证不间断的提供服务。
参考资料:百度百科-双机热备
本文使用的是 VMware Workstation 15 Player ,创建两个虚拟机,分别命名为 CentOS 7 64位 M 和 CentOS 7 64位 B ,M表示"master"主服务器,B表示"backup"备用服务器。网络连接选择 NAT模式 ,启动后使用 ip add 发现没有自动分配ip地址,是因为CentOS 7默认是不启动网卡的,解决方法如下:
打开配置文件,把 ONBOOT=no 这一项改为 ONBOOT=yes ,然后 :wq 保存退出,然后重启网络服务:
这时候再输入 ip add 会发现ip地址有了。
本文Master ip为 192.168.56.131 ,Bcakup ip为 192.168.56.132 。
虚拟ip(vip)定义为 192.168.56.188 。
安装gcc
进入nginx-1.6.2并执行configure文件
成功后会在/usr/local/nginx目录下看到 conf、html、logs、sbin 四个目录。
启动命令:
停止命令:
重启命令:
使用如下命令查看相关端口是否已启动Nginx
浏览器输入Master的ip地址: http://192.168.56.131 ,出现Nginx的欢迎页面即成功启用Nginx。
同理,Backup浏览器输入: http://192.168.56.132 ,同样出现Nginx的欢迎页面。
注意这个地方,html中最后一行 "Thank you for using nginx." 本文针对Master和Backup分别进行了修改便于热备时更好的区分服务是否切换成功,修改的文件在
如果启动成功,但进入不了欢迎页面,则可能需要关闭firewalld防火墙:
进入keepalived-1.2.18并执行configure文件
在 /etc/ 目录下创建keepalived文件夹
将keepalived配置文件复制到/etc/keepalived下
将keepalived脚本文件复制到/etc/相关目录下
创建keepalived软链接
设置开机启动
安装完毕。
进入/etc/keepalived/目录下打开keepalived.conf文件进行修改
在/etc/keepalived/目录下创建sh脚本文件
1、安装nano
2、使用nano创建nginx_check.sh脚本
3、打开nginx_check.sh并编辑如下内容
(注意`符号,非'符号)
4、脚本授权
安装并配置完毕后,可以分别启动两台虚拟机上的Nginx和Keepalived进行热备的验证了。
启动Nginx:
启动Keepalived:
关闭Keepalived:
查看nginx进程:
查看keepalived进程:
分别启动Nginx和Keepalived后,Master输入 ip add 查看ip多了一个 192.168.56.188
打开浏览器输入ip地址: http://192.168.56.188 看到Nginx的欢迎页面
此时nginx131说明为主节点。
然后我们将Keepalived关闭
或kill掉Nginx进程,因为有nginx_check.sh脚本会检测如果没有Nginx进程运行也会自动将Keepalived关闭
会发现,节点由Master切换到了Backup:
热备成功。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)