Help us understand the problem. What is going on with this article?

Apacheによる負荷分散構成

More than 3 years have passed since last update.

はじめに

Apache 2.4 において mod_proxy_balancer でリクエストを配下のWebサーバーに分散させる方法について 簡単にテストした内容をまとめています。

システム構成図

mod_proxy_balancer.png

/balancer にアクセスが来ると、バックエンドのservice1 ~ 3 に順番にリクエストを振り分ける

  • 動作確認では localhost にて試したが、バックエンドは別サーバーでも問題ない
  • 今回は service1 ~ 3 に Hello World という文字列を返すだけのHTTPサーバーを用意した

設定

httpd.conf

(1) httpd-balancer.conf の作成

バランサー設定を一箇所にまとめるよう、設定ファイルを作成

ProxyPass /balancer balancer://mycluster lbmethod=byrequests timeout=1
<Proxy balancer://mycluster>
  BalancerMember http://127.0.0.1:8081 loadfactor=1
  BalancerMember http://127.0.0.1:8082 loadfactor=1
  BalancerMember http://127.0.0.1:8083 loadfactor=1
</Proxy>

<Location /manager>
  SetHandler balancer-manager
</Location>

/balancer にアクセスがあると <Proxy> に登録された BalancerMember にリクエストを振り分ける。

loadfactor は重み付けで、数字が大きいメンバーに優先してリクエストを振り分けられる。

/manager にアクセスがあると、 mod_proxy_balancer の管理画面が表示される。
各メンバーのステータスやリクエストの分散状況などが表示される。

balancer-manager.png

(2) httpd.conf にて以下のモジュールを有効にする

LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
#LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so
#LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so
#LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule status_module modules/mod_status.so
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so

今回は単純にリクエストを順に振り分けるので、 mod_lbmethod_byrequests.so を有効にする。

httpd-balancer.confProxyPass にて lbmethod=byrequests 以外のメソッドを使用する場合は、該当するモジュールのコメントアウトを外す。

(3) httpd-balancer.conf を読み込む

httpd.conf の末尾で httpd-balancer.conf を読み込むように Include を追加する。

Include conf/extra/httpd-proxy-balancer.conf

(4) Apacheを再起動する

(5) 動作確認

  • /balancer にアクセスし、Hello World が表示されることを確認
  • 何度かブラウザのリロードを繰り返し、各ダミーサーバーに順繰りにリクエストが来ることを確認
  • service1 ~ 3 のいずれかを停止した状態でブラウザのリロードを繰り返すと、Activeなサーバーのみにリクエストが来ることを確認

参考資料

Kazunori-Kimura
フリーランスのプログラマーです。JavaScript好き。 C#, Javaもやれます。 お仕事ください。
https://kazunori-kimura.github.io/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした