• Ubuntuに関連したハード、ソフトの備忘録サイトです

Poundで仮想ロードバランサーを構築する【暫定投稿】


サーバーへのアクセスが多くなり、負荷がかかってくると必要になるのがロードバランサーです。サイト管理者のサイトはそんなことはないのですが、KVMで仮想マシンを作成できるので、Poundを使った簡易ロードバランサーを作ってみました。

Indel Corei5、メモリ24GバイトのUbuntuマシにKVMを入れて、次のような仮想マシンを作ってみみました。

  • vubuntu00.it-ishin.com➤Poundを使った簡易ロードバランサー
  • vubuntu01.it-ishin.com➤Joomlaを入れたWebサーバー、FTPサーバー、SSHサーバー
  • vubunbu01.it-ishin.com➤Joomlaを入れたWebサーバー、FTPサーバー、SSHサーバー
  • ubuntu03.it-ishin.com➤Ubuntu14.04LTSのリアル・サーバー兼データベース・サーバー

こちらのサイトhttps://help.ubuntu.com/community/Poundを参考にしました。

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/なんてサイトはないよとなります。

pound01

しかし、/etc/init.d/pound startでPoundをスタートさせると次のようにJoomlaの画面になります。

pound02

 

なお、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とすると、デーモンモードで動きます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA