参考文章
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