参考文章
haproxy+keepalived实现高可用负载均衡
http://www.cnblogs.com/dkblog/archive/2011/07/06/2098949.html
HAProxy配置使用说明
http://blog.appleandroid.com/post/450/
 
Haproxy是一个可靠,高性能的tcp/http负载均衡器。Haproxy配置起来要比lvs简单很多,功能方面也更丰富。Haproxy支持两种代理模式,tcp(四层)和http(七层),tcp就是实现转发,http会分析协议,并且拒绝、允许、交换、增加、修改、删除请求,这些操作都要基于特定规则
 
 
1、haproxy的安装
到 http://haproxy.1wt.eu/#down下载
 
tar -zxvf haproxy-1.4.18.tar.gz
 
进入解压目录执行

make TARGET=linux26 PREFIX=/usr/local/haproxy install

(TARGET后面根据本机操作系统内核版本来填写, PREFIX是要安装到的目录)
安装完成后会在安装目录下生成 doc ,sbin ,share三个文件夹
 
 
2、创建配置文件
mkdir conf
安装目录下面创建目录
 
vi haproxy.cfg
conf下面新建文件
文件内容如下(这个是能让 haproxy工作起来的最小配置)
global 

log 127.0.0.1 local0 info #[err warning info debug] 
maxconn 4096
user root
group root
daemon
nbproc 1
pidfile /home/admin/haproxy/logs/haproxy.pid
defaults 
maxconn 2000
contimeout 5000
clitimeout 30000
srvtimeout 30000
listen admin_stats
bind 0.0.0.0:1080
mode http
log 127.0.0.1 local0 err

stats uri /admin?stats
 
3、启动haproxy

touch /home/admin/haproxy/logs/haproxy.pid

/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg

通过 http://192.168.57.1:1080/admin?stats可以看到管理页面
 
4、 修改haproxy启动文件权限
chown root:root haproxy (进入sbin目录)
chmod u+s haproxy (增加s权限)
 
上面的目的是如果haproxy启动起来监听的端口小于1024,并且启动用户不是root用户的话,就需要执行上面操作,因为非root用户一般情况下只能启动1024端口以上程序
 
 
5、配置日志

mkdir /home/admin/haproxy/logs

如果启动用户是 admin的话,那logs目录的所有者也需要改成admin, haproxy.cfg配置文件也需要改成admin
 
6、创建启动 \停止脚本
这一步可以省略
 
7、配置文件说明
Haproxy配置中分为五部分,有些组建不是必选的,可以不需要。
 
global:参数是进程级的,通常和操作系统相关,只需要设置一次,如果配置没错,以后就不需要再配置了
defaults:配置默认参数,这些参数被用在 frontend,backend,listen组件里
frontend:接收请求的前段虚拟节点, frontend可以根据规则直接指定具体使用后端的backend(可动态选择)
backend:后端服务器集群的配置,是真实的服务器
listen: frontend和backend的组合体
 
下面是一个具体的配置实例参考
Global

log 127.0.0.1 local0 info #[err warning info debug]

#配置日志
user root
group root
#用户和组
daemon
nbproc 1
#创建一个进程进入后台运行
 

pidfile /usr/local/haproxy/logs/haproxy.pid

#进程的 pid,启用用户要对这个文件有写入的权限
 
Defaults
mode tcp
#下面所有的 listen默认都是tcp模式
option redispatch
#当 serverid对应的服务器宕机后,强制定向到其他健康的服务器上
retries 2
#连接 2次失败就认为服务器宕机了
balance roundrobin
 
option dontlognull
 
maxconn 2000
#最大连接数
 
timeout connect 50000ms
#连接超时( contimeout)
timeout client 1800000ms
#客户端超时( clitimeout)
timeout server 1800000ms
#服务端超时( srvtimeout)
 
#统计页面配置
 
listen admin_stats
bind 0.0.0.0:1080
#监听端口
mode http
#http的 7层模式
option httplog
log 127.0.0.1 local0 err
#日志设置
stats refresh 30s
#统计页面自动刷新时间
stats uri /admin?stats
#统计页面 url
stats realm Haproxy\ Statistics
#统计页面密码框上提示文本
stats auth admin:admin
stats auth admin1:admin1
#统计页面用户密码设置
 
##安倍胜 -8150 连接的监听配置
 
listen anbeisheng-8150
bind *:8150
mode tcp
option tcplog
log global
 
#后台服务器

server anbeisheng1 172.31.1.12:8150 weight 3 check inter 2000 rise 2 fall 3

server anbeisheng2 172.31.1.9:8150 weight 3 check inter 2000 rise 2 fall 3