NFgixサーバの負荷バランスポリシー(6種類)
一、Ngixの負荷バランスについて
サーバクラスタにおいて、NFIxは、1つのプロキシサーバの役割(すなわち、逆プロキシ)となり、個々のサーバの圧力が大きすぎることを避けるために、ユーザからの要求を異なるサーバに転送する。詳細は私のもう一つのブログを見てください。
二、Nginx負荷バランス戦略
負荷バランスは、「ubstream」モジュールで定義されたバックエンドサーバリストからサーバを選択してユーザの要求を受け付けるために使用されます。一番基本的なubstreamモジュールはこのようです。モジュール内のserverはサーバーリストです。
ポーリング
標準モード
weight
重みの方式
ip_sh
ip割当方式による
least_コンサート
最小接続方式
fair(第三者)
応答時間方式
urlhash(第三者)
URL割り当て方式により
1、ポーリング
基本的な配置方法としては、上記の例はポーリング方式であり、アップストリームモジュールのデフォルトの負荷バランスのデフォルトポリシーであり、各要求は時間順に異なるバックエンドサーバに割り当てられます。
以下のパラメータがあります
failimeout
maxufailと組み合わせて使用します。
maxufail
failuutimeoutパラメータ設定の時間内に最大の失敗回数を設定します。この時間内にサーバーに対する要求がすべて失敗した場合、サーバーは停止したと見なされます。
failuutime
サーバーは停止時間が長いと思われます。デフォルトは10 sです。
backup
サーバはバックアップサーバとしてマークされています。ホストサーバが停止すると、要求はここに送信されます。
ダウンタウン
マークサーバが永久停止しました。
注意:ポーリング中にサーバーがダウンしたら自動的に削除されます。 デフォルトの構成はポーリングポリシーです。 このポリシーは、サーバ構成に相当し、無状態かつ迅速なサービス利用に適しています。
2、weight
ポーリングポリシーに基づいてポーリングの確率を指定します。例は以下の通りです。
注意: 重みが高いほど、処理が必要な要求が多く割り当てられる。 このポリシーは、leastuconnとipuhashを組み合わせて使用することができます。 このポリシーは、サーバのハードウェア構成の違いが大きい場合に適しています。
3、ip sh
ロードイコライザを指定して、クライアントIPベースの割り当て方式により、この方法は、同じクライアントの要求がsessionセッションを保証するために同じサーバに送信されていることを確認し、このように各ゲストは、エンドサーバに固定的にアクセスし、sessionがサーバをまたぐことができない問題を解決することができる。 は、nginxバージョン1.3.1より前に、ipuhashに重みを使用することができません。 ipuhashはbackupと同時に使用できません。 このポリシーはsessionなどの状態サービスに適しています。 サーバがある場合は、手動でダウンしなければなりません。 4、leastuconn
要求を接続数の少ないバックエンドサーバに転送します。ポーリングアルゴリズムは要求を各バックエンドに平均的に転送し、それらの負荷をほぼ同じにします。しかし、いくつかの要求が長くかかっているため、バックエンドの負荷が高くなります。この場合、leastuconnはより良い負荷バランス効果を達成することができます。この負荷バランスポリシーは、処理時間が短いとサーバがオーバーロードすることを要求するのに適しています。 5、第三者戦略
第三者の負荷バランスポリシーの実現には第三者プラグインのインストールが必要です。
①fair
サーバ側の応答時間に応じて要求を割り当て、応答時間が短い優先割り当て。
urlにアクセスしたhashの結果に応じて要求を割り当て、各urlを同一のバックエンドサーバに向けて、キャッシュに合わせて命中して使用します。同じリソースを何度も要求すると、異なるサーバに到達する可能性があります。不必要な複数回のダウンロードにつながり、キャッシュ命中率が高くなく、リソース時間の浪費につながります。urlhashを使って、同じurlを使用することができます。(つまり同じリソース要求である)は同じサーバに到達し、一旦リソースがキャッシュされたら、この要求を受信すれば、キャッシュから読み取ることができる。
以上は、6つの負荷均衡戦略の実施形態であり、ポーリングとポーリングの重み以外は、それぞれのアルゴリズムによって達成されたものであり、実際の運用においては、異なるシーンに応じて選択的に運用する必要があり、多くのポリシーが実用的なニーズを達成するために使用されている。
サーバクラスタにおいて、NFIxは、1つのプロキシサーバの役割(すなわち、逆プロキシ)となり、個々のサーバの圧力が大きすぎることを避けるために、ユーザからの要求を異なるサーバに転送する。詳細は私のもう一つのブログを見てください。
二、Nginx負荷バランス戦略
負荷バランスは、「ubstream」モジュールで定義されたバックエンドサーバリストからサーバを選択してユーザの要求を受け付けるために使用されます。一番基本的なubstreamモジュールはこのようです。モジュール内のserverはサーバーリストです。
#
upstream dynamic_zuoyu {
server localhost:8080; #tomcat 7.0
server localhost:8081; #tomcat 8.0
server localhost:8082; #tomcat 8.5
server localhost:8083; #tomcat 9.0
}
ubstreamモジュールの配置が完了したら、指定されたアクセスをサーバリストに逆プロキシさせます。 # tomcat
location ~ .*$ {
index index.jsp index.html;
proxy_pass http://dynamic_zuoyu;
}
負荷バランスポリシー:ポーリング
標準モード
weight
重みの方式
ip_sh
ip割当方式による
least_コンサート
最小接続方式
fair(第三者)
応答時間方式
urlhash(第三者)
URL割り当て方式により
1、ポーリング
基本的な配置方法としては、上記の例はポーリング方式であり、アップストリームモジュールのデフォルトの負荷バランスのデフォルトポリシーであり、各要求は時間順に異なるバックエンドサーバに割り当てられます。
以下のパラメータがあります
failimeout
maxufailと組み合わせて使用します。
maxufail
failuutimeoutパラメータ設定の時間内に最大の失敗回数を設定します。この時間内にサーバーに対する要求がすべて失敗した場合、サーバーは停止したと見なされます。
failuutime
サーバーは停止時間が長いと思われます。デフォルトは10 sです。
backup
サーバはバックアップサーバとしてマークされています。ホストサーバが停止すると、要求はここに送信されます。
ダウンタウン
マークサーバが永久停止しました。
注意:
2、weight
ポーリングポリシーに基づいてポーリングの確率を指定します。例は以下の通りです。
#
upstream dynamic_zuoyu {
server localhost:8080 weight=2; #tomcat 7.0
server localhost:8081; #tomcat 8.0
server localhost:8082 backup; #tomcat 8.5
server localhost:8083 max_fails=3 fail_timeout=20s; #tomcat 9.0
}
この例では、weightパラメータはポーリング確率を指定するために使用され、weightのデフォルト値は1であり、weightの値はアクセス比率に比例し、例えばTomcat 7.0がアクセスされる確率は他のサーバの2倍である。注意:
3、ip sh
ロードイコライザを指定して、クライアントIPベースの割り当て方式により、この方法は、同じクライアントの要求がsessionセッションを保証するために同じサーバに送信されていることを確認し、このように各ゲストは、エンドサーバに固定的にアクセスし、sessionがサーバをまたぐことができない問題を解決することができる。
#
upstream dynamic_zuoyu {
ip_hash; #
server localhost:8080 weight=2; #tomcat 7.0
server localhost:8081; #tomcat 8.0
server localhost:8082; #tomcat 8.5
server localhost:8083 max_fails=3 fail_timeout=20s; #tomcat 9.0
}
注意:要求を接続数の少ないバックエンドサーバに転送します。ポーリングアルゴリズムは要求を各バックエンドに平均的に転送し、それらの負荷をほぼ同じにします。しかし、いくつかの要求が長くかかっているため、バックエンドの負荷が高くなります。この場合、leastuconnはより良い負荷バランス効果を達成することができます。
#
upstream dynamic_zuoyu {
least_conn; #
server localhost:8080 weight=2; #tomcat 7.0
server localhost:8081; #tomcat 8.0
server localhost:8082 backup; #tomcat 8.5
server localhost:8083 max_fails=3 fail_timeout=20s; #tomcat 9.0
}
注意:第三者の負荷バランスポリシーの実現には第三者プラグインのインストールが必要です。
①fair
サーバ側の応答時間に応じて要求を割り当て、応答時間が短い優先割り当て。
#
upstream dynamic_zuoyu {
server localhost:8080; #tomcat 7.0
server localhost:8081; #tomcat 8.0
server localhost:8082; #tomcat 8.5
server localhost:8083; #tomcat 9.0
fair; #
}
②url shurlにアクセスしたhashの結果に応じて要求を割り当て、各urlを同一のバックエンドサーバに向けて、キャッシュに合わせて命中して使用します。同じリソースを何度も要求すると、異なるサーバに到達する可能性があります。不必要な複数回のダウンロードにつながり、キャッシュ命中率が高くなく、リソース時間の浪費につながります。urlhashを使って、同じurlを使用することができます。(つまり同じリソース要求である)は同じサーバに到達し、一旦リソースがキャッシュされたら、この要求を受信すれば、キャッシュから読み取ることができる。
#
upstream dynamic_zuoyu {
hash $request_uri; # url
server localhost:8080; #tomcat 7.0
server localhost:8081; #tomcat 8.0
server localhost:8082; #tomcat 8.5
server localhost:8083; #tomcat 9.0
}
三、まとめ以上は、6つの負荷均衡戦略の実施形態であり、ポーリングとポーリングの重み以外は、それぞれのアルゴリズムによって達成されたものであり、実際の運用においては、異なるシーンに応じて選択的に運用する必要があり、多くのポリシーが実用的なニーズを達成するために使用されている。