DESCRIPTION
HAProxy is a TCP/HTTP reverse proxy which is particularly suited for high availability environments. Indeed, it
can:
- route HTTP requests depending on statically assigned cookies ;
- spread the load among several servers while assuring server
persistence through the use of HTTP cookies ;
- switch to backup servers in the event a main one fails ;
- accept connections to special ports dedicated to service
monitoring ;
- stop accepting connections without breaking existing ones ;
- add/modify/delete HTTP headers both ways ;
- block requests matching a particular pattern ;
- hold clients to the right application server depending on
application cookies
- report detailed status as HTML pages to authenticated users from an
URI intercepted from the application.
It needs very little resource. Its event-driven architecture allows it to easily handle thousands of simultaneous
connections on hundreds of instances without risking the system's stability.
- 负载均衡
global
daemon
maxconn 256
defaults
mode tcp
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
frontend testhost
bind *:1998
default_backend servers
backend servers
server server52 127.0.0.1:52 check
server server872 127.0.0.1:872 check
server server42 127.0.0.1:42 check
retries 3
redispatch
- 灾难备份
global
daemon
maxconn 256
log 127.0.0.1 local3
pidfile /tmp/haproxy.pid
#stats socket /tmp/haproxy_1.5_dev_11.stats.socket
defaults
mode tcp
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
log 127.0.0.1 local3
option log-health-checks
frontend testhost
bind *:1998
default_backend servers
backend servers
server server52 127.0.0.1:52 check
server server872 127.0.0.1:872 check backup
- 热启动(修改config让程序立即生效)
#!/bin/bash
#haproxy_hot_reload_config.sh
#the program will restart the haproxy by using its hot reconfiguration
config=" /home/prj/haproxy_conf/haproxy.cfg.mysql212"
pidfile=`grep pidfile $config | awk '{print $2}'`
pid=`cat $pidfile`
status=-2
if [ -e /proc/$pid/exe ]; then
/usr/local/sbin/haproxy -D -f $config -sf $pid
status=0
else
/usr/local/sbin/haproxy -D -f $config
status=1
fi
echo $status
exit $status