mer*_*lin 2 failover high-availability keepalived
我有一个由 3 个 Ubuntu 节点组成的集群,在实验室的 VM 中运行,现在想将其投入生产。Hetzner Online hetzner.de 提供了一些物有所值的专用服务器,所以我租了 3 台机器,连接了一个千兆交换机。
我的目的是在 2 个 HAProxy 服务器前创建一个带有两个 keepalived 的 HA-Setup。Keepalived 在我的设置中配置了一个 VIP。不幸的是,这不适用于 Hetzner。然而,他们提供了一个称为故障转移 IP 的系统,可以在脚本的帮助下切换到另一台服务器:http : //wiki.hetzner.de/index.php/Failover_Skript
我的 keepalived 配置如下所示:
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
}
}
Run Code Online (Sandbox Code Playgroud)
那么他们的故障转移脚本如何适应这个呢?
看起来我不是唯一一个遇到问题的人,只是解决方案不是那么明显。https://www.howtoforge.com/community/threads/hetzner-to-stop-support-for-high-availability-setups.19988/
由于这是一个旧答案,我不确定您是否仍在寻找答案。但我偶然发现它寻找如何做到这一点的最佳方法。
Hetzner 将故障转移 IP 分配给专用服务器的方式不是允许它在服务器上配置,而是将流量路由到原始服务器 IP。因此,可以不更改服务器上的任何内容并在其管理界面中手动切换 IP。然而; 这对大多数人来说不是一个合适的解决方案,因为我不想起床手动故障转移。这应该自动完成,然后通知管理员故障转移已经完成。甚至可能有一个小报告,其中显示了系统已经看到的问题以及它为什么会发生故障转移。
Keepalived 可以为您做到这一点,唯一需要的是配置 keepalived 在故障转移时运行脚本。但是如果没有IP进行故障转移,我们如何进行故障转移?
简单的; 在服务器之间创建一个内部网络,并将您自己的非路由内部 IP 分配给 keepalived。由于此内部网络使用与外部网络相同的接口,因此这并不重要。这种方法的一个好处是,您可以使用此内部 VIP 将所有内部流量 100% 保持在内部。
一旦 Keepalived 发生故障,您可以命令它运行来自 Hetzner 的脚本,并使用以下命令切换外部 IP:notify
一个例子:
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
}
Run Code Online (Sandbox Code Playgroud)
当然,Hetzner 脚本可以调整得更智能,例如自行选择服务器 IP。
应该注意的缺点是外部 IP 将需要 40 到 60 秒。对我来说,最少 40 秒和最多 1 分钟太长了。
另一种选择是使用 Hetzner 云实例来启用 HA,而无需使用故障转移 IP 和上述脚本。在云端还有另一种解决方案:云端浮动IP。
此选项将使您回到每月约 8.50 欧元的以下费用:
然后使用keepalived来管理云浮动IP(virtual_ipaddress部分)和HAProxy将所有流量发送到专用服务器。然后 HAProxy 将进行健康检查,您无需担心:
值得一提的是,Hetzner 云服务器不支持内部网络。但是,如果您以这种方式使用它们,则不需要它,并且不会花费您额外的费用,因为内部流量是免费的。为了安全起见,请使用 SELinux/AppArmor 和 Firewalld 保护负载均衡器(Keepalived+HAProxy 云实例)。使用两个集群之间的加密流量(云 <-> 专用)来防止数据包嗅探。即使您使用的是私有 VLAN,我也会对您的专用服务器之间的流量进行加密,流量仍然通过同一个 NIC 发送。要记住的事情。
使用的来源:
| 归档时间: |
|
| 查看次数: |
5387 次 |
| 最近记录: |