(6)のnginxのリバースプロキシの設定と最適化のチューリング・カレッジロード-VIPのJavaアーキテクチャ

  ブックは、nginxの私たちは、簡単な設定を学習し、言って戻って接続されています。まあ、私は(私は本当に理解していない、高度な設定について話をする勇気がなかった)、今日は私たちのngxinの最適配分のいくつかを説明します。私は最初の利点とnginxのフォワードプロキシを見てください。

nginxの給付金

1は、公式テストnginxの50,000の同時接続をサポートすることができ、実際の生産環境は2〜40,000の同時接続をサポートできるような高い同時接続であってもよいです。前述のブログで彼のNIOモードは、ここでそれらを繰り返すありません。 

図2に示すように、より少ないメモリ消費、nginxの+ PHP(FastCGIの)サーバ30,000同時接続で、開口部10 nginxのプロセスは、150メガバイトのメモリを消費する、15メガバイト* 10 = 150メガバイト、開口64 PHP-CGIプロセス1280のメモリを消費する、20メガバイト* 64 = 1280メガバイト、プラスシステム自体、メモリの2ギガバイト未満の総消費量のメモリ消費量。

サーバのメモリが比較的小さい場合は、できる唯一のオープン25 PHP-CGIプロセス、メモリPHP-CGIの総量は500メガバイトを消費するように。

3、低コスト、オープンソースソフトウェアは、すべてのコストを必要としません。

4、設定ファイルは、管理者が理解できるユーザーフレンドリーな、でも、非専用システムなどのネットワークとプログラムは非常に簡単です。

5は、書き換え書き換えをサポートし、異なるURLのドメイン名、HTTPリクエストに応じて異なるバックエンド・サーバ・グループに割り当てられますすることができます。

6、内蔵のヘルスチェック機能NginxProxy Webサーバのバックエンドがダウンしている場合など、フロントエンドへのアクセスには影響しません。(これは、詳細な説明および構成で後述します)

図7は、帯域幅、GZIP圧縮のためのサポートを保存するには、ローカルブラウザキャッシュヘッダーヘッドを追加することができます。

8、高い安定性、リバースプロキシは、ダウンタイムの確率は最小です。

9、でも数ヶ月は再起動する必要はありません実行し、その自動特に脆弱、ほぼ7日* 24時間ノンストップ運転、nginxのは熱い展開をサポートし、ホットデプロイをサポートし、また、中断のないサービスをすることができソフトウェアのバージョンアップの場合には

利点を有するのは、フォワードプロキシとリバースプロキシの違いについて話しましょう。

 実際には、このようなものは、説明するのは非常に難しいですが、いくつかの点に注意を払う必要があり、nginxの構成は同じです。そして、リバースプロキシでのnginxと先のサーバーが一緒ではありません言うことはありません。

我々仲買人は、たとえば、違いを作ります。

私たちは、肉(クライアント)を購入する市場になるだろう。食肉処理工場(実サーバ)があります。私たちは、それが食肉加工購入から肉ディーラー肉だ十分認識して市場を知っています。(肉トレーダーはエージェントです)。

私たちは、密売肉の手から肉を買いました。この文は(これは、あなたをでたらめされていないとにかく、エージェントがこの下にある)を無視することができます。主な違いは、トレーダーが知っている肉にのみ食肉加工肉は、本当にフォワードプロキシである彼の肉を、買って誰かわからないということです。

一般的に爬虫類やVPNを使用。

または肉の例。

私たちは、肉(クライアント)を購入する市場になるだろう。食肉処理工場(実サーバ)があります。私たちは、密売肉の手から肉を買いました。主な違いは、私たちが肉は食肉加工肉を購入された肉の密売を知らないということです。(肉トレーダーはエージェントです)。

これは、リバースプロキシである、あなたはそれらのすべての3つを知っているかもしれないが、買い手・売り手の関係を確認しませんでした。

一般的には負荷分散に使用。

ロードバランシングを設定する方法を見てみましょう。

とにかく、エージェントは、IP_hash、URL_hash、最小アクセスアルゴリズムの一般投票、重量(パーセンテージ)をバランスさせるための責任があります。

リバースプロキシ関連のパラメータ:

  proxy_pass:#サービス名(アドレス)

  オン/オフproxy_redirect:#リダイレクトするようにするかどうか

  proxy_set_headerホスト$ホスト:バックエンドサービスへ#ヘッダーパスパラメータ

  proxy_set_headerのX-Forwared-の場合$ REMOTE_ADDR:#ヘッダー・パス・パラメータバックエンドサービスへ

  proxy_connent_timeout 90#接続ブローカーサーバーのタイムアウト

  proxy_send_timeout 90#は、デフォルトでは秒で、最大時間を要求します

  秒のデフォルトでは、90#読み出し要求の最大時間をproxy_read_timeout

