基于http请求数据的特定服务器的HAProxy反向代理

时间:2017-11-25 04:32:40

标签: haproxy

我们希望在Kubernetes环境中使用HAProxy,根据http post请求中正文的内容将http请求代理到特定的pod。正文包含一个json对象{customer:name},我们要将其路由到内部服务http://name-service.local

我们有大约50,000个pod,每个pod都有一个独特的服务(IP),新的pod随时动态创建和销毁。

基本上我想动态选择代理请求的位置,方法是从http请求中获取一段数据(可以是任何值),使用该数据解析dns名称,然后将请求转发给结果服务。

我能够使用下面显示的配置在nginx中使用cookie实现类似的功能。我想知道是否可以在HAProxy中复制它,而无需在配置文件中指定所有50,000个后端服务器?

示例Nginix配置:

server {
 listen 80;
 resolver 10.21.9.15;
 location / {
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $remote_addr;
      proxy_set_header Host $host;
      set $dbname $cookie_dbname;
      set $upstream_server $dbname-service.default.svc.cluster.local;
      proxy_pass http://$upstream_server$request_uri;
 }

0 个答案:

没有答案