haproxy
Install
- Download haproxy and change directory to download directory
- Run make and make install as root
Make
To choose TARGET run
uname -a
Output:
Linux somehost 2.6.32-358.11.1.el6.x86_64 #1 SMP Wed May 15 10:48:38 EDT 2013 x86_64 x86_64 x86_64 GNU/Linux
Considering the above was kernel 2.6, using TARGET as below.
make TARGET=linux2628 USE_PCRE=1 USE_LIBCRYPT=1 USE_LINUX_SPLICE=1 USE_LINUX_TPROXY=1
Some options listed may not work - feel free to remove them such as USE_PCRE=1
Make Install
make install
haproxy typically gets installed at /usr/local/sbin/haproxy
Configuration
To configure, create a configuration file at chosen location. Preferred: /etc/haproxy/haproxy.cfg
- Load balance on port 8000
- Sticky sessions between multiple servers (someserver1 & someserver2)
- Add administration (port 7999)
global
daemon
maxconn 4096
defaults
mode http
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
frontend http-in
bind *:8000
default_backend servers
backend servers
retries 2
fullconn 4096
balance roundrobin
cookie SERVERID insert indirect nocache
server server01 someserver1:8080 check cookie s01
server server02 someserver1:8081 check cookie s02
server server03 someserver1:8082 check cookie s03
server server04 someserver2:8090 check cookie s04
server server05 someserver2:8091 check cookie s05
server server06 someserver2:8092 check cookie s06
listen stats :7999
mode http
stats enable
stats hide-version
stats realm Haproxy\ Statistics
stats uri /
Start
Simple way to start is as below. This runs as a daemon, since daemon is specified in the configuration. If not, add option -D.
haproxy -f /etc/haproxy/haproxy.cfg
Logging
Update /etc/rsyslog.conf and related
Edit /etc/rsyslog.conf and uncomment:
$ModLoad imudp $UDPServerRun 514
Edit /etc/rsyslog.d/haproxy.conf and append line:
local2.* /var/log/haproxy.log
Restart rsyslog:
service rsyslog restart
Change permissions on log file:
chmod o+r /var/log/haproxy.log chmod g+r /var/log/haproxy.log
Update /etc/haproxy/haproxy.cfg
Edit /etc/haproxy/haproxy.cfg:
Add line in global section:
log 127.0.0.1 local2
Add lines to frontend http-in section:
option httplog
log global
Restart haproxy