是否可以实现两个具有故障转移和复制功能的 OpenVPN?例如,如果其中一个关闭/发生故障,另一个可用于身份验证、服务器/客户端配置等。?
答案1
我不明白为什么要盲目地开枪。在我看来,有一种更简单的方法:使用内置的 OpenVPN 功能和 linux iproute2 实现多路径冗余。这样会更安全、更稳定,而且资源消耗更少。
来源:https://openvpn.net/index.php/open-source/documentation/howto.html
实现负载平衡/故障转移配置客户端
OpenVPN 客户端配置可以引用多个服务器以实现负载平衡和故障转移。例如:
remote server1.mydomain
remote server2.mydomain
remote server3.mydomain
将指示 OpenVPN 客户端按顺序尝试与服务器 1、服务器 2 和服务器 3 建立连接。如果现有连接中断,OpenVPN 客户端将重试最近连接的服务器,如果失败,将转到列表中的下一个服务器。您还可以指示 OpenVPN 客户端在启动时随机化其服务器列表,以便客户端负载在服务器池中概率分布。
remote-random
如果您还希望 DNS 解析失败导致 OpenVPN 客户端移动到列表中的下一个服务器,请添加以下内容:
resolv-retry 60
60 参数告诉 OpenVPN 客户端尝试解析每个远程 DNS 名称 60 秒,然后再转到列表中的下一个服务器。
服务器列表还可以指在同一台机器上运行的多个 OpenVPN 服务器守护程序,每个守护程序监听不同端口上的连接,例如:
remote smp-server1.mydomain 8000
remote smp-server1.mydomain 8001
remote smp-server2.mydomain 8000
remote smp-server2.mydomain 8001
如果您的服务器是多处理器机器,则从性能角度来看,在每台服务器上运行多个 OpenVPN 守护程序是有利的。
OpenVPN 还支持引用在域的区域配置中具有多个 A 记录的 DNS 名称的 remote 指令。在这种情况下,每次解析域时,OpenVPN 客户端都会随机选择其中一个 A 记录。服务器
在服务器上实现负载平衡/故障转移配置的最简单方法是在集群中的每台服务器上使用等效的配置文件,但每台服务器使用不同的虚拟 IP 地址池。例如:
服务器1
server 10.8.0.0 255.255.255.0
服务器2
server 10.8.1.0 255.255.255.0
服务器3
server 10.8.2.0 255.255.255.0
答案2
故障转移?是的,我经常使用 heartbeat 和 CRM 进行故障转移。尝试复制或保留状态是不值得的;当发生故障转移时,所有连接的客户端都会重新进行身份验证,这对于经常出差的人来说没问题。对于站点到站点 VPN 来说,这不太好,但(在我看来)OpenVPN 无论如何都不是适合这些用途的工具。