nginxロードバランシングの理解
nginx は軽量で高性能な Web サーバーで、主に次の 2 つのことを実行できます。
最初のものは http サーバーとして機能し、受信リクエストを処理するために php-fpm プロセスと結合します。nginx 自体は PHP を解析しません。それがクライアントからのリクエストである場合、それを受け入れるサーバーとして機能します。 phpプロセスに渡されて処理され、php処理完了後の結果がクライアントに送信されます。 nginx+php-fpmをインストールしたら、それぞれの設定ファイルを設定して起動するだけです。動作原理は次の説明でわかります:
Nginx は、外部プログラムの直接呼び出しや解析をサポートしていません。すべての外部プログラム (PHP を含む) は、FastCGI インターフェイスを通じて呼び出す必要があります。 FastCGI インターフェイスは、Linux 上のソケットです (このソケットはファイル ソケットまたは IP ソケットにすることができます)。 CGI プログラムを呼び出すには、FastCGI ラッパーも必要です (ラッパーは、別のプログラムを開始するために使用されるプログラムとして理解できます)。このラッパーは、ポートやファイル ソケットなどの固定ソケットにバインドされます。 Nginx が CGI リクエストをこのソケットに送信すると、ラッパーは FastCGI インターフェイスを通じてリクエストを受信し、新しいスレッドを生成してスクリプトを処理し、返されたデータを読み取ります。返されたデータは、固定ソケットに沿って FastCGI インターフェイスを介して Nginx に渡され、最後に、Nginx は返されたデータをクライアントに送信します。以下の図に示すように、これが Nginx+FastCGI の全体的な動作プロセスです。
上記の段落では、nginx+fastcgi の動作メカニズムについて説明しています。リクエストは nginx 設定ファイル内で照合され、エラー ファイルを直接返すなど、それに応じて処理されます (これと上記の間には少し違いがありますが、nginx ではできると思います)。 HTML などの静的ファイルに対して上の図と同様の分析を実行し、PHP プロセスを使用して PHP リクエストを処理します (ここには複数の PHP プロセスが存在する可能性があります)。
2 つ目は、リバース プロキシの負荷分散を使用することです。これは実際には非常に簡単です。簡単に言うと、サーバーのグループを定義し、リクエストをいずれかのサーバーに転送して処理し、負荷を軽減します。各サーバーの負荷を軽減するには、まずオンラインのリバース プロキシの定義を確認してください。
リバース プロキシ方式とは、プロキシ サーバーを使用してインターネット上で接続要求を受け入れ、その要求を内部ネットワーク上のサーバーに転送し、サーバーから取得した結果をインターネット上の接続を要求しているクライアントに返すことを指します。今回は、プロキシ サーバーが外部に対してリバース プロキシ サーバーとして表示されます。
リバース プロキシは、フォワード プロキシ (またはプロキシ) の反対です。プロキシについては聞いたことがあると思います。リソース B により便利にアクセスするために、リソース A を介してリソース B にアクセスします。その特徴は、ユーザーが何をするかを知っていることです。リバースプロキシのサービスの実際の処理サーバーはイントラネット上に配置されており、外部ネットワークはその逆にのみアクセスできます。プロキシサーバーにより、セキュリティが大幅に向上しました。
ソフトウェアをインストールする
nginxのインストールはとても簡単です1. nginx、pcre(書き換え用)、zlib(圧縮用)、sslのインストールに必要な環境。これを自分でダウンロードしてコンパイルしてインストールすることもできます
yum -y zlib をインストールします;
yum –y インストールしてください;tar –zxvf nginx-1.2.8.tar.gz –C ./;yum –y install openssl;
2. nginx-*.tar.gzをダウンロードしてインストールします。
ここで設定する場合、http{} 間の内容を変更するだけで済みます。最初に変更するのは、サーバー グループを設定し、http ノード間にcd nginx-1.2.8;
./congigure --prefix=/usr/local/nginx;
作成&&インストール;
3. 構成
2 つのサーバー間の負荷分散としてリバース プロキシ バックエンドを設定しますを追加することです。 aupstream myserver {
nginx のアップストリームは、ポーリング (デフォルトでは、すべてのサーバーが時系列順に 1 つずつアクセスされます。サーバーがダウンしている場合は、自動的に削除されます)、重み (サーバーの位置確率は、サーバーの位置確率に比例します) をサポートしています。重み、これ サーバー構成が不均等な場合に設定可能)、ip_hash(リクエストされたIPごとにハッシュ計算が行われ、一定のルールに従って対応するサーバーが割り当てられます)、fair(リクエストは応答時間(rt)に従って割り当てられます)各サーバーの)、rt は優先度の割り当てを知っています)、url_hash(アクセスされた URL のハッシュ値に従ってリクエストを振り分けます)、ここではデフォルトのローテーション方法を使用します。
リクエストを myServer に向けます
location / {
完全なドキュメント (コメントを削除したもの) は次のとおりです:
proxy_pass http://myServer }
リーリー
前の手順で、www.myapp1.com:80 と www.myapp2.com:8080 という 2 つのサーバー アドレスがあることがわかります。このサーバーに上記の nginx をインストールしました。 Win8 システムのコンピューターでは、Apache の仮想ホストを使用して 2 つのドメイン名が設定され、その 2 つのドメイン名のコードは互いに独立しており、設定も非常に簡単です。
1.Apache設定ファイルを設定します
私はxampp統合環境を使用しています。httpd.confにリスニングポートを追加する箇所が2か所あります。ファイルの内容は基本的に同じですが、一方が myapp1 でもう一方が myapp2 である点が異なります。8080を聞いてください つまり、ここは2つのポートを監視しています
80を聞く
8080を聞く次の文が開いているかどうかを確認し、開いていない場合は、以下のように開きます。
リーリー
httpd-vhosts.conf に次の内容を追加します。
リーリー
Windows hosts ファイルを変更し、次の内容を追加します
リーリー
Linuxの/etc/hostsファイルを変更し、以下の内容を追加します
リーリー
ファイルindex.phpをwww.myapp1.com:80 [E:softxampphtdocswww.myapp1.comindex.php]に置きました
ファイルindex.phpもwww.myapp2.com:8080 [E:softxampphtdocswww.myapp2.comindex.php]に配置されます
win8 ブラウザに www.myapp1.com:80 と www.myapp2.com:8080 を入力すると、さまざまな効果が表示されます
そして、centos で以下の結果が表示されたら(自分で美化しました)、設定が成功したことを意味します
リーリー
リーリー効果を確認してください
言い忘れましたが、nginx プロキシサーバーのアドレスは http://192.168.1.113 です。すべてがOKになったら、ブラウザからアクセスして効果を確認できます
ブラウザに http://192.168.1.113/index.php と入力した後、更新を続けると、次の内容が表示されることがわかります
私はmyapp2、私はmyapp1です
これら 2 つのページを前後に入れ替えると、2 回更新することなくビューが 1 回増加します。これは、前述のデフォルトのローテーション トレーニング方法を証明していますが、ここには、ユーザーが処理せずに Web サイトにアクセスしたときの別の一般的な問題があります。 、セッションは別のサーバーに保存されます (ここでは 2 つのサーバーをシミュレートするために 2 つの異なるフォルダーを使用します)。セッション データのセットが複数存在する可能性があります。この問題を解決する方法については、次の記事で説明します。この質問は実際には非常に重要です。単純。
この記事の著作権は著者ifforever(luluyrt@163.com)に帰属します。記事を転載した後は、著者と原文リンクをわかりやすい位置に記載する必要があります。記事ページに記載されていない場合は、法的責任を追及する権利が留保されます。
上記では、負荷分散をすべての側面を含めて設定する centos+nginx を紹介しましたが、PHP チュートリアルに興味のある友人に役立つことを願っています。