我有haproxy监听几个端口,并指出了几个后端服务器。
理想情况下,我想这样做,以便重复通信到同一个端口指向相同的后端。
“平衡源”是不可行的,因为经常请求来自同一个来源。
这是可行的吗?
我也开放给非haproxy解决scheme。 正在使用的协议并不重要,但肯定不是http。 只要承担其ssh,你不应该出问题。
编辑:澄清,想象我有10'后端服务器'和5'客户'。 每个后端服务器一次只能处理一个连接。 我有更多的服务器比需要一些变得不可用。 我将手动将每个客户端指向haproxy端口。 我想确保每个客户端总是到达后端服务器(这很简单),但是最好每次只要有可用的服务器就一直到同一个服务器。
以下是我如何解决我的问题。
frontend name_of_frontend bind *:20000-20010 default_backend servers backend servers balance roundrobin stick-table type integer size 1k expire 3h stick on dst_port server name ip-address check maxconn 1 ... server name ip-address check maxconn 1
威利在之前的答复评论中警告说,“不能保证每个客户都会去不同的港口”。
在我的具体情况下,我完全控制了我的“客户”。 我将它们指向代理服务器上的不同端口的唯一原因是,我可以将它们识别为不同的客户端。 这绝对不是一个“公共”系统。
Haproxy没有实现ip:port persistence,因为在代理中它没有任何意义。 这样做在基于数据包的负载均衡器(例如:LVS)中有很大的意义,因为它允许使用循环等无状态的负载均衡,如分配和持久性。 但是在代理中,连接必须始终保持在两端。 所以我真的不知道你想要做什么。
如果你所需要的只是一个目的端口 – >服务器关系,那看起来很奇怪,因为你需要在远远超过服务器的端口上监听才能获得平滑的平衡。 我真的不确定你会这么做。
我不是haproxy的专家,但我知道除了source之外,它还有其他的负载平衡选项(至less它有循环)。 我build议检查HAProxy文档以查看每个负载均衡模式的function和限制。
你也可以通过使用pf防火墙来达到你想要的效果(如果你需要一个graphics用户界面, pfSense是一个很好的select)。 使用sticky-address选项设置防火墙上的负载均衡(循环法或类似的),您应该有一个可行的设置。