根据流量或请求的百分比来平衡 HTTP 负载?

根据流量或请求的百分比来平衡 HTTP 负载?

我希望将应用程序的 v1 版本放在一个池中,将 v1.1 版本放在另一个池中,然后缓慢增加流向二号池的流量,并将其减少到一号池。

有人可以给出一些使用 HA Proxy、Varnish、Nginx 或其他东西执行此操作的具体示例吗?

答案1

分割客户端模块是专门为此设计的:

# I like starting my upstream names with _
# so they're not confused with hostnames
upstream _old_upstream {
  server 127.0.0.1:1234;
}

upstream _new_upstream {
  server 127.0.0.1:4321;
}

# Make sure the values here match the names of the upstream blocks above
split_clients $remote_addr $split_upstream {
   10% _new_upstream;
   -   _old_upstream;
}

server {
  location / {
    # EDIT: I forgot, when using variables in a proxy_pass, you have to
    # specify the entire request
    proxy_pass http://$split_upstream$request_uri;
  }
}

然后,当您想将更多流量转移到新服务器时,只需更改百分比并运行nginx -s reload

答案2

根据我的测试,需要定义百分比以使两个服务器正常工作,否则会出现错误。

相关内容