Haproxy安装及配置详解与算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
HAProxy安装及配置详解与算法
HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。根据官方数据,其最高极限支持10G的并发。
HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy 运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整
合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。
其支持从4层至7层的网络交换,即覆盖所有的TCP协议。就是说,Haproxy 甚至还支持 Mysql 的均衡负载。如果说在功能上,能以proxy反向代理方式实现 WEB均衡负载,这样的产品有很多。包括Nginx,ApacheProxy,lighttpd,Cheroke 等。
但要明确一点的,Haproxy 并不是 Http 服务器。以上提到所有带反向代理均衡负载的产品,都
清一色是 WEB 服务器。简单说,就是他们能自个儿提供静态(html,jpg,gif..)或动态(php,cgi..)文件的传输以及处理。而Haproxy 仅仅,而且专门是一款的用于均衡负载的应用代理。其自身并不能提供http服务。
但其配置简单,拥有非常不错的服务器健康检查功能还有专门的系统状态监控页面,当其代理的后端服务器出现故障, HAProxy会自动将该服务器摘除,故障恢复后再自动将该服务器加入。自1.3版本开始还引入了frontend,backend,frontend根据任意HTTP请求头内容做规则匹配,然后把请求定向到相关的backend。
1.安装
官方版本获取地址:http://haproxy.1wt.eu/,不过官方页面已经打不开了,请自行搜索!
上面中的26是linux系统内核,通过命令# uname -a可查看,我使用的是CentOS
# tar xzvf haproxy-1.4.24.tar.gz
# cd haproxy-1.4.24
# make TARGET=linux26 PREFIX=/usr/local/haproxy
# make install PREFIX=/usr/local/haproxyb
2.配置
安装完毕后,进入安装目录配置文件,默认情况下目录里是没有.cfg配置文件的,可以回到安装文件目录下将examples下的haproxy.cfg拷贝到usr/local/haproxy下。
# cd /usr/local/haproxy
# vi haproxy.cfg
默认文件内容如下:(注意!!标示开始的为默认的配置文件没有的)
CODE:
# this config needs haproxy-1.1.28 or haproxy-1.2.1
####################全局配置信息####################################
##########参数为进程级,通常和操作系统相关##########################
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
#log loghost local0 info #日志
maxconn 4096 #默认最大连接数
chroot /usr/share/haproxy #chroot运行路径
uid 99 #所属运行的用户uid
gid 99 #所属运行的用户组
daemon #以后台形式运行haproxy
!!nbproc 2 #进程数量(可以设置多个进程提高性能)
!!pidfile /usr/local/haproxy/haproxy.pid #haproxy的pid存放路径,启动进程的用户必须有权限访问此文件
#debug #
#quiet
####################默认的全局设置####################################
##########参数可以被利用配置到frontend,backend,listen组件#############
defaults
log global
mode http #所处理的类别 (#7层 http;4层tcp )
option httplog #日志类别http日志格式
!!option httpclose #每次请求完毕后主动关闭http通道
option dontlognull #不记录健康检查的日志信息
!! option forwardfor #后端服务器需要获得客户端真实ip需配置的参数,可从Http Header中获得ip !!option redispatch #serverId对应的服务器挂掉后,强制定向到其他健康的服务器
!!option abortonclose #当服务器负载很高的时候,自动结束掉当前队列处理比较久的连接
!!stats refresh 30 #统计页面刷新间隔
retries 3 #3次连接失败就认为服务不可用,也可以通过后面设置
redispatch #当serverid对应的服务器挂掉后,强制定向到其他健康服务器!!balance roundrobin #默认的负载均衡的方式,轮询方式
!!balance source #默认的负载均衡的方式,类似nginx的ip_hash
!!balance leastconn #默认的负载均衡的方式,最小连接
maxconn 2000 #最大连接数
contimeout 5000 #连接超时
clitimeout 50000 #客户端超时
srvtimeout 50000 #服务器超时
!! timeout check 2000 #心跳检测超时
####################监控页面设置####################################
listen appli1-rewrite 0.0.0.0:10001
cookie SERVERID rewrite