我们已经为 DB 前端部署了多个 Haproxys TCP 模式 haproxy,在生产中为应用前端部署了第 7 层 haproxy。我正在寻找将一个后端节点从流量中取出并在应用程序上进行更新/发布/维护的最佳选择。要么我使用 Set server state Drain 要么 set weight 0 哪一个对于缓慢地将所有客户端连接重定向到应用程序的其他后端而不中断和重定向所有 tcp 连接是有效和有用的?还让我知道持久连接是什么意思?
我们已经为 DB 前端部署了多个 Haproxys TCP 模式 haproxy,在生产中为应用前端部署了第 7 层 haproxy。我正在寻找将一个后端节点从流量中取出并在应用程序上进行更新/发布/维护的最佳选择。要么我使用 Set server state Drain 要么 set weight 0 哪一个对于缓慢地将所有客户端连接重定向到应用程序的其他后端而不中断和重定向所有 tcp 连接是有效和有用的?还让我知道持久连接是什么意思?
使用排水管。
这可以防止新会话被定向到有问题的后端,但现有会话仍将被定向到该后端。因此,您应该等待一段合理的时间让用户结束他们的会话(取决于工作负载的类型,这可能是几分钟到一天)。
这当然是假设您在 haproxy 中配置了粘性会话,因此用户将始终被定向到相同的后端。如果不是这种情况,那么使用权重 0 或排水没有区别。
持久连接是保持打开的连接。如果您想使用这些,请确保 haproxy 超时时间足够长以适应这些连接;否则 haproxy 可能会关闭仍在使用(但空闲)的连接。