ホームページ 運用・保守 Apache Apache で負荷分散を構成する方法

Apache で負荷分散を構成する方法

Jun 29, 2019 am 10:39 AM
apache 負荷分散

負荷分散とは何ですか? Apacheで負荷分散を設定するにはどうすればよいですか? Apacheの負荷分散設定方法については以下の記事で紹介していますので、ご参考になれば幸いです。

Apache で負荷分散を構成する方法

#負荷分散とは

負荷分散 (負荷分散) は、分散システム アーキテクチャの一部です。設計 考慮する必要がある要素の 1 つは、通常、

実行のために複数のオペレーティング ユニットにリクエスト/データを [均等に] 割り当てることを指します。負荷分散の鍵は、[均等に] です。

#一般的な負荷分散ソリューション


##一般的なインターネット分散アーキテクチャは上記のとおりで、次のように分かれています。

クライアント層、リバースプロキシnginx層、サイト層、サービス層、データ層

。各ダウンストリームには複数のアップストリーム呼び出しがあることがわかりますが、各アップストリームが各ダウンストリームに均等にアクセスする限り、「リクエスト/データを複数の演算ユニットに均等に分散して実行する」ことが実現できます。

[クライアント層 -> リバースプロキシ層]の負荷分散


[クライアント層]への負荷分散[リバース プロキシ レイヤー] は、「

DNS ポーリング

」によって実現されます。DNS サーバーは ドメイン名に対して複数の解決 IP で構成されており、各 DNS 解決リクエストにアクセスします。DNS サーバーはポーリングし、これらの ip を返して、各 IP の解決確率が同じであることを確認します。これらの IP は nginx の外部ネットワーク IP であるため、各 nginx のリクエスト分散もバランスがとれます。

[リバース プロキシ レイヤー - > サイト レイヤー] 負荷分散


[リバース プロキシ レイヤー] 負荷分散[サイト レイヤー] は

"nginx" を通じて実現されます。 nginx.conf

を変更することで、さまざまな負荷分散戦略を実装できます。 1) リクエスト ポーリング: DNS ポーリングと同様に、リクエストは各 Web サーバーに順番にルーティングされます

2 )最小接続ルーティング: どの Web サーバーの接続数が少ないか、どの Web サーバーがルーティングされるか

3) IP ハッシュ: Web サーバーは、アクセスしているユーザーの IP ハッシュ値に従ってルーティングされます。ユーザーの IP 分布が均一である限り、リクエストは理論的には均一です。IP ハッシュ バランシング方式でこれを実現できます。同じユーザーのリクエストは常に同じ Web サーバーに送られます。この戦略は、次のようなステートフル サービスに適しています。 as session (58 Chen Jian のコメント: これを行うことはできますが、強くお勧めしません。サイト層のステートレス性は分散アーキテクチャ設計の基本原則の 1 つです。セッションをデータ層に保存するのが最善です)

#4)…

[サイト層 -> サービス層] 負荷分散


[サイト層] から [サービス層] への負荷分散は、「サービス接続プール
」を通じて実現されます。

アップストリーム接続プールはダウンストリーム サービスとの複数の接続を確立し、各リクエストはダウンストリーム サービスにアクセスするための接続を「ランダムに」選択します。 前の記事「RPC クライアント実装の詳細」には、ロード バランシング、フェイルオーバー、タイムアウト処理について詳しく説明されています。リンクをクリックして参照してください。ここでは展開しません。

[データ層]の負荷分散

データ量が多い場合、データ層(db、キャッシュ)はデータを水平に分割するため、データ層の負荷分散はさらに複雑で、「データ分散」と「リクエスト分散」に分かれています。

データバランスとは、水平分割後の各サービス(db、キャッシュ)のデータ量がほぼ同じであることを指します。

リクエストのバランスとは、水平分割後の各サービス (db、キャッシュ) の

リクエスト量がほぼ同じであることを指します。

業界では、一般的な水平方向のセグメンテーション方法がいくつかあります:

1. 範囲に応じた水平方向のセグメンテーション

各データ サービスは、特定範囲のデータを保存します、上の図は例です:

user0 サービス、uid 範囲 1 ~ 1kw

# を保存します# #user1 サービス、ストレージ uid 範囲 1kw-2kw このソリューションの利点は次のとおりです:

