nginxの+ SpringBootのロードバランシング

序文

前回の記事で紹介しnginxのインストール、この記事では、nginxのは、ロードバランシングを実現する方法であるに焦点を当てています。

はじめにロードバランシング

入門

まず、単純に分け均衡分類、ロード達成するためにバランスをとるnginxの負荷を導入する前に、ハードウェアの負荷分散とソフトウェアをロードバランシングを、ハードウェア負荷分散デバイスを使用することで、商業のデバイス商工会議所は、ソフトウェアを専門とハードウェアの組み合わせは、完全な成熟を提供しますこのようF5、データの安定性やセキュリティなどのソリューションは、非常に信頼性が高いが、コストは、ソフトウェアが関係していると比べて、より高価になるだろう、とソフトウェア・ロード・バランシングnginxのようなソフトウェア・ベースのメッセージング・キュー分布を達成するためにメカニズム。

簡単に言えば、いわゆるロード・バランシングは、要求の多くをそらすハンドルに別のサーバーに割り当てることです。9つの要請を受けた場合たとえば、私は3台のサーバ、すなわちA、B、Cを持って、その後、ポーリングポリシーを使用して、均衡nginxの負荷を使用し、この時点で、それが均等にこれらの9つの要求A、Bを配布します、CFサーバ、各サーバプロセス3つの要求で、私たちは、個々のサーバのクラスタの圧力を減らすために、複数のマシンの特性を使用することができます。

図nginxの負荷実施例のバランスをとります:

ここに画像を挿入説明

ロードバランシング戦略

nginxのオープンソースは4つのロードバランシング方式をサポートし、nginxのプラスは、2つのメソッドを追加しました。

1.Roundロビン:ポーリングのためにすべての要求、デフォルトの配布を要求を送信します。

nginx.confの構成:

upstream xuwujing {
   server www.panchengming.com;
   server www.panchengming2.com;
}

注:上記のドメイン名は、IPに置き換えることができます。

2.Least接続:サーバへのアクティブな接続の最小数は、同じサーバーの重み考慮すべき要求を送信します。

nginx.confの構成:

upstream xuwujing {
    least_conn;
    server www.panchengming.com;
    server www.panchengming2.com;
}

3.IPハッシュ:クライアントのIPアドレスによって決定され、サーバーにリクエストを送信します。この場合には、IPv4アドレスまたはIPv6アドレスの最初の3つのバイトは、全体のハッシュ値を計算します。このメソッドは、サーバーが利用できない場合を除き、同じアドレス要求が同じサーバーから到着が保証されます。

upstream xuwujing {
     ip_hash;
     server www.panchengming.com;
     server www.panchengming2.com;
}

4.Genericハッシュ:サーバーに要求を送信し、そのテキスト文字列、変数、またはそれらの組み合わせとすることができるユーザ定義キーによって決定されます。

    upstream xuwujing {
        hash $request_uri consistent;
        server www.panchengming.com;
        server www.panchengming2.com;
    }

5.Least時間(nginxのプラスのみ) - 最小平均遅延は以下のパラメータを含む命令をleast_timeに応じて算出される各要求について、nginxのプラスサーバーは、最低の最小平均遅延とのアクティブな接続の数を有するように選択されました。

  • ヘッダ:サーバから初めてのバイトを受信します。
  • last_byte:サーバーから完全な応答受信時間。
  • last_byte機内:サーバーから完全な応答受信時間。

    上流xuwujing {
    least_timeヘッダ。
    サーバーwww.panchengming.com;
    サーバーwww.panchengming2.com;
    }

6.Random:各要求は、ランダムに選択されたサーバに渡されます。二つのパラメータを指定した場合、第一、nginxのサーバーの重みに基づいて、2つのランダムに選択されたサーバは、次に、指定された選択のいずれかを使用します。

  • アクティブな接続の最小数:least_conn
  • least_time =ヘッダ(nginxのプラス):サーバーの応答ヘッダから最小平均時間($ upstream_header_time)を受信します。
  • least_time = last_byte(nginxのプラス):サーバー($ upstream_response_time)からの完全な応答を受信するための最小平均時間。

    上流xuwujing {
    ランダム2 least_time = last_byte。
    サーバーwww.panchengming.com;
    サーバーwww.panchengming2.com;
    }

nginxの+ SpringBootのロードバランシング

環境の準備

  • より多くのJDK1.8のバージョンを依存しています。
  • 依存nginxの環境

ここで私のspringboot前にプロジェクトを持つプロジェクトで、SpringBootプロジェクト住所https://github.com/xuwujing/springBoot-study/tree/master/springboot-thymeleaf

まず我々はプログラムをダウンロードし、次のように入力しますmvn clean packageプロジェクトは、その後のjarファイルとしてパッケージ化され、application.propertiesそしてプロジェクトフォルダにこのjarファイル、その後、(ここではわかりやすくするために複製されたフォルダをコピー、複製、実際の変更ポートも再起動にOKですしません)、変更するフォルダをコピーしapplication.properties、そのような8086のように、ポートを。

nginxの設定

私たちは、nginxの設定ファイルnginx.confを見つけ、この構成nginxの/ confに/ nginx.confディレクトリ、そして私たちは、次の設定を追加し、設定を変更する必要があります。

upstream pancm{
   server 127.0.0.1:8085;
   server 127.0.0.1:8086;
}
  • 上流pancm:ライン上にランダムに名前を定義します。
  • サーバー+ IP:ポートまたはドメイン名。

あなたはラウンドロビン方式を使用したくない場合は、他に置き換えることができます。

その後、サーバーの追加/変更は次のとおりです。

 server {
        listen       80;
        server_name  127.0.0.1;


        location / {
            root   html;
            proxy_pass http://pancm;
            proxy_connect_timeout 3s;
            proxy_read_timeout 5s;
            proxy_send_timeout 3s;  
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

設定手順:

  • サーバー:仮想ホスト名は、httpは、複数のサーバを設定することができます。
  • 聞く:nginxのデフォルトのポートを、
  • サーバー名:住所nginxのサービス、あなたはより多くのスペースで区切られ、ドメイン名を使用することができます。
  • proxy_pass:プロキシパス、上流側の負荷分散を実現するための一般的な構成の名前に続いては、IP直接ジャンプするように構成することができます。

完全な構成nginx.conf:

events {
    worker_connections  1024;
}

error_log nginx-error.log info;
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

      upstream pancm{
       server 127.0.0.1:8085;
       server 127.0.0.1:8086;
    }
    
    server {
        listen       80;
        server_name  127.0.0.1;


        location / {
            root   html;
            proxy_pass http://pancm;
            proxy_connect_timeout 3s;
            proxy_read_timeout 5s;
            proxy_send_timeout 3s;  
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

ロード・バランシング・テスト

nginxの設定を完了した後、私たちはnginxのを開始します。
Linuxの入力/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.confすでに使用して開始した場合、/usr/local/nginx/sbin/nginx -s reloadコマンドの熱負荷の設定ファイルを、Windowsが単にnginxのディレクトリの下クリックnginx.exeまたはcmd実行中のstart nginxブートがまだ使用できる場合は、スタートnginx -s reload熱負荷を。

nginxのが完了し、開始した後、私たちはダウンロードしてspringboot変更にポートプロジェクトをコピー開始を回して、次のように入力しますjava -jar springboot-jsp-thymeleaf.jar開始。

すべて正常に起動した後、我々はサービスを入力するには、ipブラウザにアクセスすることができます。

図の例:
ここに画像を挿入説明

注:私はWindowsのシステムを使用しています実際のLinuxは同じで、テストを行うためにここにあります。

その後、我々は動作し、コンソールログを表示します!

ここに画像を挿入説明

上記の例から、我々は、リフレッシュ要求インターフェース4回の図を持って、最終的に均等間の2つのサービスは、試験の結果から、我々は、負荷分散を実現する、行ってきました。

ここで私は、デフォルトのポートnginxの負荷分散は、一般的に問題ありません使用し、時間を学習し、試験中に使用nginxの注意事項について話しているが、我々は、プロジェクトで使用する場合、特にログイン画面およびポートではありませんログイン画面があるだろう80は、デバッグをジャンプすることはできません、そこになりますネット:: ERR_NAME_NOT_RESOLVED、このような間違いnginxのは、デフォルトのポート80であるので、それが表示されますので、その理由は、デフォルトでは、また、ジャンプですポートこの構成では、ポートをし、それを維持するのポートを聞く:あなたは場所にproxy_set_headerホスト$ホストを追加する必要がある場合。

他の

参照

https://docs.nginx.com/nginx/admin-guide/load-balancer/http-load-balancer/
http://nginx.org/en/

関連記事

NginxはLinuxとWindowsのインストールチュートリアルhttps://www.cnblogs.com/xuwujing/p/11899890.html
SpringBoot + SpringCloudロード・バランシングhttps://www.cnblogs.com/xuwujing/p/10273989.html

推奨音楽

オリジナルは、あなたが、良い感じのポイントを賞賛したいかをお勧めします場合は、容易ではありません!あなたのサポートが私の文章の最大駆動力です!
著作権:
著者:虚無の領土の
ブログパーク出典:http://www.cnblogs.com/xuwujing
CSDN出典:http://blog.csdn.net/qazwsxpcm 
ナゲッツ出典:https://juejin.im/user/ 5ae45d5bf265da0b8a6761e4   
個人のブログのソース:http://www.panchengming.com

おすすめ

転載: www.cnblogs.com/xuwujing/p/11953697.html