Pen simple load balancer for tcp

Pen là một ứng dụng dùng đê phân tải cho giao thức tcp(http,ftp,imap,pop…)  nhưng với cấu hình hết sức đơn giản,không cần phải cấu hình phức tạp như các load balancer khác.Nó cũng cho phép khi một server trong farm bị chết Pen sẽ tự động loại bỏ ra.

Với Pen ta có thể quy định một client được phép tạo bao  nhiêu kết nối đến server và một server có bao nhiêu client kết nối vào mặc định là 2048.Sau đây ta sẽ cài đặt và test với  cấu hình như sau:

1. Pen server 192.168.137.128
2. Web server 1 192.168.137.133
3. Web server 2 192.168.137.134

1.Install

–   wget http://siag.nu/pub/pen/pen-0.18.0.tar.gz
tar -xf pen-0.18.0.tar.gz
cd pen-0.18.0
ls
./configure
make

make install
Hoặc các bạn có thể download file rpm mà mình đã compile sẵn dành cho các máy i386

2.Config

– Source của pen không có file để start pen theo kiểu service như các service thông dụng trên linux.Đây là file init dùng để start pen.
– Trong file init mình đã bao gồm luôn việc xuất các thông tin về server pen như số server,client,connection đến file html.Để coi file html các bạn phải httpd vào bằng cách yum install httpd.Và file html mình output mặc định ra /var/www/html/index.html.

– Để update tình trạng server pen ra file html.Ta cấu hình  thêm phần này nữa :

cp /usr/local/doc/pen/penstats /usr/local/bin/


[root@an ~]# vi /usr/local/bin/penstats
#!/bin/sh
PIDFILE=/var/run/pen.pid-80
WEBFILE=/var/www/html/index.html
kill -USR1 `cat $PIDFILE`

sleep 2
echo “Content-type: text/html”
echo
cat $WEBFILE

[root@an ~]# chmod 755 /usr/local/bin/penstats
[root@lan ~]# crontab -e
*/1 * * * * /usr/local/bin/penstats

– Và sau đầy là cấu hình của file init:

#!/bin/bash

#
# Pen: Starting Pen
#
# chkconfig: 345 93 92
# description:Simple load-balancer
# processname: pen

. /etc/rc.d/init.d/functions

pen=”/usr/local/bin/pen”

lockfile=”/var/lock/subsys/pen”
WEBFILE=/var/www/html/index.html
prog=”pen”
RETVAL=0

# PID file
PID=/var/run/pen.pid-80

# log file
LOGFILE=/var/log/pen.log

# control port
CONTROL=800

# max connections
MAX_CONNECTIONS=500

# port
PORT=80

# number of servers
SERVERS=2

# IP of a server #1

SERVER1=192.168.137.133:80

# IP of a server #2
SERVER2=192.168.137.134:80

start() {
echo -n $”Starting $prog: ”
daemon $pen -w $WEBFILE -x $MAX_CONNECTIONS -S $SERVERS -p $PID -l $LOGFILE -C 192.168.137.128:800 -r $PORT $SERVER1 $SERVER2
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch $lockfile

return $RETVAL
}
stop() {
echo -n $”Stopping $prog: ”
killproc $pen
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f $lockfile

return $RETVAL
}
case “$1″ in
start)
start
;;
stop)
stop
;;

restart)
stop
start
;;
status)
status $pen
;;
*)
echo “Usage: $prog {start|stop|restart|status}”

exit 1
esac

exit $?

 

Nguyễn Thăng Long (kenhgiaiphap.vn)

About Tony Nguyễn
Tôi tên Tony tự Tèo trú tại thôn Tám, Trảng Thanh tỉnh Thừa Thiên. Thưở thiếu thời trí tuệ tôi thường thường, tuy thế tính tình thật thà thẳng thắng, thích thi thơ ...

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: