gpt4 book ai didi

ssl - 定义自定义负载均衡算法

转载 作者:太空宇宙 更新时间:2023-11-03 12:41:38 24 4
gpt4 key购买 nike

情况是这样的:

我有很多网络服务器,比如 10 台。我需要使用一个(软件)负载平衡器,它可以使用反向代理服务器(如 HAProxy 或 Varnish)来实现。现在,我们服务的所有流量都通过 https 而不是 http,因此 Varnish 是不可能的。

现在,我想将用户的请求分为几类,这取决于请求的输入 (POST) 参数之一。根据该参数,我需要在服务器之间划分请求,基于此,(即使所有其他输入 (POST) 参数相同)不同的服务器将提供不同的服务。

因此,我需要定义一个自定义负载平衡算法,这样,对于该参数的特定值,我将负载分配给特定的 3(比如),对于其他一些值,将请求分配给特定的 2,并且其他值,剩余 5 个。

由于我不能使用清漆,因为它不能用于终止 ssl(在 VCL 中定义自定义算法会很容易),我正在考虑使用 HA-Proxy。

那么问题来了:

任何人都可以帮助我如何使用 HA-Proxy 定义自定义负载平衡功能吗?

我已经研究了很多,但找不到任何我们可以使用的此类文档。那么,如果 HA-Proxy 不可行,您能否向我推荐一些其他反向代理服务,它也可以用作负载均衡器,从而满足上述两个条件? (SSL 终止和定义自定义负载平衡的能力)。

编辑:

这个问题接续了我之前的一个问题。 Varnish to be used for https

最佳答案

我不确定您的目标是什么,但我建议不要完全基于 HTTP 请求主体进行自定义路由。这将表现得很差,并且可能超过您试图实现的任何好处。

任何必须在负载均衡器上解析超出典型 HTTP header 的值都会减慢速度。如果可以避免,Cookie 本身通常不是一个好主意。

如果您可以控制路径/路由值,这可能比为特定值解析每个 POST 更好。


你可能可以通过 NGINX 和 lua 脚本(Kong 平台基于它们)实现你想要的东西,但我不能说这对你来说有多难......

https://github.com/openresty/lua-nginx-module#readme

这里有一篇文章,有一个具体的例子,根据lua输入设置不同的upstream。

http://sosedoff.com/2012/06/11/dynamic-nginx-upstreams-with-lua-and-redis.html

server {
...BASE CONFIG HERE...

port_in_redirect off;

location /somepath {
lua_need_request_body on;

set $upstream "default.server.hostname";

rewrite_by_lua '
ngx.req.read_body() -- explicitly read the req body
local data = ngx.req.get_body_data()
if data then
-- use data: see
-- https://github.com/openresty/lua-nginx-module#ngxreqget_body_data
ngx.var.upstream = some_deterministic_value
end
'

...OTHER PARAMS...
proxy_pass http://$upstream
}
}

关于ssl - 定义自定义负载均衡算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34070100/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com