我有一个场景,我有两个 tomcat服务器 A 和 B在 haproxy 后面,现在其中一个应用服务器有新版本的 war,而另一个 tomcat 有旧版本的 war 文件。因此,在某个时间点,我们将只有服务器 A 处于活动状态,其中包含一组用户,过一会儿我们启用服务器 B,现在任何新来的请求都应该只发送到应用服务器 B,而旧用户应该仍然在应用服务器 B。在 haproxy 中应该如何做到这一点,我已经使用 appsession 启用了会话持久性。有没有办法实现这一点?
答案1
我相信您可以通过调整 haproxy 后端中的服务器权重来实现这一点。您可以使用套接字 cli 在运行时设置权重。请参阅设置重量的文档。体重状态文档:
“weight”参数用于调整服务器相对于其他服务器的权重。所有服务器都将获得与其权重相对于所有权重总和成比例的负载,因此权重越高,负载越高。默认权重为 1,最大值为 256。值为 0 表示服务器将不参与负载平衡,但仍将接受持久连接。如果使用此参数根据服务器的容量分配负载,建议从可以增加和缩小的值开始,例如在 10 到 100 之间,以便在上下留出足够的空间以供以后调整。
我以前从未尝试过,所以您需要进行实验以确保它具有所需的结果。此外,我相信如果您重新启动 haproxy,通过套接字 cli 设置的任何权重都将重置。