我之前发布过这个问题: https://stackoverflow.com/questions/34977074/how-to-use-load-balancer-for-sockets
基本上我的要求是通过负载均衡器向特定的应用服务器发送特定的URL请求。所以我正在寻找一种可以完成我的要求的负载均衡器。
我正在阅读关于nginx plus的内容,并找到了此链接。 https://www.nginx.com/resources/admin-guide/load-balancer/
本文档中有一个粘性路径的概念。我只是想知道它能否达到我的目的?
答案 0 :(得分:2)
我相信你需要的东西可以由HAProxy完成,它比NginX做更专业的负载平衡。
它具有以下功能:您可以使用URI
将基于ACL
的特定请求定向到特定的后端服务器。这是一个非常简单的例子(来自默认配置文件):
#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend main *:5000
acl url_static path_beg -i /static /images /javascript /stylesheets
acl url_static path_end -i .jpg .gif .png .css .js
use_backend static if url_static
default_backend app
#---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
backend static
balance roundrobin
server static 127.0.0.1:4331 check
#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend app
balance roundrobin
server app1 127.0.0.1:5001 check
server app2 127.0.0.1:5002 check
server app3 127.0.0.1:5003 check
server app4 127.0.0.1:5004 check
#---------------------------------------------------------------------
如需更多阅读,请查看official HAProxy Docs
答案 1 :(得分:0)
粘性路由(也就是粘性会话或会话持久性)是关于保持客户端连接到同一个上游。如果您负载平衡登录的用户会话,付款交易等,这将非常有用。
我相信你要找的是基于位置的路由。这会将/ payment / *等请求路由到一组上游,将/ login / *路由到另一组上等。在Microservices Solutions页面上有关于此的部分。
您要做的是定义几个上游组,然后在不同的位置块内对这些上游进行proxy_pass。我将在这里提供一个简短的例子:
upstream payments {
server backend1.example.com
server backend2.example.com
}
upstream login {
server backend3.example.com
server backend4.example.com
}
server {
...
location /payments {
proxy_pass http://payments;
}
location /login {
proxy_pass http://login;
}
}
(免责声明:我在NGINX工作。)