(1) ルールは単純で、サービスはルーティングする uid 範囲を決定するだけで済みます。

##(2) データバランスが良くなる

(3) 拡張が比較的容易で、任意の場所にuid [2kw, 3kw]のデータサービスを追加できます。時間

欠点は次のとおりです:

(1) リクエストの負荷は必ずしも均等ではありません。一般に、新規登録ユーザーの方が古いユーザーよりもアクティブになり、広範囲のサービス リクエストに対するプレッシャーが大きくなります。

2. ID ハッシュの水平セグメンテーションに従って、


各データ サービスは、特定のキー値でハッシュされたデータの一部を格納します、上に示すように 例:

user0 サービス、偶数の uid データを保存します

user1 サービス、奇数の uid データを保存します

このソリューションの利点は次のとおりです:

(1) ルールは単純です。サービスは、対応するストレージ サービスにルーティングされる uid をハッシュするだけで済みます。

(2) データ バランスは良好です

(3) ) リクエストの均一性が良い

デメリットは:

#(1) 拡張が容易ではない データサービスを拡張する場合、ハッシュ方式が変わるとデータ移行が必要になる場合があります

#概要

負荷分散 (ロード バランス) は、分散システム アーキテクチャの設計において考慮する必要がある要素の 1 つであり、通常、リクエスト/データを [均等に割り当てること] を指します。 ] を複数のオペレーティング ユニットに実行させます。負荷分散の鍵は [均等に] です。

(1) [クライアント層]から[リバースプロキシ層]への負荷分散は「DNSポーリング」により実現します

(2) [リバースプロキシ層]から[サイト層]への負荷分散「nginx」を通じて実現されます

#(3) [サイト層] から [サービス層] への負荷分散は「サービス接続プール」を通じて実現されます

(4) [データ層] 負荷分散は必要です「データバランス」と「リクエストバランス」の2点を考慮する 一般的な方法としては「範囲による水平分割」「ハッシュ水平分割」

Apache負荷分散設定方法

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

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

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

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

1. 負荷分散設定

1). 基本構成

Apache は、上記 2 つのニーズを満たすことができます。まず、負荷分散を行う方法について説明します。 Apache サーバーのドメイン名が www.a.com であると仮定すると、最初に 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_balancer は負荷分散機能を提供し、mod_proxy_http はプロキシ サーバーが HTTP プロトコルをサポートできるようにします。 mod_proxy_http を他のプロトコル モジュール (mod_proxy_ftp など) に置き換えると、他のプロトコルの負荷分散をサポートできる可能性があります。興味のある方は、自分で試してみてください。

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

コードは次のとおりです:

ProxyRequests Off 
 <Proxy balancer://mycluster> 
 BalancerMember http://node-a.myserver.com:8080 
 BalancerMember http://node-b.myserver.com:8080 
 </Proxy> 
 ProxyPass / balancer://mycluster/ 
 # 警告:以下这段配置仅用于调试,绝不要添加到生产环境中!!! 
 <Location /balancer-manager> 
 SetHandler balancer-manager 
 order Deny,Allow 
 Deny from all 
 Allow from localhost 
 </Location>
ログイン後にコピー

注: node-a.myserver.com、node-b.myserver.com は、node-a.myserver.com、node-b.myserver.com のドメイン名です。他の 2 つのサーバー 現在のサーバーのドメイン名ではありません

上記の ProxyRequests Off からわかるように、ロード バランサーは実際にはリバース プロキシですが、そのプロキシ転送アドレスは特定のサーバーではありません。 Balancer:// プロトコル:

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

次の段落 は、ロード バランシングの動作ステータスを監視するために使用されます。デバッグ中に追加できます (本番環境での使用は禁止されています!)。その後、http:/ にアクセスしてください。 /localhost/balancer-manager/ を参照して、ロードバランシングの動作ステータスを確認します。

OK、変更を加えた後、サーバーを再起動し、Apache サーバーのアドレス (www.a.com) にアクセスして、負荷分散の効果を確認してください。

出错提示: 
访问网页提示Internal Serveral Error,察看error.log文件
ログイン後にコピー

Error.log コード

[warn] proxy: No protocol handler was valid for the URL /admin/login_form. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.
ログイン後にコピー

理由は構成です: # ProxyPass / Balancer://mycluster might be missing one /

2). 負荷比例配分

バランサー マネージャー インターフェイスを開くと、リクエストが均等に分散されていることがわかります。

如果不想平均分配怎么办?给 BalancerMember 加上 loadfactor 参数即可,取值范围为1-100。比如你有三台服务器,负载分配比例为 7:2:1,只需这样设置:

Httpd.conf代码

ProxyRequests Off 
 <Proxy balancer://mycluster> 
 BalancerMember http://node-a.myserver.com:8080 loadfactor=7 
 BalancerMember http://node-b.myserver.com:8080 loadfactor=2 
 BalancerMember http://node-c.myserver.com:8080 loadfactor=1 
 </Proxy> 
 ProxyPass / balancer://mycluster
ログイン後にコピー

3).负载分配算法

默认情况下,负载均衡会尽量让各个服务器接受的请求次数满足预设的比例。如果要改变算法,可以使用 lbmethod 属性。如:

代码如下:

ProxyRequests Off 
 <Proxy balancer://mycluster> 
 BalancerMember http://node-a.myserver.com:8080 loadfactor=7 
 BalancerMember http://node-b.myserver.com:8080 loadfactor=2 
 BalancerMember http://node-c.myserver.com:8080 loadfactor=1 
 </Proxy> 
 ProxyPass / balancer://mycluster 
 ProxySet lbmethod=bytraffic
ログイン後にコピー

lbmethod可能的取值有:

  • lbmethod=byrequests 按照请求次数均衡(默认)

  • lbmethod=bytraffic 按照流量均衡

  • lbmethod=bybusyness 按照繁忙程度均衡(总是分配给活跃请求数最少的服务器)

各种算法的原理请参见Apache的文档。

2. 热备份(Hot Standby)

热备份的实现很简单,只需添加 status=+H 属性,就可以把某台服务器指定为备份服务器:

代码如下:

ProxyRequests Off 
 <Proxy balancer://mycluster> 
 BalancerMember http://node-a.myserver.com:8080 
 BalancerMember http://node-b.myserver.com:8080 status=+H 
 </Proxy> 
 ProxyPass / balancer://mycluster
ログイン後にコピー

从 balancer-manager 界面中可以看到,请求总是流向 node-a ,一旦node-a挂掉, Apache会检测到错误并把请求分流给 node-b。Apache会每隔几分钟检测一下 node-a 的状况,如果node-a恢复,就继续使用node-a。

apache负载均衡的安装和实现方法

其实无论是分布式,数据缓存,还是负载均衡,无非就是改善网站的性能瓶颈,在网站源码不做优化的情况下,负载均衡可以说是最直接的手段了。其实抛开这个名词,放开了说,就是希望用户能够分流,也就是说把所有用户的访问压力分散到多台服务器上,也可以分散到多个tomcat里,如果一台服务器装多个tomcat,那么即使是负载均衡,性能也提高不了太多,不过可以提高稳定性,即容错性。当其中一个主tomcat当掉,其他的tomcat也可以补上,因为tomcat之间实现了Session共享。待tomcat服务器修复后再次启动,就会自动拷贝所有session数据,然后加入集群。这样就可以不间断的提供服务。如果要真正从本质上提升性能,必须要分布到多台服务器。同样tomcat也可以做到。网上相关资料比较多,可以很方便的查到,但是质量不算高。我希望可以通过这篇随笔,系统的总结。

本文的 例子是同一台服务器上运行两个tomcat,做两个tomcat之间的负载均衡。其实多台服务器各配置一个tomcat也可以,而且那样的话,可以使用安装版的tomcat,而不用是下文中的免安装的tomcat,而且tomcat端口配置也就不用修改了。下文也会提到。

tomcat的负载均衡需要apache服务器的加入来实现。在进行配置之前请先卸载调已安装的tomcat,然后检查apache的版本。我这次配置使用的是apache-tomcat-6.0.18免安装版本,我亲自测试后推断安装版的tomcat在同一台机子上会不能启动两个以上,可能是因为安装版的tomcat侵入了系统,导致即使在server.xml里修改了配置,还是会引起冲突。所以我使用tomcat免安装版。

apache使用的是apache_2.2.11-win32-x86-no_ssl.msi。如果版本低于2.2Apache负载均衡的配置要有所不同,因为这个2.2.11和2.2.8版本集成了jk2等负载均衡工具,所以配置要简单许多。别的版本我没有具体测试,有待考究。这两个软件可以到官方网站下载。

把Apache安装为运行在80端口的Windows服务,安装成功后在系统服务列表中可以看到Apache2.2服务。服务启动后在浏览器中输入http://localhost进行测试,如果能看到一个"It works!"的页面就代表Apache已经正常工作了。把tomcat解压到任意目录,赋值一个另命名。起名和路径对配置没有影响。但要保证端口不要冲突,如果装有Oracle或IIS的用户需要修改或关闭相关接口的服务。当然jdk的配置也是必须的,这个不再过多叙述。

想要达到负载均衡的目的,首先,在Apache安装目录下找到conf/httpd.conf文件,去掉以下文本前的注释符(#)以便让Apache在启动时自动加载代理(proxy)模块。

代码如下:

LoadModule proxy_module modules/mod_proxy.so 
 LoadModule proxy_ajp_module modules/mod_proxy_ajp.so 
 LoadModule proxy_balancer_module modules/mod_proxy_balancer.so 
 LoadModule proxy_connect_module modules/mod_proxy_connect.so 
 LoadModule proxy_ftp_module modules/mod_proxy_ftp.so 
 LoadModule proxy_http_module modules/mod_proxy_http.so
ログイン後にコピー

向下拉动文档找到节点,在DirectoryIndex index.html后加上index.jsp,这一步只是为了待会配置完tomcat后能看到小猫首页,可以不做。继续下拉文档找到Include conf/extra/httpd-vhosts.conf,去掉前面的注释符。

然后打开conf/extra/httpd-vhosts.conf,配置虚拟站点,在最下面加上

代码如下:

<VirtualHost *:80> 
 ServerAdmin 管理员邮箱 
 ServerName localhost 
 ServerAlias localhost 
 ProxyPass / balancer://sy/ stickysession=jsessionid nofailover=On 
 ProxyPassReverse / balancer://sy/ 
 ErrorLog "logs/sy-error.log" 
 CustomLog "logs/sy-access.log" common 
 </VirtualHost>
ログイン後にコピー

然后回到httpd.conf,在文档最下面加上

代码如下:

ProxyRequests Off 
 <proxy balancer://sy> 
 BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=jvm1 
 BalancerMember ajp://127.0.0.1:9009 loadfactor=1 route=jvm2 
 </proxy>
ログイン後にコピー

ProxyRequests Off 是告诉Apache需要使用反向代理,ip地址和端口唯一确定了tomcat节点和配置的ajp接受端口。loadfactor是负载因子,Apache会按负载因子的比例向后端tomcat节点转发请求,负载因子越大,对应的tomcat服务器就会处理越多的请求,如两个tomcat都是1,Apache就按1:1的比例转发,如果是2和1就按2:1的比例转发。这样就可以使配置更灵活,例如可以给性能好的服务器增加处理工作的比例,如果采取多台服务器,只需要修改ip地址和端口就可以了。route参数对应后续tomcat负载均衡配置中的引擎路径(jvmRoute)

以上がApache で負荷分散を構成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

H5プロジェクトの実行方法 H5プロジェクトの実行方法 Apr 06, 2025 pm 12:21 PM

H5プロジェクトを実行するには、次の手順が必要です。Webサーバー、node.js、開発ツールなどの必要なツールのインストール。開発環境の構築、プロジェクトフォルダーの作成、プロジェクトの初期化、コードの書き込み。開発サーバーを起動し、コマンドラインを使用してコマンドを実行します。ブラウザでプロジェクトをプレビューし、開発サーバーURLを入力します。プロジェクトの公開、コードの最適化、プロジェクトの展開、Webサーバーの構成のセットアップ。

XMLでPDFをエクスポートする方法 XMLでPDFをエクスポートする方法 Apr 03, 2025 am 06:45 AM

XMLをPDFにエクスポートするには、XSLTを使用し、XMLデータバインディングライブラリを使用する方法は2つあります。 XSLT:XSLT StyleSheetを作成し、XSLTプロセッサを使用してXMLデータを変換するPDF形式を指定します。 XMLデータバインディングライブラリ:XMLデータバインディングライブラリのインポートPDFドキュメントオブジェクトの作成XMLデータエクスポートPDFファイル。 PDFファイルに適している方法は、要件に依存します。 XSLTは柔軟性を提供しますが、データバインディングライブラリは簡単に実装できます。単純な変換のために、データバインディングライブラリの方が優れており、複雑な変換の場合、XSLTがより適しています。

サーバー側でキャラクターエンコードを設定する方法ブートストラップテーブルを解決する方法 サーバー側でキャラクターエンコードを設定する方法ブートストラップテーブルを解決する方法 Apr 07, 2025 pm 12:00 PM

サーバー側に文字エンコードを設定して、文字化けしたブートストラップテーブルを解決するには、次の手順に従う必要があります。サーバー文字のエンコーディングを確認します。サーバー構成ファイルを編集します。 EncodingをUTF-8に設定します。サーバーを保存して再起動します。エンコーディングを確認します。

Debian OpenSSL構成を確認する方法 Debian OpenSSL構成を確認する方法 Apr 12, 2025 pm 11:57 PM

この記事では、DebianシステムのOpenSSL構成を確認して、システムのセキュリティステータスをすばやく把握できるように、いくつかの方法を紹介します。 1.最初にOpenSSLバージョンを確認し、OpenSSLがインストールされているかどうかを確認し、バージョン情報を確認します。端末に次のコマンドを入力します。OpenSSlversionがインストールされていない場合、システムはエラーを促します。 2。構成ファイルを表示します。 OpenSSLのメイン構成ファイルは、通常/etc/ssl/openssl.cnfにあります。テキストエディター(Nanoなど)を使用して、次のように表示できます。sudonano/etc/ssl/openssl.cnfこのファイルには、キー、証明書、暗号化アルゴリズムなどの重要な構成情報が含まれています。 3。OPEを利用します

xamppでmysqlを起動できません xamppでmysqlを起動できません Apr 08, 2025 pm 03:15 PM

ポート競合、構成ファイルエラー、システム許可の不十分、サービス依存関係の問題、インストールの問題など、XAMPPがMySQLを起動できない理由はたくさんあります。トラブルシューティング手順は次のとおりです。1)ポートの競合を確認します。 2)構成ファイルを確認します。 3)システムの許可を確認します。 4)サービスの依存関係を確認します。 5)mysqlを再インストールします。これらの手順に従うと、MySQLの起動が失敗する問題を見つけて解決できます。

