add HAProxy, a high performance HTTP/TCP reverse proxy and load balancer - thanks...
authorJo-Philipp Wich <jow@openwrt.org>
Mon, 21 Dec 2009 20:58:46 +0000 (20:58 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Mon, 21 Dec 2009 20:58:46 +0000 (20:58 +0000)
SVN-Revision: 18880

net/haproxy/Makefile [new file with mode: 0644]
net/haproxy/files/haproxy.cfg [new file with mode: 0644]
net/haproxy/files/haproxy.init [new file with mode: 0644]

diff --git a/net/haproxy/Makefile b/net/haproxy/Makefile
new file mode 100644 (file)
index 0000000..c06906f
--- /dev/null
@@ -0,0 +1,55 @@
+#
+# Copyright (C) 2009 Thomas Heil <heil@terminal-consulting.de>
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=haproxy
+PKG_VERSION:=1.3.22
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://haproxy.1wt.eu/download/1.3/src/
+PKG_MD5SUM:=b84e0935cfea99eda43645d53bb82367
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/haproxy
+  SECTION:=net
+  CATEGORY:=Network
+  DEPENDS:=+libpcre +libltdl
+  TITLE:=The Reliable, High Performance TCP/HTTP Load Balancer
+  URL:=http://haproxy.1wt.eu/
+  SUBMENU:=Proxy Servers
+endef
+
+define Package/haproxy/conffiles
+/etc/haproxy.cfg
+endef
+
+define Package/haproxy/description
+  Open source High Performance TCP/HTTP Load Balancer
+endef
+
+define Build/Compile
+       $(MAKE) TARGET=$(if $(CONFIG_LINUX_2_4),linux24,linux26) -C $(PKG_BUILD_DIR) \
+               DESTDIR="$(PKG_INSTALL_DIR)" \
+               CC="$(TARGET_CC)" \
+               CFLAGS="$(TARGET_CFLAGS)" \
+               LD="$(TARGET_CC)" \
+               LDFLAGS="$(TARGET_LDFLAGS)" \
+               all install
+endef
+
+define Package/haproxy/install
+       $(INSTALL_DIR) $(1)/usr/sbin
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/haproxy $(1)/usr/sbin/
+       $(INSTALL_DIR) $(1)/etc
+       $(INSTALL_CONF) ./files/haproxy.cfg $(1)/etc/
+       $(INSTALL_DIR) $(1)/etc/init.d
+       $(INSTALL_BIN) ./files/haproxy.init $(1)/etc/init.d/haproxy
+endef
+
+$(eval $(call BuildPackage,haproxy))
diff --git a/net/haproxy/files/haproxy.cfg b/net/haproxy/files/haproxy.cfg
new file mode 100644 (file)
index 0000000..09ca45c
--- /dev/null
@@ -0,0 +1,96 @@
+# Example configuration file for HAProxy 1.3, refer to the url below for
+# a full documentation and examples for configuration:
+# http://haproxy.1wt.eu/download/1.3/doc/configuration.txt
+
+
+# Global parameters
+global
+
+       # Log events to a remote syslog server at given address using the
+       # specified facility and verbosity level. Multiple log options 
+       # are allowed.
+       #log 10.0.0.1 daemon info
+
+       # Specifiy the maximum number of allowed connections.
+       maxconn 32000
+
+       # Raise the ulimit for the maximum allowed number of open socket
+       # descriptors per process. This is usually at least twice the
+       # number of allowed connections (maxconn * 2 + nb_servers + 1) .
+       ulimit-n 65535
+
+       # Drop privileges (setuid, setgid), default is "root" on OpenWrt.
+       uid 0
+       gid 0
+
+       # Perform chroot into the specified directory.
+       #chroot /var/run/haproxy/
+
+       # Daemonize on startup
+       daemon
+
+       # Enable debugging
+       #debug
+
+       # Spawn given number of processes and distribute load among them,
+       # used for multi-core environments or to circumvent per-process
+       # limits like number of open file descriptors. Default is 1.
+       #nbproc 2
+
+
+# Example HTTP proxy listener
+listen my_http_proxy
+
+       # Bind to port 80 and 443 on all interfaces (0.0.0.0)
+       bind :80,:443
+
+       # We're proxying HTTP here...
+       mode http
+
+       # Simple HTTP round robin over two servers using the specified
+       # source ip 192.168.1.1 .
+       balance roundrobin
+       server server01 192.168.1.10:80 source 192.168.1.1
+       server server02 192.168.1.20:80 source 192.168.1.1
+
+       # Serve an internal statistics page on /stats:
+       stats enable
+       stats uri /stats
+
+       # Enable HTTP basic auth for the statistics:
+       stats realm HA_Stats
+       stats auth username:password
+
+
+# Example SMTP proxy listener
+listen my_smtp_proxy
+
+       # Disable this instance without commenting out the section.
+       disable
+
+       # Bind to port 25 and 587 on localhost
+       bind 127.0.0.1:25,127.0.0.1:587
+
+       # This is a TCP proxy
+       mode tcp
+
+       # Round robin load balancing over two servers on port 123 forcing
+       # the address 192.168.1.1 and port 25 as source.
+       balance roundrobin
+       server server01 192.168.1.10:123 source 192.168.1.1:25
+       server server02 192.168.1.20:123 source 192.168.1.1:25
+       
+
+# Special health check listener for integration with external load
+# balancers.
+listen local_health_check
+
+       # Listen on port 60000
+       bind :60000
+
+       # This is a health check
+       mode health
+
+       # Enable HTTP-style responses: "HTTP/1.0 200 OK"
+       # else just print "OK".
+       #option httpchk
diff --git a/net/haproxy/files/haproxy.init b/net/haproxy/files/haproxy.init
new file mode 100644 (file)
index 0000000..fc6b8ff
--- /dev/null
@@ -0,0 +1,26 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2009 OpenWrt.org
+
+START=99
+STOP=80
+
+HAPROXY_BIN="/usr/sbin/haproxy"
+HAPROXY_CONFIG="/etc/haproxy.cfg"
+HAPROXY_PID="/var/run/haproxy.pid"
+
+start() {
+       [ -x "$HAPROXY_BIN" ] || return 1
+
+       start-stop-daemon -S -x $HAPROXY_BIN -- \
+               -f "$HAPROXY_CONFIG" -V -D -d -p "$HAPROXY_PID"
+}
+
+stop() {
+       start-stop-daemon -K -x $HAPROXY_BIN -p $HAPROXY_PID
+       rm -f $HAPROXY_PID
+}
+
+reload() {
+       [ ! -f "$HAPROXY_PID" ] && start
+       $HAPROXY_BIN -f $HAPROXY_CONFIG -p $HAPROXY_PID -st $(cat $HAPROXY_PID)
+}