ホームページ > php教程 > php手册 > Apache負荷分散設定方法:mod_proxy

Apache負荷分散設定方法:mod_proxy

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-06-21 08:56:44
オリジナル
1139 人が閲覧しました

私もこのタイトルを初めて見たときは驚きました。Apache でロード バランシングができるのですか?とても強力です。調べてみると、確かにそれは可能で、機能的にも悪くないことが分かりました。これはすべて mod_proxy モジュールのおかげです。まさに強力な Apache です。

早速、負荷分散の設定方法を説明しましょう。

一般に、負荷分散とは、負荷分散の目的を達成するために、クライアントのリクエストをバックエンド上のさまざまな実サーバーに分散することです。もう 1 つの方法は、2 つのサーバーを使用し、1 台をメイン サーバー (マスター) として使用し、もう 1 台をホット バックアップ (ホット スタンバイ) として使用することです。メイン サーバーがダウンすると、すぐにメイン サーバーに切り替えられます。バックアップサーバーを使用して、システム全体の信頼性を向上させます。

負荷分散設定

Apache は上記 2 つのニーズに対応できます。まず、負荷分散を行う方法について説明します。まず、Apache のいくつかのモジュールを有効にする必要があります:

プログラムコード

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_http_module modules/mod_proxy_http.so


mod_proxy はプロキシ サーバー機能を提供し、mod_proxy_balancer は負荷分散機能を提供し、mod_proxy_http はプロキシ サーバーが HTTP プロトコルをサポートできるようにします。 mod_proxy_http を他のプロトコル モジュール (mod_proxy_ftp など) に置き換えると、他のプロトコルの負荷分散をサポートできる可能性があります。興味のある人は自分で試してみてください。

次に、次の構成を追加します:

プログラムコード

ProxyRequests Off
<プロキシ バランサー://mycluster>
BalancerMember http://node-a.myserver.com:8080
BalancerMember http:/ /node-b.myserver.com:8080

ProxyPass / Balancer://mycluster
# 警告: 次の構成はデバッグ専用であり、決して追加しないでください。本番環境でも! ! !

SetHandler Balancer-manager
order Deny,Allow
すべてから拒否
localhost から許可

上記の ProxyRequests Off 項目からわかるように、ロード バランサーは実際にはリバース プロキシですが、そのプロキシ転送アドレスは特定のサーバーではなく、balancer:// プロトコルです:

ProxyPass / Balancer://mycluster プロトコル アドレスは任意に定義できます。次に、セクションでバランサープロトコルの内容を設定します。 BalancerMember ディレクティブは、負荷分散グループに実サーバーのアドレスを追加できます。

次の段落 は、デバッグ中に追加できます (運用環境での使用は禁止されています)。その後、
にアクセスします。 http:// /localhost/balancer-manager/ にアクセスして、負荷分散の動作ステータスを確認します。
OK、変更を加えた後、サーバーを再起動し、Apache サーバーのアドレスにアクセスして負荷分散の効果を確認してください。バランサー マネージャー インターフェイスを開くと、リクエストが均等に分散されていることがわかります。

均等に分割したくない場合はどうすればよいですか?値の範囲は 1 ~ 100 で、loadfactor パラメーターを BalancerMember に追加するだけです。たとえば、サーバーが 3 台あり、負荷分散比が 7:2:1 の場合、次のように設定するだけで済みます:


プログラムコード

プロキシリクエストオフ

<プロキシバランサー://mycluster>
BalancerMember
http://node-a.myserver.com:8080loadfactor=7 BalancerMember
http://node-b.myserver.com:8080loadfactor=2BalancerMember
http://node-c.myserver.com:8080loadfactor=1< /Proxy>
ProxyPass / Balancer://mycluster

デフォルトでは、負荷分散は、各サーバーが受信するリクエストの数が事前に設定された比率を満たしていることを確認しようとします。アルゴリズムを変更したい場合は、lbmethod 属性を使用できます。例:


プログラムコード

プロキシリクエストオフ

<プロキシバランサー://mycluster>
BalancerMember
http://node-a.myserver.com:8080loadfactor=7 BalancerMember
http://node-b.myserver.com:8080loadfactor=2BalancerMember
http://node-c.myserver.com:8080loadfactor=1< /Proxy>
ProxyPass / Balancer://mycluster
ProxySet lbmethod=bytraffic


lbmethod の可能な値は次のとおりです:

lbmethod=byrequests リクエストの数に応じたバランス (デフォルト)
lbmethod=bytraffic トラフィックに応じたバランス
lbmethod=bybusyness 忙しさに応じたバランス(常にアクティブなリクエスト数が最も少ないサーバーに割り当てられます)

さまざまなアルゴリズムの原理については、Apache のドキュメントを参照してください。
ホット スタンバイ
ホット スタンバイの実装は非常に簡単で、status=+H 属性を追加してサーバーをバックアップ サーバーとして指定するだけです。

プログラムコード

ProxyRequests Off

<プロキシ バランサー://mycluster>

BalancerMember
http://node-a.myserver.com:8080
BalancerMember http:/ /node-b.myserver.com:8080
status=+HProxyPass / Balancer://mycluster

バランサー マネージャー インターフェイスからわかるように、リクエストは常にノード a に流れます。ノード a がハングすると、Apache はエラーを検出し、リクエストをノード b にオフロードします。 Apache は、ノード a のステータスを数分ごとにチェックし、ノード a が回復した場合は、ノード a を引き続き使用します。



関連ラベル:
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート