高性能负载均衡软件 HAProxy

HAProxy 是一个开源的、高性能的、基于TCP(四层)和 HTTP(七层)应用的负载均衡软件
HAProxy 运行在当前的硬件上,完全可以支持数以万计的并发连接。它的显著优点如下:
1、可靠性和稳定性好
2、支持多达9种负载均衡算法
3、支持虚拟主机和 ACL规则
4、能生成服务器状态监控页面

HAProxy 原理

 环境: 1、HaProxy
eth0: 192.168.18.10  eth1: 192.168.1.10 

2、WebSrv1
eth1: 192.168.1.11 

3、WebSrv2
eth1: 192.168.1.12 

4、Client
eth1: 192.168.18.100
 
一、安装 Haproxy
A、yum安装 
yum install haproxy -y 
B、编码编译
1、为支持正则,必须安装 pcre 
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.36.tar.bz2
tar -jxf pcre-8.36.tar.bz2
cd pcre-8.36
./configure
make && make install 
2、Haproxy 官网在国内已被墙,可在 github 下载 wget https://github.com/haproxy/haproxy/archive/v1.5.0.tar.gz -O haproxy-v1.5.0.tar.gz
tar -zxf haproxy-v1.5.0.tar.gz cd haproxy-1.5.0/ 

make TARGET=linux2628 ARCH=x86_64 USE_PCRE=1 PREFIX=/usr/local/haproxy # 编译
make install PREFIX=/usr/local/haproxy # 安装到指定路径
mkdir {/etc/haproxy,/var/haproxy,/var/log/haproxy} # 创建相关目录 

cp examples/haproxy.cfg /etc/haproxy/ # 复制示例配置文件
cp -a examples/haproxy.init /etc/init.d/haproxy # 复制启动脚本
cp doc/haproxy.1 /usr/share/man/man1/
cp doc/configuration.txt /usr/share/man/man1/haproxy.cfg.1 # 复制man文件 

cp -ar examples/errorfiles/ /etc/haproxy    # 复制错误提示文件
chmod a+x /etc/init.d/haproxy
chkconfig --add haproxy chkconfig haproxy on

 ln -s /usr/local/haproxy/sbin/haproxy /usr/sbin/haproxy
 ln -s /usr/local/lib/libpcre.so.1 /usr/lib64/libpcre.so.1 
二、负载均衡实例
1、主配置文件 
vim /etc/haproxy/haproxy.cfg
global # 全局参数
 log 127.0.0.1 local3 info # log 记录级别
 maxconn 20480 # 最大并发连接数
 chroot /var/haproxy
 uid 99
 gid 99
 daemon # 后台运行
 nbproc 3 # 创建6个进程 (建议设置为CPU核数)
 pidfile /var/run/haproxy.pid
 ulimit-n 65535
 stats socket /var/tmp/haproxy.stats
 #debug
 #quiet

defaults # 默认参数
 log global
 cookie SRV # 向 cookie 插入 SERVERID,会话保持
 mode http # http7层模式,可配置tcp4层模式
 option httplog # 记录http请求日志
 option httpclose # 请求完毕后主动关闭http通道
 option dontlognull # 不记录空log
 option forwardfor # 记录 Client IP
 option redispatch # 自动重定向到健康机器
 option allbackups # 服务器宕机时,激活备机
# option abortonclose # 高负载时,自动关闭连接长的请求
 stats refresh 30 # 统计页面刷新间隔
 retries 3 # 连接 RS 超时次数
 maxconn 20480
 timeout check 2000ms # 检查超时
 timeout connect 5000ms # 连接超时
 timeout client 50000ms # 客户端连接超时
 timeout server 50000ms # 服务端连接超时

listen amin_status # 状态管理
 bind 192.168.18.10:6553 # 服务IP:端口
 mode http
 log 127.0.0.1 local3 info
 stats enable
 stats refresh 5s # 自动刷新间隔
 stats realm Haproxy\ Statistics # 认证信息
 stats uri /admin?stats # URL页面提示符
 stats auth admin01:admin01 # 认证用户admin01,密码admin01
 stats auth admin02:admin02
 stats admin if TRUE # 支持启/禁用 RS服务器
 stats hide-version # 隐藏版本号

frontend web_service # 前端虚拟节点
 bind *:80 # 提供服务IP:端口
 mode http
 log global

 acl inside_src src 10.0.2.0/24 # 定义ACL,支持正则
 acl bad_net src 192.168.2.0/24
# acl test.org_acl hdr_req(host) -i ^(www.test.org|web.test.org)$
 http-request deny if bad_net # 拒绝bad_net
# use_backend external_servers if test.org_acl
 use_backend inside_servers if inside_src # 如果源主机是 inside_src,定向到 inside_servers
 default_backend external_servers # 默认服务组

backend external_servers # 后端对外服务组,名字随便取
 mode http
 balance roundrobin # 轮询调度
 option httpchk GET /index.html # 健康检查页面

 # 主机名 IP:端口 健康检查频率(ms) 连续2次成功则认为正常 连续3次失败则认为宕机 权重1
 server web01 192.168.1.11:80 cookie web01 check inter 2000 rise 2 fall 3 weight 1
 server web02 192.168.1.12:80 cookie web02 check inter 2000 rise 2 fall 3 weight 1

backend inside_servers # 对内服务组
 mode http
 balance roundrobin
 option httpchk GET /index.html # 启用对 RS 的状态检测
 server web01 192.168.1.11:80 cookie web01 check inter 2000 rise 2 fall 3 weight 1

 errorloc 502 /etc/haproxy/errorfiles/502.http
 errorfile 503 /etc/haproxy/errorfiles/503.http
启动 HaProxy
haproxy -f /etc/haproxy/haproxy.cfg 或 /etc/init.d/haproxy start 
2、负载均衡算法  
Haproxy支持的负载均衡算法:
1、roundrobin # 轮询调度,
2、static-rr # 基于权重,静态算法
3、leastconn # 最少连接数,适用于长会话连接,如:LDAP, SQL, TSE, etc...
4、first # 首次连接,总是使用最小连接
5、source # 源地址,再除权重总数,常用 6、uri # 对 URL 进行 hash 运算,再除服务器总权重
7、url_param # 根据 URl 路径中的参数
8、hdr # 根据 HTTP 请求头,不存在则用 RR 算法
9、rdp-cookie # 基于客户端Cookie,hash每次请求 3、日志支持 vim /etc/rsyslog.conf # 追加到rsyslog配置
[bash]
 # Provides UDP syslog reception
$ModLoad imudp       # 载入UDP 模块
$UDPServerRun 514    # 监听端口

 # Haproxy log
local3.* /var/log/haproxy/haproxy.log       # log 位置
[/bash]
重启rsyslog
service rsyslog restart
Haproxy 优雅重启
haproxy -f /etc/haproxy/haproxy.cfg -sf `cat /var/run/haproxy.pid` 
三、Web服务器配置 ( 以Web1为例 )
yum install httpd -y   # 安装Apache
echo "Web-01" > /var/www/html/index.html service httpd start # 启动httpd服务 
四、测试 1、打开浏览器访问: http://192.168.18.10:6553/admin?stats  输入认证用户登录

 

HAProxy 的 Web监控页面

更多参考: haproxy-1.5.0/doc/configuration.txt
https://github.com/haproxy/haproxy/

时间: 2024-07-28 17:50:21

高性能负载均衡软件 HAProxy的相关文章

高可用高性能负载均衡软件HAproxy详解指南-第一章(简介、安装)

第一章:HAproxy简介及安装配置 对Linux有兴趣的朋友加入QQ群:476794643 在线交流 本文防盗链:http://zhang789.blog.51cto.com 目录 HAproxy简介 为什么要使用HAproxy haproxy 性能特点 负载均衡器的性能评估因素 安装HAproxy haproxy案例4:实现web负载 由于字体过多分开写的,全系列文章链接 第一章:HAproxy简介及安装配置 http://zhang789.blog.51cto.com/11045979/1

