我有一台通过两个网络(微波链路和 ADSL 链路)连接到互联网的服务器。该服务器在两个网络中都分配了静态 IP 地址。
这两个网络都不可靠,经常断线。因此,无论我通过 ssh 从客户端运行什么任务,都会被中断,我不得不关闭所有东西并切换到另一个连接。
每次都这样做很令人沮丧,因此我想知道是否有一种方法可以打开一个并行使用两个网络的 ssh 连接,在两者之间共享数据传输,如果其中一个网络出现故障,则将整个数据流量重定向到另一个网络,这样我的 ssh 就不会受到影响,而且我可以在不知道 ssh 实际使用哪个网络的情况下无缝地工作?
这可能是一个荒谬而无意义的问题,但我不是网络专家。请告诉我这是否可能,或者如果有的话,请建议我以其他方式来实现这一点。
我的服务器使用 CentOS,客户端是 Ubuntu 和 Mac。
答案1
我建议采用另一种策略 - 虽然有些工具可以实现负载平衡,但它可能不适合你的用例。我建议建立一个能够抵御断开连接的会话
首先,我会在屏幕或者 tmux - 这样你的命令保持即使断开连接,也可以继续运行。然后您可以重新登录并重新连接会话。您想在任何情况下都可以这样做。您希望将屏幕安装在您的服务器。您启动一个 ssh 会话(或 mosh 会话),在其中启动 screen,并且在该会话(或其他 screen 会话)中启动的任何任务将继续运行。您甚至可以断开 screen 会话以执行其他操作,或者完全退出 ssh 会话并稍后返回 screen 会话。
我还建议看看莫什而不是普通的 ssh。Mosh 是设计让你可以在不同连接之间漫游,并且专为像你这样的高延迟连接而设计。我会用这个和屏幕是安全的,但是这应该可以让你做你想做的事。
我很想尝试负载平衡 - 我使用调度代理,如果连接不好,就会切换但我不确定这是否适用于 ssh 或 mosh 客户端。上述任何一种或两种建议都可能可以很好地处理这个问题,即使使用一信号不良。