数据库IP网络切换问题
方案1:使用域名,解析到IP1,当IP1不可用时切换域名解析到IP2
缺点:域名解析有缓存,需要及时更新,数据库连接池(包括Redis连接池)需要及时检测连接的有效性。
随便说一案例,前不久我们遇到一个Redis客户端Lettuce的一个问题:Redis物理机挂了一个,但是集群节点没有及时同步(Lettuce默认没有启用拓扑刷新),参见:https://blog.csdn.net/qq_45401061/article/details/104263967。
方案2:使用VIP(虚IP),解析到IP1,当IP1不可用时切换VIP解析到IP2
相比1优点:无域名解析缓存。缺点:VIP绑定的IP1\IP2需要在同一个二层网络中(VIP基于ARP协议实现,工作在二层网络)。
作为程序员,我个人觉得,对于内部服务,域名和VIP都不是最佳方案,把IP切换的事情交给DNS或者VIP都不好控制,所以我更倾向于IP解析由自己的私有自主的平台来做(软件定义域名解析)。HTTP-DNS,是我想要的。通过搭建一个HTTP接口的域名解析服务(外加SDK),让其他需要查询IP地址的客户端发送请求来查询,然后返回最新的可用的IP地址。
实际上,腾讯、阿里,都有自己的HTTP-DNS服务。
HTTP-DNS原理及用途科普:
https://cloud.tencent.com/developer/article/1035562
阿里的产品介绍:
https://help.aliyun.com/document_detail/173240.html
腾讯HTTP_DNS的介绍:
https://cloud.tencent.com/document/product/379