Debian Apacheログを使用してWebサイトのパフォーマンスを向上させる方法 Debian Apacheログを使用してWebサイトのパフォーマンスを向上させる方法 Apr 12, 2025 pm 11:36 PM

この記事では、Debianシステムの下でApacheログを分析することにより、Webサイトのパフォーマンスを改善する方法について説明します。 1.ログ分析の基本Apacheログは、IPアドレス、タイムスタンプ、リクエストURL、HTTPメソッド、応答コードなど、すべてのHTTP要求の詳細情報を記録します。 Debian Systemsでは、これらのログは通常、/var/log/apache2/access.logおよび/var/log/apache2/error.logディレクトリにあります。ログ構造を理解することは、効果的な分析の最初のステップです。 2。ログ分析ツールさまざまなツールを使用してApacheログを分析できます。コマンドラインツール:GREP、AWK、SED、およびその他のコマンドラインツール。

ApacheでCGIディレクトリを設定する方法 ApacheでCGIディレクトリを設定する方法 Apr 13, 2025 pm 01:18 PM

ApacheでCGIディレクトリを設定するには、次の手順を実行する必要があります。「CGI-Bin」などのCGIディレクトリを作成し、Apacheの書き込み許可を付与します。 Apache構成ファイルに「Scriptalias」ディレクティブブロックを追加して、CGIディレクトリを「/cgi-bin」URLにマッピングします。 Apacheを再起動します。

Apacheを始める方法 Apacheを始める方法 Apr 13, 2025 pm 01:06 PM

Apacheを開始する手順は次のとおりです。Apache(コマンド:sudo apt-get install apache2または公式Webサイトからダウンロード)をインストールします(linux:linux:sudo systemctl start apache2; windows:apache2.4 "serviceを右クリックして「開始」を右クリック) (オプション、Linux:Sudo SystemCtl

See all articles