# cd haproxy-1.3.20
# vi Makefile
PREFIX = /usr/local/haproxy (原为PREFIX = /usr/local)
:wq
# make TARGET=linux26
# make install
haproxy应用时有2种方式,linsten方式和frontend+backend方式
方式一(listen):
# vi /usr/local/haproxy/haproxy.cfg
globallog 127.0.0.1 local0
maxconn 4096 chroot /usr/local/haproxy uid 99 gid 99 daemon nbproc 1 pidfile /usr/local/haproxy/haproxy.pid defaultslog global
log 127.0.0.1 local3 option httplog option httpclose option dontlognull option forwardfor option redispatch retries 2 maxconn 2000 mode http stats uri /haproxy-status stats auth ming:123456 stats refresh 30s monitor-uri /site_status contimeout 5000 clitimeout 50000 srvtimeout 50000listen web 192.168.1.10:1080 balance roundrobin server yang 192.168.1.10:80 check server ming 192.168.1.12:80 check
:wq
方式二(frontend+backend):
# vi /usr/local/haproxy/haproxy.cfg
globallog 127.0.0.1 local0
maxconn 4096 chroot /usr/local/haproxy uid 99 gid 99 daemon nbproc 1 pidfile /usr/local/haproxy/haproxy.pid defaultslog global
log 127.0.0.1 local3 option httplog option httpclose option dontlognull option forwardfor option redispatch retries 2 maxconn 2000 mode http stats uri /haproxy-status stats auth ming:123456 stats refresh 30s monitor-uri /site_status contimeout 5000 clitimeout 50000 srvtimeout 50000frontend web 192.168.1.10:1080
default_backend aa backend aa balance roundrobin server yang 192.168.1.10:80 check server ming 192.168.1.12:80 check:wq
启动haproxy
# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
开机自启动:
# vi /etc/rc.local
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
:wq
查看haproxy页面:
用户名:ming 密码:123456
验证效果:
在2主机上分别建2个页面1.html 内容写各自主机ip
第一次会显示192.168.1.10
第二次会显示192.168.1.12
注:
1、1080是haproxy的端口号,是随意写的,可改
2、可以把ip改成域名(如),甚至可以把web的80端口改了,让haproxy用80,这样访问时就不能再加端口了
3、电脑重启后/etc/init.d/httpd 会被改为/etc/init.d/httpd.rpmorig ,要自己改回来,chkconfig开机启动命令也要再重写一遍,原因不详
附:
global:参数是进程级的,通常和操作系统(OS)相关defaults:配置默认参数,这些参数可以被利用配置到frontend,backend,listen组件
frontend:接收请求的前端虚拟节点,Frontend可以根据规则直接指定具体使用后端的 backend(可动态选择)
backend:后端服务集群的配置,是真实的服务器,一个Backend对应一个或者多个实体服务器
listen:Frontend和Backend的组合体
log 127.0.0.1 local0 使用系统的syslog记录日志
maxconn 4096 限制单个进程的最大连接数
option redispatch 在连接失败或断开的情况下,允许当前会话被重新分发
retries 2 设置在一个服务器上链接失败后的重连次数
balance roundrobin 设置服务器分配算法为轮询(即交替访问)
option dontlognull 不记录空连接
contimeout 5000 设置等待连接到服务器成功的最大时间
clitimeout 50000 设置客户端的最大超时时间
srvtimeout 50000 设置服务器端的最大超时时间
nbproc 1 指定作为守护进程运行的时候,要创建多少个进程,默认只创建一个,需要daemon开启模式
daemon 让进程在后台运行,即作为守护进程运行,正式运行的时候开启,此处先禁止,等同于在命令行添加参数 -D
debug 设置debug模式运行,与daemon模式互斥,等同于在命令行添加参数 -d
1080 监听端口(随意)
mode http http的7层模式
stats refresh 30s 统计页面自动刷新时间
stats uri /haproxy-stats 统计页面URL
stats realm Haproxy\ Statistics 统计页面密码框上提示文本
stats auth ming:123456 统计页面用户名和密码设置
stats hide-version 隐藏统计页面上HAProxy的版本信息
monitor-uri /site_status 网站健康检测URL,用来检测HAProxy管理的网站是否可以用,正常返回200,不正常返回500
weight -- 调节服务器的负重
check -- 允许对该服务器进行健康检查
inter -- 设置连续的两次健康检查之间的时间,单位为毫秒(ms),默认值 2000
rise -- 指定多少次连续成功的健康检查后,即可认定该服务器处于可操作状态,默认值 2
fall -- 指定多少次不成功的健康检查后,认为服务器为当掉状态,默认值 3
balance roundrobin 简单的轮询
balance source 根据请求的源IP
balance uri 根据请求的url
balance url_param 根据请求RUL中的参数