-
-
Save christos/10171811 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
### BEGIN INIT INFO | |
# Provides: haproxy | |
# Required-Start: $local_fs $network $remote_fs | |
# Required-Stop: $local_fs $remote_fs | |
# Default-Start: 2 3 4 5 | |
# Default-Stop: 0 1 6 | |
# Short-Description: fast and reliable load balancing reverse proxy | |
# Description: This file should be used to start and stop haproxy. | |
### END INIT INFO | |
# Author: Arnaud Cornet <[email protected]> | |
PATH=/sbin:/usr/sbin:/bin:/usr/bin | |
PIDFILE=/var/run/haproxy.pid | |
CONFIG=/etc/haproxy/haproxy.cfg | |
HAPROXY=/usr/local/sbin/haproxy | |
CONFIGTEST_LOG=/var/log/haproxy_configtest.log | |
EXTRAOPTS= | |
ENABLED=1 | |
test -x $HAPROXY || exit 0 | |
test -f "$CONFIG" || exit 0 | |
if [ -e /etc/default/haproxy ]; then | |
. /etc/default/haproxy | |
fi | |
test "$ENABLED" != "0" || exit 0 | |
[ -f /etc/default/rcS ] && . /etc/default/rcS | |
. /lib/lsb/init-functions | |
haproxy_start() | |
{ | |
start-stop-daemon --start --pidfile "$PIDFILE" \ | |
--exec $HAPROXY -- -f "$CONFIG" -D -p "$PIDFILE" \ | |
$EXTRAOPTS || return 2 | |
return 0 | |
} | |
haproxy_stop() | |
{ | |
if [ ! -f $PIDFILE ] ; then | |
# This is a success according to LSB | |
return 0 | |
fi | |
for pid in $(cat $PIDFILE) ; do | |
/bin/kill $pid || return 4 | |
done | |
rm -f $PIDFILE | |
return 0 | |
} | |
haproxy_reload() | |
{ | |
$HAPROXY -f "$CONFIG" -p $PIDFILE -D $EXTRAOPTS -sf $(cat $PIDFILE) \ | |
|| return 2 | |
return 0 | |
} | |
haproxy_status() | |
{ | |
if [ ! -f $PIDFILE ] ; then | |
# program not running | |
return 3 | |
fi | |
for pid in $(cat $PIDFILE) ; do | |
if ! ps --no-headers p "$pid" | grep haproxy > /dev/null ; then | |
# program running, bogus pidfile | |
return 1 | |
fi | |
done | |
return 0 | |
} | |
haproxy_configtest() | |
{ | |
$HAPROXY -f "$CONFIG" -c > "$CONFIGTEST_LOG" 2>&1 | |
ret=$? | |
if [ $ret -eq 0 ]; then | |
# Valid config - remove $CONFIGTEST_LOG | |
rm "$CONFIGTEST_LOG" | |
fi | |
return $ret | |
} | |
case "$1" in | |
start) | |
log_daemon_msg "Starting haproxy" "haproxy" | |
haproxy_start | |
ret=$? | |
case "$ret" in | |
0) | |
log_end_msg 0 | |
;; | |
1) | |
log_end_msg 1 | |
echo "pid file '$PIDFILE' found, haproxy not started." | |
;; | |
2) | |
log_end_msg 1 | |
;; | |
esac | |
exit $ret | |
;; | |
stop) | |
log_daemon_msg "Stopping haproxy" "haproxy" | |
haproxy_stop | |
ret=$? | |
case "$ret" in | |
0|1) | |
log_end_msg 0 | |
;; | |
2) | |
log_end_msg 1 | |
;; | |
esac | |
exit $ret | |
;; | |
reload|force-reload) | |
log_daemon_msg "Reloading haproxy" "haproxy" | |
haproxy_reload | |
case "$?" in | |
0|1) | |
log_end_msg 0 | |
;; | |
2) | |
log_end_msg 1 | |
;; | |
esac | |
;; | |
restart) | |
log_daemon_msg "Checking haproxy configuration" "haproxy" | |
haproxy_configtest | |
ret=$? | |
case "$ret" in | |
0) | |
log_end_msg 0 | |
;; | |
1) | |
log_end_msg 1 | |
echo "Restart process aborted." | |
echo "Check $CONFIGTEST_LOG for details." | |
# Abort restart | |
exit $ret | |
;; | |
esac | |
log_daemon_msg "Restarting haproxy" "haproxy" | |
haproxy_stop | |
haproxy_start | |
case "$?" in | |
0) | |
log_end_msg 0 | |
;; | |
1) | |
log_end_msg 1 | |
;; | |
2) | |
log_end_msg 1 | |
;; | |
esac | |
;; | |
status) | |
haproxy_status | |
ret=$? | |
case "$ret" in | |
0) | |
echo "haproxy is running." | |
;; | |
1) | |
echo "haproxy dead, but $PIDFILE exists." | |
;; | |
*) | |
echo "haproxy not running." | |
;; | |
esac | |
exit $ret | |
;; | |
configtest) | |
haproxy_configtest | |
ret=$? | |
case "$ret" in | |
0) | |
echo "haproxy configuration is valid." | |
;; | |
1) | |
echo "haproxy configuration is NOT valid. Check $CONFIGTEST_LOG for details." | |
;; | |
esac | |
exit $ret | |
;; | |
*) | |
echo "Usage: /etc/init.d/haproxy {start|stop|reload|restart|status|configtest}" | |
exit 2 | |
;; | |
esac | |
: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
global | |
daemon | |
maxconn 256 | |
defaults | |
mode http | |
timeout connect 5000ms | |
timeout client 50000ms | |
timeout server 50000ms | |
frontend http-in | |
bind *:80 | |
default_backend neo4j-slaves | |
backend neo4j-slaves | |
option httpchk GET /db/manage/server/ha/slave | |
server s1 10.0.1.10:7474 maxconn 32 check | |
server s2 10.0.1.11:7474 maxconn 32 check | |
server s3 10.0.1.12:7474 maxconn 32 check | |
listen admin | |
bind *:8080 | |
stats enable |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
apt-get build-dep -y haproxy | |
apt-get install -y libssl-dev | |
wget http://haproxy.1wt.eu/download/1.5/src/devel/haproxy-1.5-dev21.tar.gz | |
tar xzvf haproxy-1.5-dev21.tar.gz | |
cd haproxy-1.5-dev21/ | |
make TARGET="linux26" USE_STATIC_PCRE=1 USE_OPENSSL=1 | |
make install | |
curl https://gist.github.com/luhn/9038945/raw/haproxy.initd > /etc/init.d/haproxy | |
chmod +x /etc/init.d/haproxy | |
mkdir /etc/haproxy | |
update-rc.d haproxy defaults | |
adduser --system haproxy | |
groupadd haproxy | |
usermod -G haproxy haproxy | |
curl https://gist.github.com/luhn/9038945/raw/haproxy.sample.cfg > /etc/haproxy/haproxy.cfg |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment