サーバーへのアクセスが多くなり、負荷がかかってくると必要になるのがロードバランサーです。サイト管理者のサイトはそんなことはないのですが、KVMで仮想マシンを作成できるので、Poundを使った簡易ロードバランサーを作ってみました。
Indel Corei5、メモリ24GバイトのUbuntuマシにKVMを入れて、次のような仮想マシンを作ってみみました。
こちらのサイトhttps://help.ubuntu.com/community/Poundを参考にしました。
Poundのインストールはaptでできます。
sudo apt-get install pound
とすると、/etc/pound/pound.cfgの設定ファイルのひな形が作成されます。これをリネームして、サイト管理者は次のような簡単な設定ファイルを作成しました。
###################################################################### ## global options: User "www-data" Group "www-data" Daemon 0 #RootJail "/chroot/pound" ## Logging: (goes to syslog by default) ## 0 no logging ## 1 normal ## 2 extended ## 3 Apache-style (common log format) LogLevel 1 ## check backend every X secs: Alive 30 ## use hardware-accelleration card supported by openssl(1): #SSLEngine "" # poundctl control socket Control "/var/run/pound/poundctl.socket" ###################################################################### ## listen, redirect and ... to: ## redirect all requests on port 8080 ("ListenHTTP") to the local webserver (see "Service" below): ListenHTTP Address 192.168.1.100 #Port 8080 Port 80 ## allow PUT and DELETE also (by default only GET, POST and HEAD)?: #xHTTP 0 END Service HeadRequire "Host: .*vubuntu00.it-ishin.com" BackEnd Address 192.168.1.101 Port 80 TimeOut 30 Priority 5 End BackEnd Address 192.168.1.102 Port 80 TimeOut 30 Priority 5 End End
とここまでは良かったのですが、何故か$ sudo service pound restartではデーモンが起動しませんでした。ここでかなりはまったのですが、上のサイトを見つけて/etc/init.d/pound startとやるとデーモンが起動してくれました。この設定はロードバランサーの80番ポートでリクエストを待ち受け、それを101と102に同じ頻度で振り向けるというものです。
Poundを切った状態では、Chromeはhttp://vubntu00.it-ishin.com/なんてサイトはないよとなります。
しかし、/etc/init.d/pound startでPoundをスタートさせると次のようにJoomlaの画面になります。
なお、JoomlaのMySQLデータベースはリアルサーバーに作ってあり、仮想マシンvubuntu01,vubuntu02からアクセスするようにしています。Ubuntu14.04LTSではApacheのドキュメントルートは/var/www/htmlになっており、index.htmlもcssを使って見栄えが良くなっていますが、/var/www/Joomlをドキュメントルートにしてインストール作業を始めるべきでしょう。
Poundの公式サイトは、http://www.apsis.ch/pound/です。なお、nginxやLVS(Linux Virtual Server)などのソフトウェアを使ってもロードバランサーが構築できるようです。
※注意 何故か、sysv-rc-confでrun level の3と5で/etc/init.d/poundにチェックを入れても起動しません。run level 2のところにチェックを入れると、/usr/sbin/poundがデーモンとして立ち上がってくれますが、ログイン・プロンプトまで行きません。物理サーバーからSSHでログインして、sudo /etc/init.d/pound start &とやってもうまく行きません。今のところ、sudo virt-managerでオープンしてログインし、sudo /etc/init.d/pound start &と入力し、エンターキーを押すしかないようです。
※注意 原因がわかりました。DAEMON 0としていたため、Poundがデーモンモードで動かなかったのが原因でした。物理サーバーでPoundを同様に動作させても、同じ結果が得られました。
DAEMON 1とすると、デーモンモードで動きます。