From alex@vaio.alexdupre.com  Thu May  2 04:04:05 2002
Return-Path: <alex@vaio.alexdupre.com>
Received: from vaio.alexdupre.com (212-41-211-209.adsl.galactica.it [212.41.211.209])
	by hub.freebsd.org (Postfix) with ESMTP id D258C37B41C
	for <FreeBSD-gnats-submit@freebsd.org>; Thu,  2 May 2002 04:03:57 -0700 (PDT)
Received: from vaio.alexdupre.com (localhost [127.0.0.1])
	by vaio.alexdupre.com (8.12.2/8.12.2) with ESMTP id g42BAdUx013462
	for <FreeBSD-gnats-submit@freebsd.org>; Thu, 2 May 2002 13:10:39 +0200 (CEST)
	(envelope-from alex@vaio.alexdupre.com)
Received: (from alex@localhost)
	by vaio.alexdupre.com (8.12.2/8.12.2/Submit) id g42BAdVF013461;
	Thu, 2 May 2002 13:10:39 +0200 (CEST)
Message-Id: <200205021110.g42BAdVF013461@vaio.alexdupre.com>
Date: Thu, 2 May 2002 13:10:39 +0200 (CEST)
From: Alex Dupre <sysadmin@alexdupre.com>
Reply-To: Alex Dupre <sysadmin@alexdupre.com>
To: FreeBSD-gnats-submit@freebsd.org
Cc:
Subject: [New Ports] A Load Balacing System (Director + Monitor)
X-Send-Pr-Version: 3.113
X-GNATS-Notify:

>Number:         37661
>Category:       ports
>Synopsis:       [New Ports] A Load Balacing System (Director + Monitor)
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    nork
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Thu May 02 04:10:01 PDT 2002
>Closed-Date:    Thu May 16 10:32:35 PDT 2002
>Last-Modified:  Thu May 16 10:32:35 PDT 2002
>Originator:     Alex Dupre
>Release:        FreeBSD 4.5-ALEXDUPRE i386
>Organization:
>Environment:
System: FreeBSD vaio.alexdupre.com 4.5-ALEXDUPRE FreeBSD 4.5-ALEXDUPRE #0: Fri Apr 12 14:12:57 CEST 2002 alex@vaio.alexdupre.com:/usr/obj/usr/src/sys/VAIO i386


	
>Description:

net/loadd (A Load Balancing Daemon)
net/lmd   (A Load Monitor Daemon)

loadd is a daemon that communicate with ipfw Firewall via the DIVERT
sockets. You can easily configure a divert rule on your firewall and
redirect packets you want into the loadd system. Loadd check the
destination service and do a NAT on packets if the service must be
load balance. For choosing a host, loadd apply an algorithm that you
can configure.

For this first release, two algorithms are available
and you can found this features:

* Round-Robbin Algorithm (Very simple)
* Intelligence Load Sharing (Balancing with realtime load, work with
  lmd client on real servers)
* TCP supported (not UDP yet)
* Support multiples IP services (except SSL for the moment)
* Choose of IP aliasing
* Choose of port number to Load Balance
* Multiple daemons support on the same host without conflict

lmd is a daemon that monitors the server load and communicates
with loadd for Intellingence Load Sharing (Balancing with
realtime load).

Supported modules:

* http
	
>How-To-Repeat:
	
>Fix:

	