高可用高性能负载均衡软件HAproxy详解指南-第二章(配置文件、关键字、ACL)

第二章:HAproxy配置文件详解以及HAproxy的ACL详解 对Linux有兴趣的朋友加入QQ群:476794643 在线交流 本文防盗链:http://zhang789.blog.51cto.com 上一篇:第一章:HAproxy简介及安装配置 目录 haproxy 配置文件详解 haproxy 配置文件中的关键字参考 haproxy的ACL 附:一份完整的HAproxy的配置文件 由于字体过多分开写的,全系列文章链接 第一章:HAproxy简介及安装配置 http://zhang789.

高可用高性能负载均衡软件HAproxy详解指南-第三章:HAproxy实例

第三章:HAproxy实例 对Linux有兴趣的朋友加入QQ群:476794643 在线交流 本文防盗链:http://zhang789.blog.51cto.com 上一篇:第二章:HAproxy配置文件详解以及HAproxy的ACL详解 目录 haproxy案例1:定义独立日志文件 haproxy案例2:haproxy统计页面的输出机制 haproxy案例3:动静分离示例: haproxy案例4:实现web负载 haproxy案例5:负载均衡MySQL服务 由于字体过多分开写的,全系列文章链

千万级高并发负载均衡软件HAPROXY

一.HAProxy 基于硬件的负载均衡设备:f5,big-ip等 基于软件的负载均衡产品:haproxy,lvs,nginx等 在软件的负载均衡产品中,分为基于系统的软负载实现和基于第三方软件的软负载实现,LVS是基于系统实现的一种软负载.HA proxy是基于第三方应用实现的软负载均衡 1.haproxy简介 haproxy是一个开源的,高性能的,基于tcp第四层和http第七层应用的负载均衡软件 优点:可靠性和稳定性非常好 最高可以同时维护40000-50000个并发连接.单位时间内处理最大

初识千万级高并发负载均衡软件HaProxy

什么是HaProxy? 负载均衡的实现方式一般有两种方式,硬件负载均衡和软件负载均衡,硬件负载均衡最具代表性的当属F5,软件负载均衡的实现方案很多,大致分为两类,一种为操作系统级的负载均衡,另一种为第三方应用的软件负载均衡.LVS就是基于操作系统的一种软件负载均衡,HaProxy和Nginx等就是开源的基于第三方应用的软件负载均衡. HaProxy是TCP / HTTP 反向代理服务器,尤其适合于高可用性环境.HAProxy 可以在4和7两层作负载均衡.它支持两种主要的代理模式:"tcp&quo

Nginx/LVS/HAProxy负载均衡软件的优缺点详解

PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下. 一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术.具体的应用需求还得具体分析,如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了:如果机器不少,可以用DNS轮询,LVS所耗费的机器还是比较多的:大型网站或重要的服务,且服务器比较多时,可以考虑用LVS. 一种是通过硬件来进行进行,常见的硬件有比较昂

(总结)Nginx/LVS/HAProxy负载均衡软件的优缺点详解

PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下. 一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术.具体的应用需求还得具体分析,如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了:如果机器不少,可以用DNS轮询,LVS所耗费的机器还是比较多的:大型网站或重要的服务,且服务器比较多时,可以考虑用LVS. 一种是通过硬件来进行进行,常见的硬件有比较昂

Nginx/LVS/HAProxy负载均衡软件的优缺点详解(转)

原文:http://www.ha97.com/5646.html PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下. 一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术.具体的应用需求还得具体分析,如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了:如果机器不少,可以用DNS轮询,LVS所耗费的机器还是比较多的:大型网站或重要的服务,且服务器比较多时

Nginx/LVS/HAProxy 负载均衡软件的优缺点对比

Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术,具体的应用需求还得具体分析. 如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了:如果机器不少,可以用DNS轮询,LVS所耗费的机器还是比较多的:大型网站或重要的服务,且服务器比较多时,可以考虑用LVS. 目前关于网站架构一般比较合理流行的架构方案:Web前端采用Nginx/HAProxy+Keepalived作负载均衡器:后端采