より多くのパラメータは、公式ウェブサイト、アドレスを参照http://nginx.org/en/docs/http/ngx_http_proxy_module.html超詳細な内部。

私は、単純なリバースプロキシを設定したいと思います。

 

 

 

上流およびサーバは、サーバの内部に配置されていない、同じレベルです。

追加重量の内部パラメータ場合、重量アドレッシング言いました。

 

 

 8002は、かつて8001にアクセスし、二回の訪問を表します。サイクルが続きます。

サービスがダウンしている場合は、nginxのは、そのサービスに要求を配布しないとき、サービス復旧、nginxのは、自動的にサービスが開始さを監視し、サービスは、サービスに再び送信されます。

ここではその二つの構成、fail_timeoutとslow_start。、確信がダウンしていると考えられているどのくらいの時間を介してサービス要求を示すfail_timeoutは、slow_startサービスがどのくらいの時間が通常のサービスが正常に戻ったと見なされた場合、監視を継続することを示しています。

図の設定:

 

 注slow_startパラメータをすることはできません  、ハッシュip_hashランダムな  負荷分散方法で使用する、公式ウェブサイトは言うにこれを持っていたが、私はいつもslow_start無効と述べています。

   バックアップ我々は現在、通常の状態のいずれかのサーバーを持っているバックアップサービスのためには、要求はバックアップサーバに配布されることはありません。ダウンサーバのすべての要求のすべての場合を除き、バックアップに配布されます。

   MAX_CONNS:接続の最大数。

多くの調整可能なパラメータがありますが、私たちは、私は以下の簡単な最適化コンフィギュレーションが心配です、表示する公式サイトに行くことができます。

私たちは、大きな並行処理を行うと、我々は優先順位がキャッシュされ、我々は静的なファイルをダウンキャッシュすべきだと思う、実際には、私は、アーキテクチャがそうである想像することができます....

 

 

 このように、我々は要求、静的なJSの、分離、CSSファイルアウトを配布行うことができ、これらの静的ファイルは、私たちの帯域幅を占有せません、我々はそれを行う方法nginxのキャッシュを見てください。

 

 

キャッシュファイルで読み込んだファイルである、あなたがあなたの将来の訪問には、フォルダを残して表示され、管理者で起動し、我々は、上記の構成は、それが何を意味するのかで説明したいと思います。

proxy_cache_path文の構成ブロックは、最初のパラメータには、アカウント権限へのパスであり、あなたがああ維持を開始します。または書き込むことができない、レベルがディレクトリレベルで保存されている、我々は文書の最終生産がMD5ファイルでご覧ください。1:2剤2は、ファイル名の2-3下位ディレクトリ名で、ファイル名の最後の数字を取るカタログを説明することです。

keys_zone =名:ファイルサイズ、一貫性のある以下のproxy_cacheに名前を付ける必要があります。incative保存する日数です。max_sizesは、保存された最大の単位です。内部キャッシュの場所proxy_cache名、proxy_cache_key URL MD5計算されることになります。試合は、キャッシュへの直接のアクセスがある場合。

代表proxy_cachr_validステータスコード200は、304が12時間保存し、保存します。

最適化の拡張:

私たちは、CPU、各作業は、単一のCPU上で実行されている、複数の作業プロセスを開始することができますが、そのアクセスは完全にランダムであり、競争が消費するCPU時間を発生することとしている、我々は、バインドCPUを使用することができますこの問題を解決する方法。

パラメータwork_cpu_affinity 0001 0010 0100 1000;この構成では、私たちは4つの作業を開始することを可能にするCPUをバインドするためにプレースホルダを使用することです。

IP_hash設定を行う使用しないようにしてください、IP_hash要求は、同じ外部ネットワークアドレスに配信することができ、ネットワークIPのエージェントの多くのルーティングスイッチは、IP_hashアルゴリズムを使用していない、多数の要求を引き起こす可能性があり、単一のサーバが、我々はバランスの目的を達成することはできません。

 

私たちが今日ここに話をnginxの、多くの深い最適化、非常に詳細に書かれた公式サイトがありますが、あなたは試す行くことができます。私はほとんどそれを考える開発のJavaの範囲、。調査は徹底取ることができます。

 

おすすめ

転載: www.cnblogs.com/cxiaocai/p/11442756.html