This example is based on follwing environmet.
(1) lan.server-linux.info [192.168.0.20] - Pen Server
(2) ns.server-linux.info [192.168.0.17] - Web Server #1
(3) [192.168.0.18] - Web Server #2
[1] Install and configure Pen
[root@lan ~]# wget
[root@lan ~]# tar zxvf pen-0.18.0.tar.gz
[root@lan ~]# cd pen-0.18.0
[root@lan pen-0.18.0]# ./configure
[root@lan pen-0.18.0]# make
[root@lan pen-0.18.0]# checkinstall
# create RPM
[root@lan pen-0.18.0]# cd /usr/src/redhat/RPMS/i386
[root@lan i386]# rpm -Uvh pen-0.18.0-1.i386.rpm
Preparing...
################################ [100%]
pen
################################ [100%]
[root@lan i386]# cd
[root@lan ~]# vi /etc/rc.d/init.d/pen
# make scripts
# an example
#!/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"
prog="pen"
RETVAL=0
# PID file
PID=/var/run/pen.pid-80
# log file
LOGFILE=/var/log/pen.log
# control port
CONTROL=localhost:10080
# max connections
MAX_CONNECTIONS=500
# port
PORT=80
# number of servers
SERVERS=2
# IP of a server #1
SERVER1=192.168.0.17:80
# IP of a server #2
SERVER2=192.168.0.18:80
start() {
echo -n $"Starting $prog: "
daemon $pen -x $MAX_CONNECTIONS -S $SERVERS -p $PID -l $LOGFILE -C $CONTROL -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 $?
[root@lan ~]# vi /etc/logrotate.d/pen
# an example
/var/log/pen.log {
daily
copytruncate
compress
notifempty
missingok
postrotate
/etc/rc.d/init.d/pen restart 2>&1 > /dev/null || true
endscript
}
[root@lan ~]# chmod 755 /etc/rc.d/init.d/pen
[root@lan ~]# /etc/rc.d/init.d/pen start
Starting pen: [ OK ]
[root@lan ~]# chkconfig --add pen
[root@lan ~]# chkconfig pen on
[2] Access to Pen server with web browser. A backend server answers normally like below.
[3]
Stop httpd on a server answering now and access to pen server again.
Another backend server answers normally like below.
[4] Configure a tool that shows status of Pen from web browser.
[root@lan ~]# vi /etc/rc.d/init.d/pen
# add some lines in a scripts that is made in [1] section
# line 16: specify html file
WEBFILE=/var/www/html/pen/index.html
PID=/var/run/pen.pid-80
LOGFILE=/var/log/pen.log
# add options
daemon $pen -w $WEBFILE -x $MAX_CONNECTIONS -S $SERVERS -p $PID -l $LOGFILE -C $CONTROL -r $PORT $SERVER1 $SERVER2
[root@lan ~]# cp /usr/local/doc/pen/penstats /usr/local/bin/
[root@lan ~]# vi /usr/local/bin/penstats
#!/bin/sh
PENHOME=/home/ulric/Projekt/pen
PIDFILE=/var/run/pen.pid-80
# change
WEBFILE=/var/www/html/pen/index.html
# change
# This will make pen save its stats
kill -USR1 `cat $PIDFILE`
# We don't know how long it will take; wait a few seconds
sleep 2
# And display the results
echo "Content-type: text/html"
echo
cat $WEBFILE
[root@lan ~]# /etc/rc.d/init.d/pen restart
Stopping pen: [ OK ]
Starting pen: [ OK ]
[root@lan ~]# chmod 755 /usr/local/bin/penstats
[root@lan ~]# /usr/local/bin/penstats # run
[root@lan ~]# crontab -e
*/5 * * * * /usr/local/bin/penstats
[5] Access to an URL you set. httpd is also needed to run, of course.
阅读(1916) | 评论(0) | 转发(0) |