NFgixサーバの負荷バランスポリシー(6種類)


一、Ngixの負荷バランスについて
サーバクラスタにおいて、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倍である。
    注意:
  • 重みが高いほど、処理が必要な要求が多く割り当てられる。
  • このポリシーは、leastuconnとipuhashを組み合わせて使用することができます。
  • このポリシーは、サーバのハードウェア構成の違いが大きい場合に適しています。
    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
        }
    
    注意:
  • は、nginxバージョン1.3.1より前に、ipuhashに重みを使用することができません。
  • ipuhashはbackupと同時に使用できません。
  • このポリシーはsessionなどの状態サービスに適しています。
  • サーバがある場合は、手動でダウンしなければなりません。
  • 4、leastuconn
    要求を接続数の少ないバックエンドサーバに転送します。ポーリングアルゴリズムは要求を各バックエンドに平均的に転送し、それらの負荷をほぼ同じにします。しかし、いくつかの要求が長くかかっているため、バックエンドの負荷が高くなります。この場合、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
    }
    
    注意:
  • この負荷バランスポリシーは、処理時間が短いとサーバがオーバーロードすることを要求するのに適しています。
  • 5、第三者戦略
    第三者の負荷バランスポリシーの実現には第三者プラグインのインストールが必要です。
    ①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 sh
    urlにアクセスした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つの負荷均衡戦略の実施形態であり、ポーリングとポーリングの重み以外は、それぞれのアルゴリズムによって達成されたものであり、実際の運用においては、異なるシーンに応じて選択的に運用する必要があり、多くのポリシーが実用的なニーズを達成するために使用されている。