--- loadd.sh begins here ---
# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#	lmd/
#	lmd/Makefile
#	lmd/distinfo
#	lmd/files
#	lmd/files/patch-Makefile
#	lmd/files/patch-main.c
#	lmd/pkg-comment
#	lmd/pkg-descr
#	lmd/pkg-message
#	lmd/pkg-plist
#	loadd/
#	loadd/Makefile
#	loadd/distinfo
#	loadd/files
#	loadd/files/patch-Makefile
#	loadd/files/patch-define.h
#	loadd/files/patch-main.c
#	loadd/pkg-comment
#	loadd/pkg-descr
#	loadd/pkg-message
#	loadd/pkg-plist
#
echo c - lmd/
mkdir -p lmd/ > /dev/null 2>&1
echo x - lmd/Makefile
sed 's/^X//' >lmd/Makefile << 'END-of-lmd/Makefile'
X# New ports collection makefile for:	lmd
X# Date created:		Thu May 2 11:20:06 CET 2002
X# Whom:			Alex Dupre <sysadmin@alexdupre.com>
X#
X# $FreeBSD$
X#
X
XPORTNAME=	lmd
XPORTVERSION=	0.8
XCATEGORIES=	net
XMASTER_SITES=	http://www.bsdshell.net/download/
X
XMAINTAINER=	sysadmin@alexdupre.com
X
XDOCS=		INSTALL LICENSE README
X
Xpost-patch:
X	@${PERL} -pi -e "s|%%PREFIX%%|${PREFIX}|g" ${WRKSRC}/main.c
X
Xpost-install:
X.if !defined(NOPORTDOCS)
X	@${MKDIR} ${DOCSDIR}
X.for f in ${DOCS}
X	@${INSTALL_DATA} ${WRKSRC}/${f} ${DOCSDIR}
X.endfor
X.endif
X
X.include <bsd.port.mk>
END-of-lmd/Makefile
echo x - lmd/distinfo
sed 's/^X//' >lmd/distinfo << 'END-of-lmd/distinfo'
XMD5 (lmd-0.8.tar.gz) = 909e335b4a406d2b14c0db21e4840ab6
END-of-lmd/distinfo
echo c - lmd/files
mkdir -p lmd/files > /dev/null 2>&1
echo x - lmd/files/patch-Makefile
sed 's/^X//' >lmd/files/patch-Makefile << 'END-of-lmd/files/patch-Makefile'
X--- Makefile.orig	Thu May  2 12:12:12 2002
X+++ Makefile	Thu May  2 12:16:00 2002
X@@ -5,6 +5,8 @@
X #DEBUG=-DDEBUG -g
X LIBS=-L/usr/local/lib -lm
X 
X+all: lmd modules_check/ldd_http_module.so
X+
X lmd: ${OBJS} ${DYNLIB}
X 	gcc ${DEBUG} ${OPTS} ${OBJS} -o lmd ${LIBS}
X 
X@@ -17,15 +19,14 @@
X clean:
X 	rm -rf ${OBJS} lmd *.core *~ modules_check/*.so
X 
X-install: lmd modules_check/ldd_http_module.so
X+install:
X 	@echo "Installing files..."
X-	cp lmd /usr/local/sbin
X-	cp lmd.conf /usr/local/sbin
X-	cp modules_check/ldd_http_module.so /usr/local/lib
X-	ldconfig -m /usr/local/lib
X+	cp lmd ${PREFIX}/sbin
X+	cp lmd.conf ${PREFIX}/etc
X+	cp modules_check/ldd_http_module.so ${PREFIX}/lib
X 	@echo "##################################################"
X 	@echo "# !! IMPORTANT !! CONFIGURE YOUR LMD CLIENT WITH #"
X-	@echo "# THE /usr/local/etc/lmd.conf CONFIGURATION FILE #"
X+	@echo "# THE ${PREFIX}/etc/lmd.conf CONFIGURATION FILE #"
X 	@echo "# Just set loaddservers to the IP of your loadd  #"
X 	@echo "# server. You can specify multiple loadd servers #"
X 	@echo "# with the ',' separator.                        #"
END-of-lmd/files/patch-Makefile
echo x - lmd/files/patch-main.c
sed 's/^X//' >lmd/files/patch-main.c << 'END-of-lmd/files/patch-main.c'
X--- main.c.orig	Thu May  2 12:18:38 2002
X+++ main.c	Thu May  2 12:19:06 2002
X@@ -1,7 +1,7 @@
X #include "main.h"
X #include <math.h>
X #define TIMETOSLEEP 60
X-#define CONFIGFILE "/usr/local/etc/lmd.conf"
X+#define CONFIGFILE "%%PREFIX%%/etc/lmd.conf"
X 
X char bufferout[2][1024];
X char **loaddservers;
END-of-lmd/files/patch-main.c
echo x - lmd/pkg-comment
sed 's/^X//' >lmd/pkg-comment << 'END-of-lmd/pkg-comment'
XA Load Monitor Daemon
END-of-lmd/pkg-comment
echo x - lmd/pkg-descr
sed 's/^X//' >lmd/pkg-descr << 'END-of-lmd/pkg-descr'
Xlmd is a daemon that monitors the server load and communicates
Xwith loadd for Intellingence Load Sharing (Balancing with
Xrealtime load).
X
XSupported modules:
X
X* http
X
XWWW: http://www.bsdshell.net/hut_loadd.html
X
X- Alex Dupre
Xsysadmin@alexdupre.com
END-of-lmd/pkg-descr
echo x - lmd/pkg-message
sed 's/^X//' >lmd/pkg-message << 'END-of-lmd/pkg-message'
X##################################################
X# !! IMPORTANT !! CONFIGURE YOUR LMD CLIENT WITH #
X# THE /usr/local/etc/lmd.conf CONFIGURATION FILE #
X# Just set loaddservers to the IP of your loadd  #
X# server. You can specify multiple loadd servers #
X# with the ',' separator.                        #
X# Example: loaddservers = 63.2.1.3, 62.3.5.6     #
X##################################################
END-of-lmd/pkg-message
echo x - lmd/pkg-plist
sed 's/^X//' >lmd/pkg-plist << 'END-of-lmd/pkg-plist'
Xetc/lmd.conf
Xlib/ldd_http_module.so
Xsbin/lmd
X%%PORTDOCS%%share/doc/lmd/INSTALL
X%%PORTDOCS%%share/doc/lmd/LICENSE
X%%PORTDOCS%%share/doc/lmd/README
X%%PORTDOCS%%@dirrm share/doc/lmd
END-of-lmd/pkg-plist
echo c - loadd/
mkdir -p loadd/ > /dev/null 2>&1
echo x - loadd/Makefile
sed 's/^X//' >loadd/Makefile << 'END-of-loadd/Makefile'
X# New ports collection makefile for:	loadd
X# Date created:		Thu May 2 11:20:06 CET 2002
X# Whom:			Alex Dupre <sysadmin@alexdupre.com>
X#
X# $FreeBSD$
X#
X
XPORTNAME=	loadd
XPORTVERSION=	0.8
XCATEGORIES=	net
XMASTER_SITES=	http://www.bsdshell.net/download/
X
XMAINTAINER=	sysadmin@alexdupre.com
X
XLIB_DEPENDS=	glib12.3:${PORTSDIR}/devel/glib12
X
XDOCS=		INSTALL LICENSE README TODO
X
Xpost-patch:
X	@${PERL} -pi -e "s|%%PREFIX%%|${PREFIX}|g" ${WRKSRC}/define.h \
X		${WRKSRC}/main.c
X
Xpost-install:
X.if !defined(NOPORTDOCS)
X	@${MKDIR} ${DOCSDIR}
X.for f in ${DOCS}
X	@${INSTALL_DATA} ${WRKSRC}/${f} ${DOCSDIR}
X.endfor
X.endif
X
X.include <bsd.port.mk>
END-of-loadd/Makefile
echo x - loadd/distinfo
sed 's/^X//' >loadd/distinfo << 'END-of-loadd/distinfo'
XMD5 (loadd-0.8.tar.gz) = c6cca2534bd987c4ef408033ebf1a0bd
END-of-loadd/distinfo
echo c - loadd/files
mkdir -p loadd/files > /dev/null 2>&1
echo x - loadd/files/patch-Makefile
sed 's/^X//' >loadd/files/patch-Makefile << 'END-of-loadd/files/patch-Makefile'
X--- Makefile.orig	Sun Nov 25 23:44:48 2001
X+++ Makefile	Thu May  2 12:45:07 2002
X@@ -10,6 +10,8 @@
X LIBS=-L/usr/local/lib `glib12-config --libs`
X INCLUDE=`glib12-config --cflags`
X 
X+all: loadd
X+
X loadd: ${OBJS}
X 	gcc ${INCLUDE} ${DEFINE} ${DEBUG} ${OPTS} ${OBJS} -o loadd ${LIBS}
X 
X@@ -20,17 +22,17 @@
X 	rm -rf ${OBJS} loadd *.core *~
X 
X install:
X-	cp loadd /usr/local/libexec
X-	cp loadd.conf /usr/local/etc
X+	cp loadd ${PREFIX}/libexec
X+	cp loadd.conf ${PREFIX}/etc
X 	@echo "#######################################################################"
X-	@echo "# Please modify the configuration file /usr/local/etc/loadd.conf      #"
X-	@echo "# before launching /usr/local/libexec/loadd                           #"
X+	@echo "# Please modify the configuration file ${PREFIX}/etc/loadd.conf      #"
X+	@echo "# before launching ${PREFIX}/libexec/loadd                           #"
X 	@echo "# don't forget to recompile your kernel with DIVERT and               #"
X 	@echo "# IPFIREWALL options. Don't forget to specify a rule in the ipfw      #"
X 	@echo "# firewall like natd: ipfw add divert 8670 tcp from any to any        #"
X 	@echo "# 8670 is the default port, you can choose a different port by        #"
X 	@echo "# running loadd with -p option like                                   #"
X-	@echo "# /usr/local/libexec/loadd -p 8671                                    #"
X+	@echo "# ${PREFIX}/libexec/loadd -p 8671                                    #"
X 	@echo "# ipfw add divert 8671 tcp from any to any                            #"
X 	@echo "# !! IMPORTANT !! There is no support for UDP at this time.           #"
X 	@echo "# You cannot use loadsharing method (broken) use intlloadsharing      #"
END-of-loadd/files/patch-Makefile
echo x - loadd/files/patch-define.h
sed 's/^X//' >loadd/files/patch-define.h << 'END-of-loadd/files/patch-define.h'
X--- define.h.orig	Thu May  2 11:35:58 2002
X+++ define.h	Thu May  2 11:36:23 2002
X@@ -5,7 +5,7 @@
X #define MONITORINGPORT 8670 /* En UDP */
X #define PINGINTERVAL 60000000
X #define REFRESHTIMEOUT 1
X-#define CONFFILE "/usr/local/etc/loadd2.conf"
X+#define CONFFILE "%%PREFIX%%/etc/loadd.conf"
X #define CALC_CHECKSUM(acc, cksum) { \
X         acc += cksum; \
X         if (acc < 0) \
END-of-loadd/files/patch-define.h
echo x - loadd/files/patch-main.c
sed 's/^X//' >loadd/files/patch-main.c << 'END-of-loadd/files/patch-main.c'
X--- main.c.orig	Thu May  2 11:36:52 2002
X+++ main.c	Thu May  2 11:37:11 2002
X@@ -270,7 +270,7 @@
X 				break;
X 		}
X 	if (! *conffile)
X-		strncpy(conffile, "/usr/local/etc/loadd.conf", sizeof(conffile) - 1);
X+		strncpy(conffile, "%%PREFIX%%/etc/loadd.conf", sizeof(conffile) - 1);
X 	argc -= optind;
X 	argv += optind;
X 	ht = loadd_main_init(conffile);
END-of-loadd/files/patch-main.c
echo x - loadd/pkg-comment
sed 's/^X//' >loadd/pkg-comment << 'END-of-loadd/pkg-comment'
XA Load Balancing Daemon
END-of-loadd/pkg-comment
echo x - loadd/pkg-descr
sed 's/^X//' >loadd/pkg-descr << 'END-of-loadd/pkg-descr'
Xloadd is a daemon that communicate with ipfw Firewall via the DIVERT
Xsockets. You can easily configure a divert rule on your firewall and
Xredirect packets you want into the loadd system. Loadd check the
Xdestination service and do a NAT on packets if the service must be
Xload balance. For choosing a host, loadd apply an algorithm that you
Xcan configure.
X
XFor this first release, two algorithms are available
Xand you can found this features:
X
X* Round-Robbin Algorithm (Very simple)
X* Intelligence Load Sharing (Balancing with realtime load, work with
X  lmd client on real servers)
X* TCP supported (not UDP yet)
X* Support multiples IP services (except SSL for the moment)
X* Choose of IP aliasing
X* Choose of port number to Load Balance
X* Multiple daemons support on the same host without conflict
X
XWWW: http://www.bsdshell.net/hut_loadd.html
X
X- Alex Dupre
Xsysadmin@alexdupre.com
END-of-loadd/pkg-descr
echo x - loadd/pkg-message
sed 's/^X//' >loadd/pkg-message << 'END-of-loadd/pkg-message'
X#######################################################################
X# Please modify the configuration file /usr/local/etc/loadd.conf      #
X# before launching /usr/local/libexec/loadd                           #
X# don't forget to recompile your kernel with DIVERT and               #
X# IPFIREWALL options. Don't forget to specify a rule in the ipfw      #
X# firewall like natd: ipfw add divert 8670 tcp from any to any        #
X# 8670 is the default port, you can choose a different port by        #
X# running loadd with -p option like                                   #
X# /usr/local/libexec/loadd -p 8671                                    #
X# ipfw add divert 8671 tcp from any to any                            #
X# !! IMPORTANT !! There is no support for UDP at this time.           #
X# You cannot use loadsharing method (broken) use intlloadsharing      #
X# insteed and don't forget to launch lmd on server(s) to load balance #
X#######################################################################
END-of-loadd/pkg-message
echo x - loadd/pkg-plist
sed 's/^X//' >loadd/pkg-plist << 'END-of-loadd/pkg-plist'
Xetc/loadd.conf
Xlibexec/loadd
X%%PORTDOCS%%share/doc/loadd/INSTALL
X%%PORTDOCS%%share/doc/loadd/LICENSE
X%%PORTDOCS%%share/doc/loadd/README
X%%PORTDOCS%%share/doc/loadd/TODO
X%%PORTDOCS%%@dirrm share/doc/loadd
END-of-loadd/pkg-plist
exit
--- loadd.sh ends here ---


>Release-Note:
>Audit-Trail:
State-Changed-From-To: open->analyzed 
State-Changed-By: nork 
State-Changed-When: Tue May 14 00:29:52 PDT 2002 
State-Changed-Why:  
I'll handle these. 


Responsible-Changed-From-To: freebsd-ports->nork 
Responsible-Changed-By: nork 
Responsible-Changed-When: Tue May 14 00:29:52 PDT 2002 
Responsible-Changed-Why:  
I'll handle these. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=37661 
State-Changed-From-To: analyzed->closed 
State-Changed-By: nork 
State-Changed-When: Thu May 16 10:31:20 PDT 2002 
State-Changed-Why:  
Committed, thanks! 

http://www.freebsd.org/cgi/query-pr.cgi?pr=37661 
>Unformatted:
