前言
本文要说的是基于 keepalived 实现两台服务器之间的主备切换,从而实现 Java 服务的高可用。keepalived 的原理不多做介绍,自行搜索了解,keepalived 的安装部署请参考 keepalived 的安装及使用 。
个人建议
不要沉迷于 死扣 和 理解 原理,网上关于原理的文章大同小异,关键词就是 虚拟ip,了解个大概,动手实践下,结合 keepalived 的配置文件会更好。
项目描述
我所做的项目是不是一个 web 程序,主要功能是定时从文件服务器下载文件,然后做一些处理,放到本地。
需求
当一台服务器部署的系统出现故障时,能够有备用机器继续提供服务,尽量避免人工介入去恢复系统。注意跟负载均衡的区别!初步方案只提供一台备用机。
方案
1. 实现原理
keepalived 的配置文件中有 权重 和 STATE 两个配置项,两台机器上的 keepalived 通过 虚拟IP 绑定之后,它们之间就可以通过上述的配置项来进行 ”选举“ ,区分 MASTER 和 BACKUP 。
然后配合 keepalived 中另外的两个功能,检测脚本 和 通知脚本 实现我们的主备切换的需求。
到底如何决定 MASTER 和 BACKUP ?
STATE 的值可以是 MASTER 和 BACKUP,当 两台机器配置的 STATE 的值相同,并且权重相同时,谁先启动谁是 MASTER,当两台机器的配置的 权重 相同时,state 为 MASTER 的那台机器最终会成为 MASTER(哪怕这台机器启动的时间比另一台晚)
<