我正在完美地使用带有循环的 haproxy,但现在我面临一个问题:我的一个后端服务器已加载。
- 我想知道我是否可以根据后端服务器上的负载平衡流量。另外,如果一个失败并限制为最大值。conn 流量转到其他后端服务器
- 最小连接、循环和全局最大连接、默认最大连接和服务器最大连接之间的区别
我正在完美地使用带有循环的 haproxy,但现在我面临一个问题:我的一个后端服务器已加载。
如果一个服务器比其他服务器负载更多,那么机械上它会看到更多的并发连接相同的请求率。这就是切换到最小连接算法变得有用的地方,这将确保所有服务器始终以相同数量的并发连接运行。例如,如果您的某些请求比其他请求长得多(例如:数据库中的复杂请求),这很有用。
对于第二点,我会很简短,因为所有内容都在文档中,但 leastconn 关注并发连接数,而 round robin 关注累积连接数。使用轮询,每个服务器依次收到一个请求,因此同一服务器上的请求间隔最佳。这对于静态服务器或具有粘性的应用程序通常更好,因为一旦连接到服务器,用户就会发出大量请求,因为这可以确保您在同一台服务器上拥有相同数量的用户。全局 maxconn 是单个 haproxy 进程将支持的并发连接总数。当达到限制时,它将停止接受传入的连接。默认的 maxconn 仅适用于前端,当达到前端的 maxconn 时,该前端只会停止接受新连接。服务器 maxconn 确保 haproxy 永远不会向服务器发送太多连接。当达到限制时,尽可能选择其他服务器(无 cookie 等),或者请求排队,直到服务器释放连接以选择它。如果您的服务器过载,您应该检查连接数并应用略低于此值的服务器 maxconn 以保护它们。