概述
一、haproxy简介
HAProxy是一个使用C语言编写的自由及开放源代码软件[1],其提供
高可用性、
负载均衡,以及基于
TCP和
HTTP的应用程序
代理。
HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的
并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。
HAProxy实现了一种
事件驱动,
单一进程模型,此模型支持非常大的并发连接数。
多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。
事件驱动模型因为在有更好的资源和时间管理的用户空间(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以 使每个CPU时间片(Cycle)做更多的工作。
包括
GitHub、
Bitbucket[3]、Stack Overflow[4]、
Reddit、
Tumblr、
Twitter[5][6]和
Tuenti[7]在内的知名网站,及亚马逊网络服务系统都使用了HAProxy。
二 安装
源码可到此地址下载:http://download.chinaunix.net/download/0013000/12508.shtml
#
解压
tar -zxvf haproxy-1.3.20 .tar.gzcd haproxy-1.3.20
tar -zxvf haproxy-1.3.20 .tar.gzcd haproxy-1.3.20
#
安装
make TARGET=linux2628 ARCH=x86_64 PREFIX=/usr/local/ haproxy
make TARGET=linux2628 ARCH=x86_64 PREFIX=/usr/local/ haproxy
make install PREFIX=/usr/local/
haproxy
#
参数说明
TARGET=linux26 # 内核版本,使用uname -r查看内核,如:2.6.18-371.el5,此时该参数就为linux26;kernel 大于2.6.28的用:TARGET=linux2628
TARGET=linux26 # 内核版本,使用uname -r查看内核,如:2.6.18-371.el5,此时该参数就为linux26;kernel 大于2.6.28的用:TARGET=linux2628
ARCH=x86_64
#
系统位数
PREFIX=/usr/local/haprpxy # /usr/local/haprpxy为haprpxy安装路径
PREFIX=/usr/local/haprpxy # /usr/local/haprpxy为haprpxy安装路径
三 配置
安装完毕后,进入安装目录配置文件,默认情况下目录里是没有.cfg配置文件的,可以回到安装文件目录下将examples下的haproxy.cfg拷贝到usr/local/haproxy下。
# this config needs haproxy-1.1.28 or haproxy-1.2.1
global
log 127.0.0.1 local0 #日志输出配置,所有日志都记录在本机,通过local0输出
log 127.0.0.1 local0 #日志输出配置,所有日志都记录在本机,通过local0输出
log 127.0.0.1 local1 notice #定义日志级别[error warring info debug]
maxconn 4096 #最大连接数,需考虑ulimit -n 限制
chroot /usr/local/haproxy #chroot运行路径
uid 99 #以什么身份运行进程
gid 99
maxconn 4096 #最大连接数,需考虑ulimit -n 限制
chroot /usr/local/haproxy #chroot运行路径
uid 99 #以什么身份运行进程
gid 99
#user haproxy 运行haproxy的用户
#group haproxy 运行haproxy的组
daemon #以后台形式运行haproxy
nbproc 2 #设置进程数量
pidfile /usr/local/haproxy/haproxy.pid #进程pid文件路径
#debug #haproxy调试级别,建议只在开启单进程的时候启动调试
#quiet
daemon #以后台形式运行haproxy
nbproc 2 #设置进程数量
pidfile /usr/local/haproxy/haproxy.pid #进程pid文件路径
#debug #haproxy调试级别,建议只在开启单进程的时候启动调试
#quiet
defaults
log global
log 127.0.0.1 local3
mode http #默认的模式mode {tpc|http|health},tcp是4层,http是7层,health只会返回ok
option httplog #日志级别,采用httplog
option dontlognull #不记录健康检查日志信息
option forwardfor #如果后端服务器需要获得客户机真实IP需要配置的参数,可以从Http Header中获取客户端ip
option httpclose #每次请求完毕后主动关闭http通道,haproxy不支持keep-alive,只能模拟这种模式的实现
log global
log 127.0.0.1 local3
mode http #默认的模式mode {tpc|http|health},tcp是4层,http是7层,health只会返回ok
option httplog #日志级别,采用httplog
option dontlognull #不记录健康检查日志信息
option forwardfor #如果后端服务器需要获得客户机真实IP需要配置的参数,可以从Http Header中获取客户端ip
option httpclose #每次请求完毕后主动关闭http通道,haproxy不支持keep-alive,只能模拟这种模式的实现
retries 3 #三次连接失败就认为是服务器不可用,也可以通过后面设置
option redispatch #当serverid对应的服务器挂掉后,强制定向到其他健康的服务器,以后将不支持
maxconn 2000 #最大连接数
contimeout 5000 #连接超时
clitimeout 50000 #客户端超时
srvtimeout 50000 #服务器超时
option redispatch #当serverid对应的服务器挂掉后,强制定向到其他健康的服务器,以后将不支持
maxconn 2000 #最大连接数
contimeout 5000 #连接超时
clitimeout 50000 #客户端超时
srvtimeout 50000 #服务器超时
stats uri /stats #统计页面url
stats auth frank:frank #设置监控页面的用户和密码
stats hide-version #隐藏统计页面上Haproxy的版本信息
stats auth frank:frank #设置监控页面的用户和密码
stats hide-version #隐藏统计页面上Haproxy的版本信息
stats refresh 30s
###设置haproxy错误页面
#errorfile 403 /etc/haproxy/403.http
#errorfile 500 /etc/haproxy/500.http
#errorfile 502 /etc/haproxy/502.http
#errorfile 503 /etc/haproxy/503.http
#errorfile 504 /etc/haproxy/504.http
frontend main
bind *:80 #这里建议使用bind *:80的方式,要不然做集群高可用的时候有问题,vip切换到其他机器上就不能访问了
acl web hdr(host) -i bbs.king.org #acl后面是规则名称,-I为忽略大小写,后面跟的是要访问的域名,如果访问www.king.org这个域名,就触发web规则
use_backend webserver if web #如果上面定义的web规则被触发,即访问www.king.org,就将请求分发到webserver这个作用域
default_backend dynamic #不满足则相应backend的默认页面
bind *:80 #这里建议使用bind *:80的方式,要不然做集群高可用的时候有问题,vip切换到其他机器上就不能访问了
acl web hdr(host) -i bbs.king.org #acl后面是规则名称,-I为忽略大小写,后面跟的是要访问的域名,如果访问www.king.org这个域名,就触发web规则
use_backend webserver if web #如果上面定义的web规则被触发,即访问www.king.org,就将请求分发到webserver这个作用域
default_backend dynamic #不满足则相应backend的默认页面
backend webserver #webserver作用域
mode http #使用http模式
balance roundrobin #负载均衡模式,roundrobin负载轮询,balance source保存session值,支持static-rr,leastconn,first,uri等参数
option httpchk GET /index.html #健康检查 ,如果访问不到index.html就不分发给它
server web1 192.168.154.130:80 check inter 2000 fall 3
server web1 192.168.154.131:80 check inter 2000 fall 3
mode http #使用http模式
balance roundrobin #负载均衡模式,roundrobin负载轮询,balance source保存session值,支持static-rr,leastconn,first,uri等参数
option httpchk GET /index.html #健康检查 ,如果访问不到index.html就不分发给它
server web1 192.168.154.130:80 check inter 2000 fall 3
server web1 192.168.154.131:80 check inter 2000 fall 3
backend dynamic
mode http
balance roundrobin
option httpchk GET /index.html
server web3 192.168.154.132:80 check inter 2000 fall 3
mode http
balance roundrobin
option httpchk GET /index.html
server web3 192.168.154.132:80 check inter 2000 fall 3
server web4 192.168.154.133:80 check inter 2000 fall 3
option httpclose :HAProxy会针对客户端的第一条请求的返回添加cookie并返回给客户端,客户端发送后续请求时会发送
此cookie到HAProxy,HAProxy会针对此cookie分发到上次处理此请求的服务器上,如果服务器不能忽略
此cookie值会影响处理结果。如果避免这种情况配置此选项,防止产生多余的cookie信息。
最后
以上就是机智马里奥为你收集整理的haproxy安装及配置的全部内容,希望文章能够帮你解决haproxy安装及配置所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复