1. 简介
Haproxy 提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机。
haproxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。负载均衡LVS是基于四层。
haproxy 高性能负载均衡优点如下:
haproxy是支持虚拟主机的,可以工作在4/7层
能够补充nginx 的一些缺点,比如 session 的保持、cookie 的引导等工作
支持url 检测后端的服务器
它跟lvs 一样,只是一款负载均衡软件,单纯从效率上来讲,haproxy 更会比nginx又更出色的负载均衡速度,在并发处理上也是优于nginx的
haproxy可以对mysql 读进行负载均衡,对后端的MySQL节点进行 检测和负载均衡,haproxy 支持多种算法。
haproxy+keepalived 企业高性能web 能够支持千万级并发网站。
2. 安装配置
2.1 安装
下载网址:http://download.openpkg.org/components/cache/haproxy/
# wget http://download.openpkg.org/components/cache/haproxy/haproxy-1.8.10.tar.gz # tar -xvf haproxy-1.8.10.tar.gz # cd haproxy-1.8.10 # make TARGET=linux2628 PREFIX=/usr/local/haproxy/ # make install PREFIX=/usr/local/haproxy # /usr/local/haproxy/sbin/haproxy -v
2.2 haproxy 配置文件详解
###########全局配置######### global log 127.0.0.1 local3 # 日志输出配置,所有日志都记录在本机,通过local0输出 log 127.0.0.1 local1 notice #定义haproxy 日志级别[error warring info debug] daemon #以后台形式运行harpoxy nbproc 8 #进程数量(可设置多个进程提高性能) maxconn 4096 #默认最大连接数 uid #运行haproxy的用户uid gid #运行haproxy的用户所属组的gid pidfile /var/run/haproxy.pid #haproxy 进程PID文件 ulimit-n 65535 #ulimit 的数量限制 chroot /usr/share/haproxy #chroot运行路径 debug #haproxy 调试级别,建议只在开启单进程的时候调试 quiet ########默认配置############ defaults log global mode http #所处理的类别(7层http,四层tcp) maxconn 20480 #最大连接数
option httplog #日志类别http日志格式
option httpclose #每次请求完毕后主动关闭http通道 option dontlognull #不记录健康检查的日志信息 retries 3 #3次连接失败就认为是服务器不可用,也可以通过后面设置 option forwardfor #如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip option redispatch #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器 option abortonclose #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接 timeout connect 5000ms #连接超时 timeout client 30000ms #客户端超时 timeout server 30000ms #服务器超时 #timeout check 2000 #心跳检测超时 #timeout http-keep-alive10s #默认持久连接超时时间 #timeout http-request 10s #默认http请求超时时间 #timeout queue 1m #默认队列超时时间 balance roundrobin #设置默认负载均衡方式,轮询方式 #balance source #设置默认负载均衡方式,类似于nginx的ip_hash #balnace leastconn #设置默认负载均衡方式,最小连接数 ########监控页面配置######## listen stats #Frontend和Backend的组合体,监控组的名称,按需自定义名称 bind 0.0.0.0:65535 # 监听端口 mode http #http的7层模式 option httplog #采用http日志格式 log 127.0.0.1 local3 err #错误日志记录 maxconn 10 #默认的最大连接数 stats refresh 30s #每个5s自动刷新监控页面 stats uri /stats #监控页面url stats realm Nanshan\ Haproxy #监控页面的提示信息 stats auth admin:admin #设置监控页面的用户和密码:admin,可以设置多个用户名 stats auth wind:wind #设置监控页面的用户和密码:wind stats hide-version #隐藏统计页面上HAProxy的版本信息 stats admin if TRUE #设置手工启动/禁用,后端服务器
########设置haproxy 错误页面##### #errorfile 403 /home/haproxy/haproxy/errorfiles/403.http #errorfile 500 /home/haproxy/haproxy/errorfiles/500.http #errorfile 502 /home/haproxy/haproxy/errorfiles/502.http #errorfile 503 /home/haproxy/haproxy/errorfiles/503.http #errorfile 504 /home/haproxy/haproxy/errorfiles/504.http ########frontend配置############## frontend main bind *:80 #这里建议使用bind *:80的方式,要不然做集群高可用的时候有问题,vip切换到其他机器就不能访问了。 acl web hdr(host) -i www.abc.com #acl后面是规则名称,-i为忽略大小写,后面跟的是要访问的域名,如果访问www.abc.com这个域名,就触发web规则,。 acl img hdr(host) -i img.abc.com #如果访问img.abc.com这个域名,就触发img规则。 use_backend webserver if web #如果上面定义的web规则被触发,即访问www.abc.com,就将请求分发到webserver这个作用域。 use_backend imgserver if img #如果上面定义的img规则被触发,即访问img.abc.com,就将请求分发到imgserver这个作用域。 default_backend dynamic #不满足则响应backend的默认页面 ########backend配置############## backend webserver mode http #http的7层模式 balance roundrobin #balance roundrobin 负载轮询,balance source 保存session值,支持static-rr,leastconn,first,uri等参数 option httpchk /index.html HTTP/1.0 #健康检查, 检测文件,如果分发到后台index.html访问不到就不再分发给它 server web1 192.168.80.133:80 cookie 1 weight 5 check inter 2000 rise 2 fall 3 server web2 192.168.80.134:80 cookie 2 weight 3 check inter 2000 rise 2 fall 3 #cookie 1表示serverid为1,check inter 1500 是检测心跳频率 #rise 2是2次正确认为服务器可用,fall 3是3次失败认为服务器不可用,weight代表权重
2.3 配置haproxy 服务
# cd /usr/local/haproxy/ # mkdir etc # touch /usr/local/haproxy/etc/haproxy.cfg
2.4 配置文件内容
原文:https://www.cnblogs.com/sswind/p/12498662.html