浮动地址让代理设置保持稳定:活动机器故障后,客户端仍使用同一个主机名或 IP。这是有用的可用性。但已经在进行的下载仍可能中断。

设想一个已经进入 CONNECT 的 HTTPS 请求。活动代理持有面向客户端的 TCP 连接,以及通往站点的另一条连接。它还持有把这两条流拼接起来的应用状态。

把地址迁到备用机器,本身并不会搬走任何一个 TCP 控制块,也不会搬走那份中继状态。新的持有者可以接受新连接,却无法延续旧持有者建立起来的字节流。

期望普通地址故障切换能满足吗?
保留一个已配置的入口这正是它预期的收益
延续已建立的 CONNECT 流需要额外的有状态机制
保持同一个对外公网 IP取决于出口路由与 NAT
安全地重试被打断的应用操作取决于该操作与客户端

VRRP 定义选举与地址归属,它并不是代理进程的复制协议。使用其他高可用软件的部署也需要同样的区分,除非它明确提供了更多能力。

审视健康检查究竟观察到什么。机器可能在代理服务、DNS 或上游路由已经故障时仍能应答通告。反过来,过于灵敏的检查会导致不必要的切换。

客户端侧的恢复同样重要。新的浏览器请求也许很容易重连;带已被消费的请求体的上传或非幂等的 API 操作,则可能需要应用层专门处理。不要仅因为新请求经备用机成功,就承诺不可见的故障切换。

相关文章