我在同一台机器上托管了两台虚拟机,其中一台处于活动状态,即托管服务并连接到客户端(客户端直接在主机上运行)。我必须实现容错服务,即在主虚拟机发生故障时,由于两台虚拟机都托管相同的服务,因此客户端会自动连接到辅助虚拟机。
我读过关于浮动 IP 的文章,但当我查看时,我发现这是一项付费服务。有没有什么简单的方法可以实现这一点,而且不需要花钱?
该机器基于Linux,具体来说,主机是ubuntu 20.*,虚拟机有ubuntu 18.*。
答案1
您可以通过以下方式实现“浮动 IP”(也称为 VIP 或虚拟 IP):
- 保持连接 (VRRP)
- 起搏器/corosync
- 鲤鱼(http://manpages.ubuntu.com/manpages/precise/man4/carp.4freebsd.html)
仅供参考:您还可以通过让客户端从列表中选择健康的服务器来实现客户端的冗余。
请注意,在同一主机不推荐。(主机是单点故障)
答案2
我建议你使用反向代理作为应用程序/虚拟机前的负载平衡器。你可以使用类似nginx
或haproxy
nginx 配置如下:
http {
upstream backend {
server backend1.example.com;
server backend2.example.com;
server 192.0.0.1 backup;
}
server {
location / {
proxy_pass http://backend;
}
}
}
它自动为上游主机实施健康检查,因此如果任何上游主机出现故障,它将被 nginx 自动检测到,并停止向不健康的主机发送请求。
更多内容可参见: https://docs.nginx.com/nginx/admin-guide/load-balancer/http-load-balancer/