[记录]HAproxy负载均衡配置教程
HAproxy负载均衡配置教程
一、简介
haproxy是一个开源的高性能负载均衡软件;支持双机热备、虚拟主机和图形化的管理界面,自带强大的对RS健康检查功能;支持TCP(四层)、HTTP(七层)应用代理功能;多用于PV很大,但是又需要七层应用代理的业务
二、工作原理
1、基于TCP负载均衡工作原理:
使用NAT方式接收和返回请求报文,只单纯对请求流量和返回流量做转发;RS不
用配置公网IP
2、基于HTTP负载均衡工作原理:
使用NAT方式接收和返回请求报文,在接收请求报文后会检查报文头信息,根据
报文头信息匹配Frontend(ACL规则)再转发给Backend(server池);RS不用配
置公网IP
三、安装HAproxy
1、下载haproxy源码包
下载地址:http://download.chinaunix.net/download.php?id=40475&ResourceID=12508
2、tar xf haproxy-1.4.22.tar.gz -C /home
3、cd /home/haproxy-1.4.22
4、make TARGET=linux26 ARCH=x86_64
5、make install PREFIX=/usr/local/haproxy
6、ln -s /usr/local/haproxy /usr/haproxy
7、cd /usr/local/haproxy
8、mkdir -p bin conf logs var/run var/chroot
9、cd examples/
10、cp haproxy.cfg /usr/local/haproxy/etc
11、cp haproxy.init/etc/init.d/haproxy
12、chmod 700 /etc/init.d/haproxy
13、chkconfig --add haproxy
14、chkconfig haproxy on
四、配置基于四层负载均衡
1、vim haproxy.cfg
##全局配置信息###
global
chroot /usr/local/haproxy/var/chroot #chroot运行路径
daemon #以后台形式运行harpoxy
group haproxy #启动程序所用组,随便写,只要下面我们
创建这个组即可
user haproxy #启动程序所用用户,随便写,只要下面我
们创建这个用户即可
log 127.0.0.1:514 local0 warring #定义haproxy 日志存放设备及级别
pidfile /usr/local/haproxy/var/run/haproxy.pid #haproxy 进程PID文件,用于存放pid
maxconn 20480 #默认最大连接数
spread-checks 3
nbproc 8 #进程数量,一般为CPU核数2倍
####默认配置选项#######
defaults
log global
mode tcp #所处理的类别(7层代理http,4层代理tcp)
retries 3 #3次连接失败就认为服务器不可用,也可以通过后面设置
option redispatch #serverID 对应的服务器挂掉后,强制定向到其他健康的服务
器
contimeout 5000 #设置默认连接超时时间
clitimeout 50000 #设置客户端连接超时时间
srvtimeout 50000 #设置服务器连接超时时间
#########设置图形化监控页面######
listen admin_status #定义实例名为admin_status,实例名可以随意起
bind 0.0.0.0:81 #设置Frontend和Backend的组合体,监控组的名称,按
需要自定义名称
mode tcp #设置模式;tcp为四层http为7 层
stats enable #激活图形化管理界面
stats uri /admin?stats #设置图形管理界面url打开路径
stats auth admin:admin #设置监控页面的用户和密码:admin
balance roundrobin #设置对RS的调度算法,这里设置的是轮询方式
option httpclose
option forwardfor #让RS节点记录客户端的真实IP,如果不加这条,RS节
点只记录负载均衡服务器的IP
option httpchk HEAD /test.html HTTP /1.0 #定义通过URL方式进行对RS的健
康检查,不加这条,默认是通过IP+端口的方式进行健康检查;如果想通过URL进
行健康检查,后端RS节点上的web定义存放网页的目录下必须有test.html这个页
面,否则健康检查会失败
server www01 10.0.0.8:8080 check inter 1500 fall 3 rise 3 check port 8080 maxconn
3000 weight 1
server www02 10.0.0.9:8080 check inter 1500 fall 3 rise 3 check port 8080 maxconn
3000 weight 1
#定义server地址池,server是规定的server地址池字段,不能变;后面www01
是名字,随便写;10.0.0.X:8080是定义的RS的IP和端口,端口最好不要用80;check
inter 1500是定义健康检查间隔为1.5秒,不定义默认为2秒检查一次;fall 3是定
义检查三次后端RS都失败就把该节点踢掉,不定义默认也是检查三次;rise 3是定
义当RS节点从故障到恢复,健康检查三次才会认为该节点真正正常;check port
8080是指定健康检查的端口号为8080;maxconn 3000是定义单个节点最大连接数
为3000pv;具体要安装服务器硬件状况配置,否则很可能会因为pv过大把服务器
压垮;weight 1是定义权重,权重值越大,承载的任务越多
2、useradd haproxy -s /sbin/nologin -M
五、配置基于七层负载均衡
1、vim haproxy.cfg
##全局配置信息###
global
chroot /usr/local/haproxy/var/chroot #chroot运行路径
daemon #以后台形式运行harpoxy
group haproxy #启动程序所用组,随便写,只要下面我们
创建这个组即可
user haproxy #启动程序所用用户,随便写,只要下面我
们创建这个用户即可
log 127.0.0.1:514 local0 warring #定义haproxy 日志存放设备及级别
pidfile /usr/local/haproxy/var/run/haproxy.pid #haproxy 进程PID文件,用于存放pid
maxconn 20480 #默认最大连接数
spread-checks 3
nbproc 8 #进程数量,一般为CPU核数2倍
####默认配置选项#######
defaults
log global
mode tcp #所处理的类别(7层代理http,4层代理tcp)
retries 3 #3次连接失败就认为服务器不可用,也可以通过后面设置
option redispatch #serverID 对应的服务器挂掉后,强制定向到其他健康的服务
器
contimeout 5000 #设置默认连接超时时间
clitimeout 50000 #设置客户端连接超时时间
srvtimeout 50000 #设置服务器连接超时时间
##### 设置frontend#########
frontend http_80_in
bind 10.0.0.7:80 #设置监听端口,即haproxy提供的web服务端口和VIP,
和lvs的vip 类似
####acl 策略配置######
acl frank_web hdr_reg(host) -i ^(www.test.com.sh|news.test.com.sh)$
mane 如果请求的域名 不区分大小写为这两个域名
#如果请求的域名满足正则表达式中的2个域名则把该条请求匹配给frank_web这条
acl ;-i 是忽略大小写
redirect prefix http://192.168.151.249 code 301 if fran_web
#如果请求的域名满足正则表达式中的2个域名则把该条请求匹配给frank_web这条
acl 并用301跳转给http://192.168.151.249这台服务器处理;最后的fran_web一定
要和acl上的frank_web一样,也就是 name处是什么,这里就写什么
default_backend wwwpools #定义了默认的请求交由wwwpools这个地址组处理
backend wwwpools #定义地址组,取名为wwwpools
balance roundrobin #定义调度算法为轮询模式
server www 10.0.0.8:8080 check inter 1500 rise 3 fall 3 weight 1
#定义一个地址RS节点,取名为www,健康检查间隔为1.5秒,检查三次则把RS
节点剔除;故障恢复后健康检查3次则认为真正正常
六、在301跳转的基础上做ACL分流
1、acl web_www path_beg /www/ #把后缀带/www/的请求定义为名字为
web_www的acl列表
2、acl web_bbs path_beg /bbs/ # #把后缀带/bbs/的请求定义为名字为
web_bbs的acl列表
3、use_backend wwwpools if web_www #调用web_www acl,只要请求后缀
有/www/字符就交由wwwpools这个地址组处理
4、usr_backend wwwbbs if web_bbs #调用web_bbs acl,只要请求后缀有
/bbs/字符就交由wwwbbs这个地址组处理
注意:操作之前先要配置wwwpools和wwwbbs这两个地址组
[记录]HAproxy负载均衡配置教程的更多相关文章
- haproxy负载均衡的安装配置
haproxy是一款可靠,高性能的并且可以支持TCP/HTTP的负载均衡器,和前面说过的nginx负载均衡类似,这里haproxy对于负载均衡来说更专业,支持的配置选项更多,稳定性也很强,甚至只需要一 ...
- Linux记录-Nginx+Tomcat负载均衡配置
Nginx负载均衡配置及策略: 轮询(默认) 优点:实现简单缺点:不考虑每台服务器的处理能力配置示例如下:upstream www.xxx.com {# 需要负载的server列表server www ...
- HAProxy详解(三):基于虚拟主机的HAProxy负载均衡系统配置实例【转】
一.基于虚拟主机的HAProxy负载均衡系统配置实例 1.通过HAProxy的ACL规则配置虚拟主机: 下面将通过HAProxy的ACL功能配置一套基于虚拟主机的负载均衡系统.这里操作系统环境为:Ce ...
- RabbitMq+Haproxy负载均衡
HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性.负载均衡,以及基于TCP和HTTP的应用程序代理. HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保 ...
- Nginx/LVS/HAProxy负载均衡软件的优缺点详解
PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下. 一般对负载均衡的使用是随着网站规模的提升根据不 ...
- Nginx/LVS/HAProxy负载均衡软件的优缺点详解(转)
PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下. 一般对负载均衡的使用是随着网站规模的提升根据不 ...
- Nginx/LVS/HAProxy负载均衡软件的优缺点详解(转)
PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下. 一般对负载均衡的使用是随着网站规模的提升根据不 ...
- (总结)Nginx/LVS/HAProxy负载均衡软件的优缺点详解
PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下. 一般对负载均衡的使用是随着网站规模的提升根据不 ...
- 解决 RabbitMQ 集群 Channel shutdown: connection error 错误(HAProxy 负载均衡)
相关文章:搭建 RabbitMQ Server 高可用集群 具体错误信息: 2018-05-04 11:21:48.116 ERROR 60848 --- [.168.0.202:8001] o.s. ...
随机推荐
- CSS计数器:counter
最近的需求,明星字体销售排行榜中,需要对字体的销售情况进行排序. 在早期,只有ol和ul可以对子元素li进行排序:如果不使用这两个标签,就由前台开发去手动填写序号. 当然,在这个需求中,数据不是实时更 ...
- Reverse Engineering Custom DataTypes -> GUID() in SQL Server to PostgreSQL
原文 https://archive.sap.com/discussions/thread/3641585 First you reverse engineer from a script where ...
- Android零基础入门第56节:翻转视图ViewFlipper打造引导页和轮播图
原文:Android零基础入门第56节:翻转视图ViewFlipper打造引导页和轮播图 前面两期学习了 ViewAnimator及其子类ViewSwitcher的使用,以及ViewSwitcher的 ...
- 关于DDD领域驱动设计的理论知识收集汇总
原文:关于DDD领域驱动设计的理论知识收集汇总 最近一直在学习领域驱动设计(DDD)的理论知识,从网上搜集了一些个人认为比较有价值的东西,贴出来和大家分享一下: 我一直觉得不要盲目相信权威,比如不能一 ...
- seq2seq和Transformer
简单而言,seq2seq由两个RNN组成,一个是编码器(encoder),一个是解码器(decoder).以MT为例,将源语言"我爱中国"译为"I love China& ...
- Compile for Windows on Linux(交叉编译,在Linux下编译Windows程序),以OpenSSL为例
OpenSSL for Windows In earlier articles, we have looked at how to create a gcc build environment on ...
- VCL比MFC好在哪里
作者:刘国华链接:https://www.zhihu.com/question/35218485/answer/118472021来源:知乎著作权归作者所有,转载请联系作者获得授权. 从使用感受而言, ...
- 海康威视频监控设备Web查看系统(三):Web篇
声明:本系列文章只提供交流与学习使用.文章中所有涉及到海康威视设备的SDK均可在海康威视官方网站下载得到.文章中所有除官方SDK以为的代码均可随意使用,任何涉及到海康威视公司利益的非正常使用由使用者自 ...
- java关键字-final
final特点: 1:这个关键字是一个修饰符,可以修饰类,方法,变量. 2:被final修饰的类是一个最终类,不可以被继承. 3:被final修饰的方法是一个最终方法,不可以被覆盖. 4:被final ...
- 快速开发第一个SpringBoot应用
通过笔者这段实践SpringBoot的学习,发现自从使用了SpringBoot后,就再也回不去SpringMVC了,因为相比于SpringMVC,SpringBoot真是太高效率了.下面我们看看它效率 ...