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 $?

3.Run

-Sau khi đã cấu hình xong ta start service pen lên và ta gõ ip của pen server.Sau đó ta chờ hơn 1 phút để cập nhật tình trạng của server tùy vào bạn cấu hình httpd port bao nhiêu,port 80 ta đã dành cho pen nên trong trường hợp này mình dùng port 81 để check: