我在实验室的VM中运行了一个由3个Ubuntu节点组成的集群,希望现在就将其投入生产。hetzner.de hetzner.de提供了一些有价值的专用服务器,所以我租了3台机器,连接了一个千兆位交换机。
我的意图是创建一个HA设置,在2台HAProxy服务器前保留两台。保管人是配置了一个VIP在我的设置。不幸的是,这并不适用于赫茨纳。但是,他们提供了一个名为故障转移IP的系统,其中一个可以通过脚本切换到另一个服务器:http://wiki.hetzner.de/index.php/Failover_斯克里普特。
我的保存配置如下所示:
vrrp_script chk_haproxy {
script "killall -0 haproxy" # cheaper than pidof
interval 2 # check every 2 seconds
weight 2 # add 2 points of prio if OK
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 101
virtual_ipaddress {
192.168.56.101/24 # this is the shared IP I was using
}
track_script {
chk_haproxy
}
}那么,他们的故障转移脚本将如何适应这一点呢?
看来我不是唯一一个有问题的人,只是解决办法不那么明显。https://www.howtoforge.com/community/threads/hetzner-to-stop-support-for-high-availability-setups.19988/
发布于 2018-11-23 18:11:16
因为这是个老掉牙的答案,我不确定你是否还在寻找答案。但我无意中发现了它,寻找如何做到这一点的最佳方法。
Hetzner将故障转移IP分配给专用服务器的方式不是允许在服务器上配置故障转移IP,而是将流量路由到原始服务器IP。因此,不更改服务器上的任何内容并手动切换其管理界面中的IP是可能的。但是,对于大多数人来说,这并不是一个合适的解决方案,因为我不想从床上爬起来,手动关闭故障。这应该是自动完成的,然后通知管理员故障转移已经完成。也许,即使有一份小的报告,这份报告已经发布了系统所看到的,以及它失败的原因。
Keepalived可以为您做到这一点,唯一需要的是配置keepalived,以便在失败时运行脚本。但是,如果没有IP来进行故障转移,那么我们又如何进行故障转移呢?
简单;在服务器之间创建一个内部网络,并分配您自己的非路由内部IP来保持。由于这个内部网络使用与外部网络相同的接口,所以这并不重要。这种方法的一个好处是,通过使用这个内部VIP,您可以将所有内部通信量100%保持在内部。
一旦Keepalived失败,命令它从Hetzner运行脚本,并使用: notify切换外部ip
举个例子:
vrrp_script chk_haproxy {
script "killall -0 haproxy" # cheaper than pidof
interval 2 # check every 2 seconds
weight 2 # add 2 points of prio if OK
}
vrrp_instance VI_1 {
state MASTER
interface enp0s31f6.4000
virtual_router_id 51
priority 101
virtual_ipaddress {
192.168.100.3/24 # this is the shared IP I was using
}
track_script {
chk_haproxy
}
notify /usr/sbin/hetzner_failoverIP.sh database set $THIS_SERVER_IP
}当然,可以对Hetzner脚本进行调整,使其更智能,例如自行选择服务器IP。
应该注意的缺点是,外部IP将花费40到60秒。对我来说,最少40秒,最多1分钟是太长了。
另一种选择是使用Hetzner云实例来启用HA,而无需使用故障转移IP和上面的脚本。在云中还有另一个解决方案:云浮IP。
此选项将使您每月花费约8,50欧元,用于:
然后使用“保持”来管理云浮动IP (virtual_ipaddress部分)和HAProxy将所有流量发送到专用服务器。然后,HAProxy将进行健康检查,您不需要担心:
值得一提的是,Hetzner云服务器不支持是一个内部网络。但如果你以这种方式使用它们,这是不需要的,而且也不需要额外的费用,因为内部交通是免费的。为了安全起见,使用SELinux/AppArmor和Firewalld保护负载平衡器(Keepalived+HAProxy云实例)。使用两个集群之间的加密通信量(云<->专用的)来预先嗅探数据包。我也会加密您的专用服务器之间的流量,即使您使用的是私有VLAN,流量仍然通过相同的NIC发送出去。要记住的东西。
所用资料来源:
https://serverfault.com/questions/720855
复制相似问题