haproxy 负载均衡

haproxy负载均衡

haproxy:基于C语言开发的开源软件
支持高性能的tcp和http负载均衡器,工作中用的版本1.5.9
haproxy功能:主要用于高并发的web站点,工作原理和nginx、lvs都一样

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

正常功能:

1、tcp和http的反向代理
2、https的代理配置
3、可以针对http请求添加cookie,转发到后端服务器(添加缓存)
4、也支持主备切换(keepalive)
5、基于端口的实时监控
6、压缩响应的报文

haproxy的特点

1、可靠性和稳定非常好,可以和硬件F5 BIG 负载均衡的硬件设备
2、可以同时维护4w-5w个并发,单位时间内处理最大的请求20000个
3、支持8中负载均衡算法。但是haproxy不带缓存功能,但是可以支持会话保持
4、也支持配置虚拟主机。

haproxy的负载均衡算法:

1、roundrobin rr轮询

2、static-rr wrr加权轮询

3、leastconn 最小连接数

4、source 根据请求的源IP进行调度 sh

5、uri 根据请求地址进行调度

6、url param URL的参数实现调度

7、hdr(name) 根据http的请求头锁定每一次http的请求

8、rdp-cookie(name)根据cookie的名称来锁定每一次请求。

lvs nginx haproxy三种负载均衡的区别

1、Ivs基于linux内核实现负载均衡,性能最高,但是对系统硬件要求也比较高。

haproxy和nginx基于第三方应用实现负载均衡,性能较低。

2、lvs可以实现 'ip+端口' 的四层负载均衡,无法实现http请求的转发。

haproxy和nginx都可以实现四层和七层的转发。

3、lvs只能四层转发,单一的功能:基于端口来进行检测

haproxy 可以实现端口,uri 也可以

4、haproxy虽然功能强大但整体功能低于lvs的性能比gaproxy低

lvs-------haproxy---------nginx (bug多,稳定也差)

5、nginx主要应用还是web服务或者缓存服务器,nginx的stream模块和upstream也可以支持集群,但是对节点的健康检查能力不行。没有lvs和haproxy的监控性能好
Haproxy:是常用的负载均衡软件

nginx 支持四层转发,七层转发

haproxy 也可以四层和七层转发
基于四层的转发
1、lvs
2、nginx
3、haproxy
基于七层:
nginx
haproxy

/etc/haproxy/haproxy.cfg内容说明

global #全局配置定义 定义全局参数

log /dev/log localo info 系统日志

log /dev/log -local0 notice 修改日志的存放路径

log loghost localo info 注释

maxconn 10240 支持每个cpu的最大连接数 1024 一定要改limits.conf

chroot /usr/share/haproxy 注释

nbproc 6 在daemon下添加,同时并发进程数,要么和cpu相同,要么是cpu的两倍。

defaults 默认配置,包括监听地址和协议backend (upstream)

log global 引入全局配置日志格式

mode http 模式为http 七层

option dontlognull 不记录健康检查的日志信息

retries 3 检查节点服务器的失败次数 3次失败就认为节点服务器失效

redispatch 服务器的负载很高,自动结束当前队列处理比较久的连接

maxconn 2000 最大连接数,不能超过全局配置的定义数量

timeout http-request 10s 默认http请求的超时时间

timeout queue 1m 默认队列超时时间

timeout connect 10s 默认连接超时的时间

timeout client 1m 客户端的超时时间

timeout server 1m 服务端的超时时间

timeout http-keep-alive 10s 默认会话保持的超时时间

timeout check 10s 心跳检查的超时时间

nginx-haproxy负载均衡

1、haproxy代理服务器

192.168.10.10

2、web服务器

192.168.10.20

192.168.10.30

提供 nginx 页面服务

数据流向

