HAproxy负载均衡集群

HAproxy相关知识

常用的负载均衡调度器

软件通常使用开源的LVS、Haproxy、 Nginx

LVS性能最好,但是搭建相对复杂;Nginx 的upstream模块支持群集功能,但是对群集节点健康检查功能不强,高并发性能没有Haproxy好。

硬件一般使用比较多的是F5、Array,也有很多人使用国内的一些产品,如梭子鱼、绿盟等硬件的效果比软件好,更加稳定,但管理成本高。

haproxy的缺点

1.单节点部署,单实例运行。代理服务器出现故障,整个负载集群全部不可用。

2.haproxy是一个无状态的负载均衡器,没缓存,没有会话保持,靠应用程序实现会话保持。状态不是保存在代理服务器。而在后端服务器,或者依靠cookie

3.日志问题:haproxy的日志比较简单,只提供基本的请求日志和错误日志。需要更高等级的日志。人工自定义

Haproxy支持的功能:

1.tcp和http的反向代理功能

2.https的代理配置

3.可以针对http 请求添加缓存(cookie),可以转发到后端服务器

4.支持主备切换

5.实现 基于端口的实时监控

6.压缩响应报文

haproxy的特点

1.可靠性和稳定性非常好,可以和硬件f5 BIG负载均衡的硬件设备相媲美

2.同时维护40000-50000个并发连接,单位时间内处理最大请求数20000个。

3.支持8种负载均衡算法。但是HAPROXY不带缓存功能,但是可以支持会话保持

4.也支持配置虚拟主机

LVS,nginx,haproxy的区别

lvs ,nginx,haproxy基于四层转发

nginx ,haproxy基于七层

●LVS基于Linux操作系统内核实现软负载均衡,而HAProxy和Nginx是基于第三方应用实现的软负载均衡;

●LVS是可实现4层的IP负载均衡技术,无法实现基于目录、URL的转发。而HAProxy和Nginx都可以实现4层和7层技术,HAProxy可提供TCP和HTTP应用的负载均衡综合解决方案;

●LVS因为工作在ISO模型的第四层,其状态监测功能单一,而HAProxy在状态监测方面功能更丰富、强大,可支持端口、URL、脚本等多种状态检测方式;

●HAProxy功能强大,单纯从效率上来讲HAProxy会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的。但整体性能低于4层模式的LVS负载均衡;

●Nginx主要用于Web服务器或缓存服务器。Nginx的upstream模块虽然也支持群集功能,但是对群集节点健康检查功能不强,性能没有Haproxy好。

haproxy的负载均衡算法

|----------------------|------------------------------|
| 算法 | 含义 |
| roundrobin rr | 轮询 |
| static-rr wrr | 加权轮询 |
| leastconn | 最小连接数 |
| source | 根据请求的源IP进行调度 sh |
| uri | 根据请求地址进行调度 |
| url param | URL的参数实现调度 |
| hdr(name) | 表示根据http的请求头锁定每一次http的请求 |
| rdp-cookie(name) | 表示根据cookie的名称来锁定每一次请求 |

Haproxy负载均衡部署

1.搭建

2.实现七层 实现四层

3.如何实现haproxy的日志单独存放

复制代码
cd /usr/local/nginx/html
//制作访问页面

安装软件

复制代码
yum install -y pcre-devel bzip2-devel gcc gcc-c++ make
 
tar zxvf haproxy-1.5.19.tar.gz
cd haproxy-1.5.19/
make TARGET=linux2628 ARCH=x86_64
make install
Haproxy服务器配置
复制代码
mkdir /etc/haproxy

cp /opt/haproxy-1.5.19/examples/haproxy.cfg /etc/haproxy/

vim haproxy.cfg
log /dev/log local0 info
//系统日志
log /dev/log local0 notice
//修改日志存放路径
#log loghost local0 info
//注释

