2017-05-23 11 views
0

ロードバランサ(Nginxなど)はありませんが、IPベースのマシンにルーティングしたいとします。 IPは設定時には分かりません。たとえば、マシンm1とm2の前にロードバランサがあります。 IP10からの要求はm1にルーティングされ、IP10からのすべての後続の要求もm1にルーティングされます。別の要求はIP11から来て、それはm2にルーティングされ、IP11からのすべての後続要求もm2にルーティングされます。リバースプロキシ - IPベースの同じマシンへのルーティング

これは可能でしょうか?

答えて

1

あなたの説明から、私は、特定のIPからの最初の要求が、後続のすべての要求が同じ経路をたどる限り、どこにルーティングされるかに関する特定の要件はないと理解します。

その場合は、あなたが実行するアクションは、セッション粘りまたは永続セッションと呼ばれるロードバランシング方式です。 nginxので

次の構成とすることを達成することができます:ここで

http { 
    upstream mybackend { 
     ip_hash; 
     server m1.ltd; 
     server m2.ltd; 
    } 

    server { 
     listen 80; 

     location/{ 
      proxy_pass http://mybackend; 
     } 
    } 
} 

が特定nginx docsへのリンクです。

+0

ありがとうございます!サーバーあたりのクライアント数を制限することも可能ですか?したがって、たとえば、3台のサーバーがあり、16番目のIPがロードバランサによって認識されたときに5つのクライアントIPが許可されている場合、そのIPに失敗しますか?これはまた、私が想定しているタイムアウト後にクライアントIPを "期限切れにする"ことを要求します。 – Johnny

+1

あなたが記述する機能は、[nginx +](https://www.nginx.com/resources/admin-guide/load-balancer/#maxconns)(商用)の一部です。通常、バックエンドが処理できるリクエストまたは接続の数を知り、失敗しないように適切にサイズを変更することで、同様の機能を実現できます。また、リソースが異なるサーバーがある場合は、weightメソッドを使用できます。 – zochamx

関連する問題