haproxy代理服务器(七层

yum install -y pcre-devel bzip2-devel gcc gcc-c++ make
cd /opt/
tar zxvf haproxy-1.5.19.tar.gz
cd haproxy-1.5.19/
make TARGET=linux2628 ARCH=x86_64
make install
mkdir /etc/haproxy
cp /opt/haproxy-1.5.19/examples/haproxy.cfg /etc/haproxy/
cp /opt/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy
chmod 777 /etc/init.d/haproxy
chkconfig --add /etc/init.d/haproxy
ln -s /usr/local/sbin/haproxy /usr/sbin
vim /etc/haproxy/haproxy.cfg
.................
修改
log /dev/log local0 info
log /dev/log local0 notice
chroot /usr/share/haproxy 注释掉
nbproc 2 在daemon下添加
contimeout 5000 注释掉
clitimeout 50000 注释掉
srvtimeout 50000 注释掉
添加以下内容
timeout http-request 10s
#默认http请求的超时时间
timeout queue 1m
#默认队列的超时时间
timeout connect 10s
#默认连接的超时时间
timeout client 1m
#客户端默认的连接超时时间
timeout server 1m
#客户端默认的超时时间
timeout http-keep-alive 10s
#默认会话的保持的超时时间
timeout check 10s
#心跳检查的超时时间,在下面添加
listen liu 0.0.0.0:80
option httpchk GET /index.html
balance roundrobin 算法
server liu1 192.168.10.20:80 check inter 2000 fall 3
server liu2 192.168.10.30:80 check inter 2000 fall 3
把添加完成后面的全部删除
.................
systemctl restart haproxy

yum install -y pcre-devel bzip2-devel gcc gcc-c++ make
cd /opt/
tar zxvf haproxy-1.5.19.tar.gz
cd haproxy-1.5.19/
make TARGET=linux2628 ARCH=x86_64
make install
mkdir /etc/haproxy
cp /opt/haproxy-1.5.19/examples/haproxy.cfg /etc/haproxy/
cp /opt/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy
chmod 777 /etc/init.d/haproxy
chkconfig --add /etc/init.d/haproxy
ln -s /usr/local/sbin/haproxy /usr/sbin
vim /etc/haproxy/haproxy.cfg
.................
修改
log /dev/log local0 info
log /dev/log local0 notice
chroot /usr/share/haproxy 注释掉
nbproc 2 在daemon下添加
contimeout 5000 注释掉
clitimeout 50000 注释掉
srvtimeout 50000 注释掉
添加以下内容
timeout http-request 10s
#默认http请求的超时时间
timeout queue 1m
#默认队列的超时时间
timeout connect 10s
#默认连接的超时时间
timeout client 1m
#客户端默认的连接超时时间
timeout server 1m
#客户端默认的超时时间
timeout http-keep-alive 10s
#默认会话的保持的超时时间
timeout check 10s
#心跳检查的超时时间,在下面添加
frontend liu
bind *:80
mode tcp
default_backend liu
backend liu
mode tcp
balance roundrobin
server liu1 192.168.10.20:80 check inter 2000 fall 3
server liu2 192.168.10.30:80 check inter 2000 fall 3
把添加完成后面的删除
.................
systemctl restart haproxy

Haproxy的日志重定义

日志单独存放

nginx服务
keepalive_timeout 65; 注释掉或将其改为0
haproxy服务
vim /etc/haproxy/haproxy.cfg
global
log /dev/log local0 info
log /dev/log local0 notice
systemctl restart haproxy
vim /etc/rsyslog.d/haproxy.conf
....................
if (programname == 'haproxy' and syslogseverity-text == 'info')
then -/var/log/haproxy/haproxy-info.log
&~
if (programname == 'haproxy' and syslogseverity-text == 'notice')
then -/var/log/haproxy/haproxy-notice.log
&~
只能添加ifno和notice其他的要手动添加,格式类似
....................
systemctl restart rsyslog.service
haproxy日志会修改到cd /var/log/haproxy/下,/var/log/messages中将不会显示haproxy的日志

相关推荐
SelectDB20 小时前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
XIAOHEZIcode2 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220703 天前
如何搭建本地yum源(上)
运维
大树886 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠6 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质6 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工6 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智6 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_6 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉6 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造