web-dev-qa-db-ja.com

トラフィックまたはリクエストの割合に基づいてHTTPを負荷分散しますか?

アプリケーションのv1を1つのプールに、バージョンv1.1を別のプールに配置してから、プール2に向かうトラフィックをゆっくりと増やし、プール1に減らしたいと考えています。

HA Proxy、Varnish、Nginxなどでこれを行う具体的な例を誰かに示すことができますか?

3
markba

分割クライアント モジュールは、このために特別に設計されています。

# 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を実行します。

4
kolbyjack