我正在四个地点设置四台服务器,试图创建一个地理冗余的 MySQL Galera 集群。其中两台服务器位于 NAT 后面,我目前正在尝试使用 WireGuard 来克服这一不便。
服务器一号和二号托管在云端,三号和四号位于我家实验室的 NAT 后面。我让三号和四号通过 WireGuard 连接到一号和二号,这样即使云服务器出现故障,集群仍可运行。
每台服务器在其他每台服务器上都有两个 IP 地址:
- 10.1.0.x(其中 x 为一、二、三或四)通过服务器一上的 WireGuard 进行路由
- 10.2.0.x(其中 x 为一、二、三或四)正在通过服务器二上的 WireGuard 进行路由
我怎样才能将这两个 IP 地址绑定在一起,以便如果一个 WireGuard 隧道出现故障,另一个隧道可以无缝接管而 MySQL Galera 不会注意到?
如果 10.0.0.x(其中 x 为一、二、三或四)是统一 IP,那么 Linux 就会路由到当前在线的任何主机,这样就太好了。然后我可以通过添加更多路由来添加更多 WireGuard 服务器,而 10.0.0.x 将保持不变。
我已经尝试使用iproute2
路由指标来执行此操作,但是,当远程服务器出现故障时,WireGuard 接口永远不会被标记为“DOWN”,因此切换永远不会发生并且会发生数据包丢失。