From 0b5f8b2aa9d6f2bf06c45061c9c01f5febb9ff58 Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Mon, 21 Dec 2009 20:58:46 +0000 Subject: [PATCH] [packages] add HAProxy, a high performance HTTP/TCP reverse proxy and load balancer - thanks Thomas Heil SVN-Revision: 18880 --- net/haproxy/Makefile | 55 +++++++++++++++++++ net/haproxy/files/haproxy.cfg | 96 ++++++++++++++++++++++++++++++++++ net/haproxy/files/haproxy.init | 26 +++++++++ 3 files changed, 177 insertions(+) create mode 100644 net/haproxy/Makefile create mode 100644 net/haproxy/files/haproxy.cfg create mode 100644 net/haproxy/files/haproxy.init diff --git a/net/haproxy/Makefile b/net/haproxy/Makefile new file mode 100644 index 0000000000..c06906f6f7 --- /dev/null +++ b/net/haproxy/Makefile @@ -0,0 +1,55 @@ +# +# Copyright (C) 2009 Thomas Heil +# +# 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 index 0000000000..09ca45c673 --- /dev/null +++ b/net/haproxy/files/haproxy.cfg @@ -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 index 0000000000..fc6b8ff300 --- /dev/null +++ b/net/haproxy/files/haproxy.init @@ -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) +} -- 2.30.2