(1)実験環境 youxi1 192.168.5.101 ロードバランサー youxi2 192.168.5.102 ホスト1 youxi3 192.168.5.103 ホスト2 (2)Nginxの負荷分散戦略 Nginx ロード バランシングは、アップストリーム テンプレートで定義されたバックエンド サーバー リストからサーバーを選択して、ユーザー リクエストを受信するために使用されます。基本的なアップストリーム モジュールは次のとおりです。 アップストリーム [サーバーグループ名]{ server [IPアドレス]:[ポート番号]; server [IPアドレス]:[ポート番号]; .... } アップストリーム モジュールを構成した後、次の形式でサーバー リストへのアクセス リバース プロキシを指定する必要があります。 場所 ~ .*$ { インデックス index.jsp index.html; proxy_pass http://[サーバーグループ名]; } 拡張機能: nginx ロケーション構成ルール: https://www.jb51.net/article/182472.htm これにより、最も基本的な負荷分散は完了しますが、実際のニーズを満たすことはできません。現在、Nginx のアップストリーム モジュールは、ポーリング (デフォルトの方法)、重み付け (重み付け方法)、ip_hash (IP 割り当て方法に基づく)、least_conn (最小接続方法)、fair (サードパーティが提供する応答時間方法)、url_hash (サードパーティによって渡された URL 割り当て方法に基づく) の 6 つの負荷分散戦略 (アルゴリズム) をサポートしています。 1) 投票 最も基本的な構成方法は、アップストリーム モジュールのデフォルトの負荷分散戦略です。各リクエストは時系列順に異なるバックエンド サーバーに均等に分散されます。パラメータは次のとおりです。
注: 1. ダウンとマークされたサーバーは自動的に削除されます。2. ポーリングがデフォルトです。3. この戦略は、ステートレスサーバー構成と短いフラットブロックを持つサービスに適しています。 2) 重量 加重方式では、ポーリング戦略に基づいてポーリングの確率を指定します。投票に基づいて重みパラメータが追加されることも考えられます。このパラメータは投票の確率を指定し、その値は数値です。アップストリーム モジュール構成テンプレートは次のとおりです。 アップストリーム [サーバーグループ名]{ server [IPアドレス]:[ポート番号] weight=2; server [IPアドレス]:[ポート番号]; .... } この例では、重みパラメータのないサーバーのデフォルト値は 1 です。重み値はアクセス率に比例します。すべての重み値の合計がサイクル単位となり、サーバー自身の重み値はサイクル単位内のポーリング回数となります。 注: 1. 重みが高いほど、割り当てられるリクエストの数が多くなります。2. この戦略は、least_conn 戦略および iphash 戦略と組み合わせて使用できます。3. この戦略は、サーバーのハードウェア構成に大きな違いがある場合に適しています。 3) ip_ハッシュ IP 割り当て方法に応じて、ロード バランサーはクライアント IP に基づいて割り当てられるように指定されます。この方法により、同じクライアント要求が常に同じサーバーに送信され、セッションが確保されます。この方法では、各訪問者が固定のバックエンド サーバーにアクセスするため、セッションがサーバーを越えられないという問題を解決できます。アップストリーム モジュール構成テンプレートは次のとおりです。 アップストリーム [サーバーグループ名]{ ip_ハッシュ; server [IPアドレス]:[ポート番号] weight=2; server [IPアドレス]:[ポート番号]; .... } 注意: 1. nginx 1.3.1 より前のバージョンでは、ip_hash の重みを使用できません。2. ip_hash はバックアップと同時に使用できません。3. この戦略は、セッションなどのステートフル サービス プログラムに適しています。4. サーバーを削除する必要がある場合は、手動でシャットダウンする必要があります。 4) 最小接続 最小接続モードでは、接続数が最も少ないバックエンド サーバーにリクエストが送信されます。ポーリングは、各バックエンドにリクエストを均等に分散し、負荷がほぼ同じになるようにします。ただし、一部のリクエストは時間がかかり、リクエストが配置されているバックエンドに大きな負荷がかかります。この場合、least_conn はより優れた負荷分散効果を実現できます。アップストリーム モジュール構成テンプレートは次のとおりです。 アップストリーム [サーバーグループ名]{ 最小接続数; server [IPアドレス]:[ポート番号] weight=2; server [IPアドレス]:[ポート番号]; .... } 注: この戦略は、処理時間が異なるリクエストに異なる時間がかかる、サーバーが過負荷になっている状況に適しています。 5) 公平 応答時間方式: リクエストはサーバーの応答時間に応じて割り当てられ、応答時間が短いリクエストが優先されます。アップストリーム モジュール構成テンプレートは次のとおりです。 アップストリーム [サーバーグループ名]{ server [IPアドレス]:[ポート番号] weight=2; server [IPアドレス]:[ポート番号]; .... 公平; } 注意: サードパーティのプラグインをインストールする必要があります。 6) url_ハッシュ URL 分散方式は、アクセスされた URL のハッシュ結果に応じてリクエストを分散し、各 URL が同じバックエンド サーバーに送信されるようにします。キャッシュ ヒットと組み合わせて使用する必要があります。同じリソースに対する複数のリクエストが異なるサーバーに到着する可能性があり、その結果、不要な複数のダウンロード、低いキャッシュヒット率、およびリソース時間の浪費が発生します。 url_hash を使用すると、同じ URL (つまり、同じリソース要求) が同じサーバーに到達できます。リソースがキャッシュされると、要求を再度受信したときにキャッシュから読み取ることができます。アップストリーム モジュール構成テンプレートは次のとおりです。 アップストリーム [サーバーグループ名]{ $request_uri をハッシュします。 server [IPアドレス]:[ポート番号] weight=2; server [IPアドレス]:[ポート番号]; .... } 注意: 1. サードパーティのプラグインをインストールする必要があります。2. uri は小文字の L ではなく i です。 (3)実験 1) ロードバランサーyouxi1にnginxをコンパイルしてインストールする nginxの依存関係をインストールする [root@youxi1 ~]# yum -y インストール gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel pcre pcre-devel nginxソースパッケージnginx-1.14.1.tar.gzをアップロードし、解凍してインストールします。 [root@youxi1 ~]# tar xf nginx-1.14.1.tar.gz -C /usr/local/src/ [root@youxi1 ~]# cd /usr/local/src/nginx-1.14.1/ [root@youxi1 nginx-1.14.1]# ./configure --prefix=/usr/local/nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module [root@youxi1 nginx-1.14.1]# make && make install [root@youxi1 nginx-1.14.1]# echo $? 0 パラメータの説明: --with-http_dav_module は、ngx_http_dav_module サポートを有効にします (PUT、DELETE、MKCOL: コレクションの作成、COPY および MOVE メソッドを追加)。デフォルトでは無効になっており、コンパイル時に組み込む必要があります。 --with-http_stub_status_module、ngx_http_stub_status_module サポートを有効にします (前回の起動以降の nginx の動作ステータスを取得します)。 --with-http_addition_module、ngx_http_addition_module サポートを有効にします (出力フィルターとして、不完全なバッファリングと部分的な応答要求をサポートします)。 --with-http_sub_module、ngx_http_sub_module サポートを有効にします (nginx 応答内のテキストを他のテキストに置き換えることができます)。 --with-http_flv_module、ngx_http_flv_module サポートを有効にします (時間ベースのオフセット ファイルを使用してメモリへのシークを提供します)。 --with-http_mp4_module は、mp4 ファイルのサポートを有効にします (メモリ内の時間ベースのオフセットを使用してファイルへのシークを提供します)。 nginx ユーザーを生成する [root@youxi1 nginx-1.14.1]# useradd -M -s /sbin/nologin nginx 起動して自動起動を追加する [root@youxi1 nginx-1.14.1]# /usr/local/nginx/sbin/nginx [root@youxi1 nginx-1.14.1]# echo /usr/local/nginx/sbin/nginx >> /etc/rc.local [root@youxi1 nginx-1.14.1]# chmod +x /etc/rc.d/rc.local ファイアウォールがオンになっている場合は、ポート番号を忘れずに追加してください [root@youxi1 nginx-1.14.1]# ファイアウォール-cmd --permanent --zone=public --add-port=80/tcp && ファイアウォール-cmd --reload 成功 成功 インターフェースをチェックして、nginxが正常にインストールされているかどうかを確認します。 テストが完了したら、nginx設定ファイルを変更し、最後にnginxを再起動します。 [root@youxi1 nginx-1.14.1]# cp /usr/local/nginx/conf/nginx.conf{,.bak} [root@youxi1 nginx-1.14.1]# vim /usr/local/nginx/conf/nginx.conf user nginx; // 行 2 location / { // 行 43 以降 root html; インデックス index.html index.htm; $request_uri ~* \.html$ の場合{ proxy_pass http://htmlservers; } $request_uri ~* \.php$ の場合{ proxy_pass http://phpservers; } proxy_pass http://picservers; } アップストリーム htmlservers { //http モジュールの下に、server モジュールと同じレベルで server 192.168.5.102:80 を追加します。 サーバー 192.168.5.103:80; } アップストリーム phpservers{ サーバー 192.168.5.102:80; サーバー 192.168.5.103:80; } アップストリームpicservers { サーバー 192.168.5.102:80; サーバー 192.168.5.103:80; } [root@youxi1 nginx-1.14.1]# /usr/local/nginx/sbin/nginx -s リロード 2) youxi2とyouxi3にウェブページプログラムを展開する [root@youxi2 ~]# yum -y httpdをインストールします [root@youxi2 ~]# echo youxi2 > /var/www/html/index.html [root@youxi2 ~]# echo youxi2.php > /var/www/html/index.php [root@youxi2 ~]# echo youxi2.other > /var/www/html/index.jsp [root@youxi2 ~]# systemctl で httpd.service を起動します [root@youxi3 ~]# yum -y httpdをインストールします [root@youxi3 ~]# echo youxi3 > /var/www/html/index.html [root@youxi3 ~]# echo youxi3.php > /var/www/html/index.php [root@youxi3 ~]# echo youxi3.other > /var/www/html/index.jsp [root@youxi3 ~]# systemctl で httpd.service を起動します ファイアウォールがオンになっている場合は、ポート番号を忘れずに追加してください。 [root@youxi2 ~]# ファイアウォール-cmd --permanent --zone=public --add-port=80/tcp && ファイアウォール-cmd --reload 成功 成功 [root@youxi3 ~]# ファイアウォール-cmd --permanent --zone=public --add-port=80/tcp && ファイアウォール-cmd --reload 成功 成功 3) テスト まずHTMLページをテストする 次にPHPページをテストします 最後に他のページをテストする 参照: https://www.cnblogs.com/1214804270hacker/p/9325150.html Nginx を使用した負荷分散クラスターの構築方法についてはこれで終わりです。Nginx 負荷分散クラスターの詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
以下の質問はすべて InnoDB ストレージ エンジンに基づいています。 1. 最も大きな ID を...
ウェブサーバー1. Webサーバーは、wev、cgi、asp機能を無効にするなど、不要なIISコンポ...
1. グローバルオブジェクトすべてのモジュールは呼び出すことができます1) global: ブラウザ...
目次1. データベース設計2. フロントエンドページ3. 完全なデモフロントエンド開発では、カスケー...
ライフサイクル分類vue の各コンポーネントは独立しており、各コンポーネントには独自のライフサイクル...
目次序文OpenJDKの確認とアンインストールダウンロードした圧縮パッケージを使用してJDKをインス...
目次概要インデックスデータ構造バイナリツリー赤黒木BツリーB+ツリーハッシュ索引InnoDB インデ...
序文学習中に Zookeeper をインストールする必要があったため、仮想マシンに常に問題が発生した...
動的な列を実現するための Angularjs ループ オブジェクト プロパティ利点: オブジェクトを...
パート1: 基礎1. :active や :hover などの疑似クラスとは異なり、これらはすべて疑...
今日は、最新の人気スクリプト 50 個を含むソース コードを共有します。現在、Mine Guard ...
この記事では、MySQL 5.7.21のインストールに関する注意事項をまとめ、皆さんと共有します。 ...
ワーカープロセスは、起動されると、まず自身の動作に必要な環境を初期化し、次に実行する必要があるイベン...
まず、フォントアイコンとは何でしょうか?表面的にはアイコンですが、実際はテキストです。テキストの設定...
目次Vue でのスロットの使用: slotスコープ付きスロット: テンプレートタグで囲む要約するVu...