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的日志

相关推荐
小林熬夜学编程33 分钟前
【Linux系统编程】第五十弹---构建高效单例模式线程池、详解线程安全与可重入性、解析死锁与避免策略,以及STL与智能指针的线程安全性探究
linux·运维·服务器·c语言·c++·安全·单例模式
LuckyTHP35 分钟前
CentOS 9 无法启动急救方法
linux·运维·centos
vvw&37 分钟前
如何在 Ubuntu 22.04 上安装带有 Nginx 的 ELK Stack
linux·运维·nginx·ubuntu·elk·elasticsearch·开源项目
加载中loading...43 分钟前
C/C++实现tcp客户端和服务端的实现(从零开始写自己的高性能服务器)
linux·运维·服务器·c语言·网络
木木em哈哈1 小时前
archlinux安装waydroid
linux·运维·服务器
苹果醋31 小时前
vue3 在哪些方便做了性能提升?
java·运维·spring boot·mysql·nginx
cetcht88881 小时前
光伏电站项目-视频监控、微气象及安全警卫系统
运维·人工智能·物联网
Dotrust东信创智1 小时前
浅谈丨功能安全测试,汽车的守护者
运维·服务器·数据库
sun0077009 小时前
ubuntu dpkg 删除安装包
运维·服务器·ubuntu