Carpe Diem

  Top > スポンサー広告> ロードバランサ > Apache でロードバランサ構築  

スポンサーサイト

-- - --/-- [--] - --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Apache でロードバランサ構築

2014 - 08/26 [Tue] - 20:45

Apache の proxy_balancer モジュールでロードバランサを構築します。
アプリケーションで制御しているのでL7ロードバランサですね。
環境は以下です。インフラは vagrant で構築します。

Ubuntu 14.04
Apache 2.4.7



◆vagrant で3台サーバを起動する
新規で Vagrantfile を作って下さい。それに以下の内容を追記します。

  config.vm.define :lb do |web|
web.vm.network :private_network, ip: "192.168.33.10"
end

config.vm.define :web1 do |web|
web.vm.network :private_network, ip: "192.168.33.11"
end

config.vm.define :web2 do |web|
web.vm.network :private_network, ip: "192.168.33.12"
end

設定ファイルからわかるように
ロードバランサ:lb
Webサーバ1:web1
Webサーバ2:web2

という設定です。

$ vagrant up

で3台とも起動します。


◆WebサーバにApacheを導入する
以下は web1, web2 ともにほぼ同じです。一応両方記述しておきます。
まず web1 から

$ vagrant ssh web1

で入った後で

$ sudo aptitude update
$ sudo aptitude install apache2

これでインストールは完了です。次に表示するページを分かりやすくするために
index.html を上書きしておきます。

$ sudo su
# echo "web1" > /var/www/html/index.html

動作確認しましょう。

$ curl http://localhost/
web1

きちんと表示されますね。

同じように web2 もインストールします。

$ vagrant ssh web2

で入った後で

$ sudo aptitude update
$ sudo aptitude install apache2

同じくindex.html を上書きしておきます。

$ sudo su
# echo "web2" > /var/www/html/index.html

動作確認しましょう。

$ curl http://localhost/
web2

こちらもきちんと設定出来ました。


◆ロードバランサを構築する

$ vagrant ssh lb

でロードバランサ用サーバに入ります。
Apacheのモジュールで構築するので、これもApacheをインストールします。

$ sudo aptitude update
$ sudo aptitude install apache2

次に必要なモジュールを ON にします。

$ sudo a2enmod proxy
$ sudo a2enmod proxy_balancer
$ sudo a2enmod proxy_http
$ sudo a2enmod lbmethod_byrequests

ON にしたらロードバランサの設定を行います。
編集するファイルは
/etc/apache2/mods-available/proxy_balancer.conf
/etc/apache2/sites-available/000-default.conf

のどちらでも大丈夫ですが、独自の編集なので site-available の方が個人的には良いと思います。
以下を追記して下さい。
ProxyPass / balancer://mycluster/

<Proxy balancer://mycluster/>
BalancerMember http://192.168.33.11/ loadfactor=10
BalancerMember http://192.168.33.12/ loadfactor=10
ProxySet lbmethod=byrequests
</Proxy>


今回はルート「/」をマッピングしようとしてるので
ProxyPass / balancer://mycluster/

としています。
例えば「/test」をマッピングしたければ
ProxyPass /test balancer://mycluster

といった感じにします。この辺はApacheのディレクティブ設定を参照して下さい。
注意として最後に「/」を入れた時はどのパスにも「/」を入れて下さい。
逆に付けない時は他のパスも付けないで下さい。
このように統一しないとうまく動いてくれないです。


loadfactor は重みです。大きい方が優先されるようになります。

設定が完了したら再起動します。

$ sudo service apache2 restart



◆動作確認
lb の中で curl を叩くと web1, web2 を割り振って表示してくれるようになります。

$ curl http://localhost/
web1
$ curl http://localhost/
web2


以上です。

ソース:
mod_proxy_balancer の振り分け挙動について調べたのと failonstatus を試してみた
Apache モジュール mod_proxy_balancer

コメントの投稿





管理者にだけ表示を許可する

 | ホーム | 

プロフィール

Cicatrice

Author:Cicatrice
備忘録

検索フォーム

カテゴリ

最新記事

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。