浅调研了下浮动ip方案。主要是用来做高可用/灾备切换,同一时间只有一个服务器提供服务。
三个问题
无论是什么方案,都要解决这三个问题:
- 如何配置浮动ip
- 如何实现故障检测
- 如何切换浮动ip
浮动IP方案
第一种:主备手动配置ip,脚本执行检测切换
https://blog.csdn.net/helloworld_9/article/details/133799465
主从上网卡配置浮动ip;利用crontab自动执行技术,定时执行脚本,检查IP地址的状态,实现浮动IP的自动开启与关闭(ifdown eth0:1)
本质:主ping自己浮动ip,ping不同就开启;备ping主ip、浮动ip,ping不同就启动从上的浮动ip,能ping通再关
三个ip同一个网段
问题:
1.从有网络问题导致ping不通主时,两个浮动ip都开启怎么办?
2.检测脚本自己挂了怎么办?
第二种:keepalived
centos参考;ubuntu参考
keepalived配置vip和检测脚本路径,自动切换
如何监控服务状态:
https://blog.csdn.net/yusewuhen/article/details/133918777
最简单的做法是监控进程,更靠谱的做法是检查端口,最靠谱的做法是检查多个url能否获取到页面。
通过脚本检测服务是否在运行
ip自动漂移,不可控
virtual_ipaddress 要和两台服务器在一个网关里面,还是同网段。不同网段虽然能查到一些文章(https://blog.csdn.net/qq_25290835/article/details/87878973),单没有看到具体实现方案,得试。
第三种:Heartbeat
这个没怎么查,只看了下同keepalived的区别。感觉非双机热备用不到这么复杂的方案。
keepalived | Heartbeat | |
---|---|---|
使用 | 安装、配置、使用、维护简单 | 复杂,但功能更强大,配套工具更全 |
集群管理 | 用于集群倒换,基本没有管理功能 | 适合做大型集群管理 |
协议 | 使用VRRP协议做双机进行通信和选举 | 使用心跳进行通信和选举 |
lvs的高可用建议用keepavlived | 业务的高可用建议heartbeat |
keepalived是高可用集群,heartbeat是双机热备
Heartbeat仅仅是个HA软件,它仅能完成心跳监控和资源接管,不会监视它控制的资源或应用程序,要监控资源和应用程序是否运行正常,必须使用第三方的插件,例如ipfail、Mon、Ldirector等。Heartbeat自身包含了几个插件,分别是ipfail、Stonith和Ldirectord
heartbeat高可用是服务器级别的,不是服务级别的。
方案总结
回答三个问题:
- 如何配置浮动ip:
本质都是在服务器网卡上配置别名ip或者辅助ip
https://blog.csdn.net/chengxuyuanyonghu/article/details/83539966 提示,别名ip将被遗弃,使用辅助ip替代
- 如何实现故障检测:
自动检测顶多能检测到ip通不通,想要检测服务挂不挂、挂了再切就要自己写脚本 - 如何切换浮动ip:
既然vip都是配到了网卡上,猜测一下,就是删除现在的vip配到另一台机器上。(待查证)
更复杂的情况-别的思路
简单场景用简单方法,如果场景复杂了,就要考虑别的问题。
- 高可用/灾备切换,同一时间只有一个服务器提供服务,相对简单。如果是需要同时提供服务,负载均衡,如何处理?
- 如果不是多服务器,是多集群,对外提供一个浮动ip,这个ip配在哪里?
这就要搞复杂方案了,上nginx,单独写一篇。
——看这个nginx反向代理,暂时就先写到vip,负载均衡后面补上。
扩展:HaVip
查资料的时候看到了这个,总体就是云环境会有问题,所以也先放到这里。
https://help.aliyun.com/zh/vpc/user-guide/use-highly-available-virtual-ip
在VPC(虚拟私有云)环境下不支持免费ARP广播功能,无法像传统方式一样修改主机IP地址,且整个虚拟网络是基于3层的隧道技术,ARP被终结在发送端,主机无法声明IP地址。