defaults   	#配置默认参数,这些参数可以被用到Listen,frontend,backend组件     
log     global			#引入global定义的日志格式
mode    http			#模式为http(7层代理http,4层代理tcp)
option  httplog			#日志类别为http日志格式
option  dontlognull		#不记录健康检查日志信息
retries 3				#检查节点服务器失败次数,连续达到三次失败,则认为节点不可用
redispatch				#当服务器负载很高时,自动结束当前队列处理比较久的连接
maxconn 2000			#最大连接数,"defaults"中的值不能超过"global"段中的定义
#contimeout 5000        #设置连接超时时间,默认单位是毫秒
#clitimeout 50000       #设置客户端超时时间,默认单位是毫秒
#srvtimeout 50000       #设置服务器超时时间,默认单位是毫秒
timeout http-request 10s 	    #默认http请求超时时间
timeout queue 1m   		        #默认队列超时时间
timeout connect 10s		        #默认连接超时时间,新版本中替代contimeout,该参数向后兼容
timeout client 1m		        #默认客户端超时时间,新版本中替代clitimeout,该参数向后兼容
timeout server 1m		        #默认服务器超时时间,新版本中替代srvtimeout,该参数向后兼容
timeout http-keep-alive 10s		# 默认持久连接超时时间
timeout check 10s		        #设置心跳检查超时时间
复制代码
 listen test 0.0.0.0:80
 option httpchk GET /index.html
 balance roundrobin
 server app_1 192.168.233.62:80 check inter 2000 fall 3
 //check inter 开启对后端服务器的健康检测,检测的时间间隔:2000毫秒
 //fall 3 表示连续三次检测不到,则认为该节点失效。
 server app_2 192.168.233.63:80 check inter 2000 fall 3

haproxy服务添加

复制代码
 cd /opt/haproxy-1.5...
 cd examples/
 cp haproxy.init /etc/init.d/haproxy
 chmod 777 /etc/init.d/haproxy
 chkconfig --add /etc/init.d/haproxy
 cd /usr/local/sbin
 ls
 ln -s /usr/local/sbin/haproxy /usr/sbin
 systemctl restart halt
 systemctl restart haproxy

测试

四层代理

复制代码
四层
注释listen test 0.0.0.0:80以下

frontend test 
bind *:80
mode tcp
defaults_backend test

backend test
mode tcp 
balance static-rr
server server1 192.168.233.62:80 check inter 2000 fall 3 weight 3

server server2 192.168.233.63:80 check inter 2000 fall 3 weight 4
wq
systemctl restart haproxy

日志存放

复制代码
vim haproxy.cfg


vim /etc/rsyslog.d/haproxy.conf
if ($programname == 'haproxy' and $syslogserverity-test == 'info' )
then -/var/log/haproxy/haproxy-info.log
&~ 
// 表示rsyslog服务处理完指定的信息,把日志写入到日志文件之后,rsyslog不再处理其他信息。
if ( $programname == 'haproxy' and $syslogserverity-test == 'notice' )
then -/var/log/haproxy/haproxy-notice.log
&~
相关推荐
西贝爱学习4 分钟前
【软件】nginx-1.28.0安装包(Windows版)
运维·nginx
z2023050814 分钟前
linux之 remoteproc 内核实现源码分析
linux·运维·服务器
阿方索26 分钟前
shell脚本
linux·运维
嗨丶王哪跑37 分钟前
网络安全审计技术原理与应用
运维·网络·安全·web安全
斯普信专业组38 分钟前
Skywalking从部署集成到动态调优(上)
运维·skywalking·动态调优
斯普信专业组40 分钟前
Skywalking从部署集成到动态调优(下)
运维·skywalking·动态调优
zrande1 小时前
Nginx 负载均衡通用方案
nginx·负载均衡
卓小帅的博客2 小时前
跨服务器快速传输数据
运维·服务器
朝阳5812 小时前
nuxt2 发布到线上
运维·服务器