ロードバランシングは、サービス側の開発においてより重要な特徴と見なさ。nginxのは、正規のWebサーバーとして、それはまた、大規模なバックエンドのリバースプロキシのために使用されるために添加した後、nginxの非同期フレームは同時要求の多くを扱うことができ、これらの同時要求は、ライブ舞台裏のサーバーを保持するために配布することができます複雑な計算を行うために(バックエンドサーバは、後でバックエンドをいう)、及び応答を処理し、そして場合トラフィックが増加する便利拡張バックエンドサーバであってもよいです。
これは、ビジネスが成長し、ユーザーの大きさとして、1つのサーバのみ高い同時実行性を肩に応答することができない、意味、ので、より多くのサーバーが圧力を共有するために協力し、メディアに圧力を軽減する必要が全能nginxのです。
まず、8000や8001などの別のポート、上の2つのジャンゴサービスからWSGI(nginxのサービスを開始しません)
そして、変数バインディングに設定nginxのウェブサイト、オリジナルuwsgi_passコメントを修正
サーバー{ 聞く 8000 ; サーバー名はlocalhost。 access_log /ルート/ myweb_access.log。 error_logに /ルート/ myweb_error.log。 75Mをclient_max_body_size。 位置 / { uwsgi_paramsを含みます。MyTestにuwsgi_pass; #127.0.0.1:8001 uwsgi_pass。 uwsgi_param UWSGI_SCRIPT video_back.wsgi。 uwsgi_param UWSGI_CHDIR /ルート/ video_back。 } 場所 / 静的{ 別名 /ルート/ video_back / 静的。 } 位置 / アップロード{ 別名 /ルート/ video_back / アップロード。 } error_page 500 502 503 504 / 50x.htmlと、 位置 = / 50x.html { ルート を/ usr / share / nginxの/ HTML。 } } サーバー{ 聞く 80 。 サーバー名はlocalhost。 access_log /ルート/ video_vue_access.log。 error_logに /ルート/ video_vue_error.log。 75Mをclient_max_body_size。 位置 / { #uwsgi_paramsが含まれます。 #127.0.0.1:8000 uwsgi_pass。 #uwsgi_passのMyTest。 ルート/ルート/ video_vue。 インデックスのindex.html; try_files $ URI $ uriの / / index.htmlを。 } 場所 / 静的{ 別名 /ルート/ video_vue / 静的。 } のerror_log /ルート/ video_vue / error.logファイルエラー。 }
そして、メインコンフィギュレーション・ファイルのvimの/etc/nginx/nginx.confを変更する構成で負荷分散の設定を追加します。http
ユーザーroot; worker_processes 1 ; error_logに は/ var / log / nginxの/ error.logに警告します。 PID は/ var /実行/ nginx.pid。 イベント{ worker_connections 1024 。 } HTTP { 含む の/ etc / nginxの/ のmime.typesと、 default_typeアプリケーション / octet- ストリーム。 LOG_FORMATメイン ' $ REMOTE_ADDR - $ REMOTE_USER [$ time_local] "$依頼" ' ' $地位$ body_bytes_sent "$ HTTP_REFERER" ' ' "$ HTTP_USER_AGENT" "$ HTTP_X_FORWARDED_FOR" ' ; access_logの は/ var / log / nginxの/ のaccess.log主; のsendfile ON; #のON TCP_NOPUSH; keepalive_timeout 65 ; #GZIPオン; ザは、 /etc/nginx/conf.d/* の.confを、 上流のMyTest { サーバー 39.106.172.65:8000 。= 3重量; #のクラスタサーバ負荷分散 サーバに39.97.117.229:8001重量を7 =。; } }
その後、サービスを再起動することができます。
nginxのを再起動しsystemctl 。サービス
:一般的に使用される負荷バランシング戦略は以下の通りであることに留意されたい 1 、ポーリング(デフォルト) バックエンドサーバがダウンしている場合、自動的に除去することができ、個々に異なる時間順バックエンドサーバーに割り当てられた各要求。 {backserver上流 サーバー 192.168.0.14 、 サーバー 192.168.0.15 ; } 2 、重量重量 ポーリングケースムラバックエンドサーバのパフォーマンスのための重量比は、アクセスに比例した確率。 {backserver上流 サーバー 192.168.0.14重量= 3。; サーバ。192.168.0.15重量= 7 ; } 3。、ip_hashは(IPバインディング) ユーザがサーバにログインしている場合、上述した実施の形態での問題は、負荷分散システムでは、と言うことであるましたユーザが第2の時間を要求したとき、我々は、負荷分散システムであるため、その後、すべての要求は、その場合、サーバは一人のユーザーがログオンしてから別のサーバーに移転した、クラスタ内のサーバの1つに再配置されますログイン情報は、これは明らかに不適切である、失われます。 我々は、顧客が、サーバーを訪問したユーザーが再びアクセスしたときに、要求が自動的にサーバを見つけるために、ハッシュアルゴリズムを介して行われている場合、この問題を解決するための手順をip_hash使用することができます。 各訪問者は、一定のバックエンドサーバーにアクセスするには、セッションの問題を解決できるように、各要求は、訪問のIPハッシュ結果に従って割り当てられています。 {backserver上流 ip_hash、 サーバ 192.168.0.14:88 、 サーバ 192.168.0.15:80 ; } 。4 、フェア(サードパーティのプラグ) バックエンドサーバ、短い応答時間優先割り当てに割り当て要求の応答時間に応じ。 {backserver上流 サーバーSERVER1、 サーバーのサーバー2; フェア; } 。5 、url_hash(サードパーティのプラグ) それぞれが同じバックエンドサーバに向けられたURLにハッシュアクセスURL割り当て要求の結果に応じては、バックエンドサーバが有効である場合、キャッシュ。 {backserver上流 :サーバーsquid1 3128 ; サーバーsquid2: 3128 ; ハッシュ$ REQUEST_URI; hash_method CRC32; }