一、haproxy介绍
HAProxy是一个使用C语言编写的自由及开放源代码软件[1],其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。
HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。
haproxy 的配置文件由两部分组成:全局设定和对代理的设定,共分为五段:global,defaults,frontend,backend,listen。
二、安装haproxy
去haproxy下载源码包上传到服务器或者wget
然后解压
[root@mymaster yasuobao]# tar -zxvf haproxy-2.0.1.tar.gz
[root@mymaster yasuobao]# cd haproxy-2.0.1
编译[root@mymaster yasuobao]# make TARGET=linux31
这里TARGET参数视centos版本而定,uname -r查看系统版本centos6.X需要使用TARGET=linux26 centos7.x使用linux31
安装
[root@mymaster yasuobao]# make install PREFIX=/usr/local/haproxy
创建conf目录[root@mymaster yasuobao]# mkdir /usr/local/haproxy/conf
复制文件
[root@mymaster yasuobao]# cp examples/option-http_proxy.cfg /usr/local/haproxy/conf/haproxy.cfg
[root@mymaster yasuobao]# cd /usr/local/haproxy/conf
编辑配置文件
[root@mymaster conf]# vim haproxy.cfg
global
log 127.0.0.1 local0 info
maxconn 4096
user nobody
group nobody
daemon
nbproc 1
pidfile /usr/local/haproxy/logs/haproxy.pid
defaults
mode http
retries 3
timeout connect 10s
timeout client 20s
timeout server 30s
timeout check 5s
frontend www
bind *:80
mode http
option httplog
option forwardfor
option httpclose
log global
#acl host_www hdr_dom(host) -i www.zb.com
#acl host_img hdr_dom(host) -i img.zb.com
#use_backend htmpool if host_www
#use_backend imgpool if host_img
default_backend htmpool
backend htmpool
mode http
option redispatch
option abortonclose
balance static-rr
cookie SERVERID
option httpchk GET /index.html
server myslave02 172.18.74.87:80 cookie B weight 3 check inter 2000 rise 2 fall 3
server myslave 172.18.74.119:80 cookie A weight 3 check inter 2000 rise 2 fall 3
listen admin_stats
bind 0.0.0.0:9188
mode http
log 127.0.0.1 local0 err
stats refresh 30s
stats uri /haproxy-status
stats realm welcome login\ Haproxy
stats auth admin:admin123
stats hide-version
stats admin if TRUE
启动haproxy
[root@mymaster conf]# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg
然后在后端服务器编辑index.html
[root@myslave html]# cat index.html
this is 119 html
[root@myslave02 html]# cat index.html
this is 87 html
curl检查haproxy是否正常工作
浏览器访问172.18.74.59:9188/haproxy-status,用户名admin,密码admin123,登陆。可以看到haproxy的工作状态