Pen : HTTP を負荷分散2015/01/31 |
|
シンプル軽量な TCP ベースの負荷分散ソフトウェア Pen をインストールします。
TCP プロトコルベースのため、SMTP, FTP, LDAP等々の負荷分散も可能です。 例として、ここでは以下のような環境で構築します。
|
--------+--------------------------------------------------------------------
|
+-------------------+--------------------+--------------------+
|10.0.0.30 |10.0.0.51 |10.0.0.52 |10.0.0.53
+------+-----+ +-------+------+ +-------+------+ +-------+------+
| Frontend | | Backend#1 | | Backend#2 | | Backend#3 |
| Pen Server | | Web Server | | Web Server | | Web Server |
+------------+ +--------------+ +--------------+ +--------------+
|
|
Pen をインストールした Frontend サーバーへの HTTP 通信を Backend#1, Backend#2, Backend#3 の
Webサーバーへ負荷分散するように設定します。
|
|
| [1] | Pen をインストールします。 |
|
# EPELからインストール [root@dlp ~]# yum --enablerepo=epel -y install pen
|
| [2] | Pen の設定です。 |
|
[root@dlp ~]#
vi /etc/pen.conf # 新規作成 # ログファイル LOGFILE=/var/log/pen.log # ステータス出力先ファイル WEBFILE=/var/www/pen/webstats.html # コントロールポート CONTROL=127.0.0.1:10080 # 最大接続数 MAX_CONNECTIONS=256 # X-Forwarded-For ヘッダーを送る XFORWARDEDFOR=true # Round-Robin モード ROUNDROBIN=true # 待ち受けポート PORT=80 # バックエンドサーバーの数 BACKEND=3 # バックエンドサーバーを定義 SERVER1=10.0.0.51:80 SERVER2=10.0.0.52:80 SERVER2=10.0.0.53:80
#!/bin/bash
# pend: Start/Stop Pend
# chkconfig: - 90 10
# description: Pen is a light weight simple load balancer.
# pidfile: /var/run/pen.pid
. /etc/rc.d/init.d/functions
. /etc/pen.conf
LOCKFILE="/var/lock/subsys/pen"
PID=/var/run/pen.pid
PROG=/usr/bin/pen
PROGNAME=Pend
RETVAL=0
start() {
SERVER=`grep "^SERVER" /etc/pen.conf | cut -d= -f2`
[ $XFORWARDEDFOR = "true" ] && SERVER="-H $SERVER"
[ $ROUNDROBIN = "true" ] && SERVER="-r $SERVER"
[ $SSLCERTS ] && SERVER="-E $SSLCERTS $SERVER"
echo -n $"Starting $PROGNAME: "
daemon $PROG -w $WEBFILE -x $MAX_CONNECTIONS -p $PID -l $LOGFILE -C $CONTROL -S $BACKEND $PORT $SERVER
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch $LOCKFILE
return $RETVAL
}
stop() {
echo -n $"Stopping $PROGNAME: "
killproc $PROG
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f $PID $LOCKFILE
return $RETVAL
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status -p "$PID" -l $PROG $PROGNAME
;;
restart)
stop
start
;;
*)
echo $"Usage: $0 {start|stop|status|restart}"
exit 1
esac
exit $?
chmod 755 /etc/rc.d/init.d/pend [root@dlp ~]# /etc/rc.d/init.d/pend start Starting Pend: [ OK ] [root@dlp ~]# chkconfig --add pend [root@dlp ~]# chkconfig pend on |
| [3] | バックエンド Webサーバーで X-Forwarded-For ヘッダーをロギングするよう設定しておきます。 |
|
[root@www ~]#
vi /etc/httpd/conf/httpd.conf # 497行目:変更 LogFormat " \"%{X-Forwarded-For}i\" %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
/etc/rc.d/init.d/httpd restart |
| [4] | 任意のクライアントから Pen サーバーへ HTTP アクセスし、何度かリロードしたりバックエンドサーバーの一部を手動で停止する等して、動作を確認してください。 |
|
|
| Sponsored Link |
|
|