HAProxy

125 阅读4分钟

常见的WEB集群调度器

目前常见的Web集群调度器分为软件和硬件(专门用于负载均衡的调度器)
软件通常使用开源的LVSHaproxyNginx
  LVS性能最好,但搭建相对复杂;NginxUPstream模块支持群集功能,但是对群集节点健康检查功能不强,高并发性   能没有Haproxy好。
硬件一般使用比较多的是F5Array,也有很多人使用。国内的一些产品,如梭子鱼、绿盟等

HAProxy是什么

HAProxy是可提供高可用性,负载均衡以及基于TCP和HTTP应用的代理,是免费、快速并且可靠的一种解决方案,HAProxy非常适用于并发大(并发达1w以上)web站点,这些站点通常又需要会话保持或七层处理。HAProxy的运行模式使得它可以很简单安全的整合至当前的架构中,同时可以保护web服务器不被暴露到网络上。

查看nginx是否允许的方式

ps -elf |grep nginx | grep -v "grep"

image.png

ss -nltp |grep nginx

image.png

netstat -nltp |grep nginx

image.png

Haproxy主要特性

可靠性和稳定性非常好,可以与硬件级的F5负载均衡设别相媲美;
最高可以同时维护40000-50000个并发性,单位时间内处理的最大请求数为20000个,最大处理能力可达10Git/s;
支持多达8钟负载均衡算法;
支持Session会话保持,Cookie的引导;
支持通过获取指定的url来检测后端服务器的状态;
支持虚拟主机功能,从而实现web负载均衡更加灵活;
支持连接拒绝,全透明代理等独特的功能;
拥有强大的ACL支持,用于访问控制;
支持TCP协议的负载均衡转发;
支持客户端的keepalive功能,减少客户端与haproxy的多次三次握手导致资源浪费,让多个请求在一个tcp连接中完成

Haproxy可支持的调度算法

1.static-rr 轮询调度算法
2.roundrobin:表示简单的轮询
3.lesatconn(最小连接数算法)根据后端的节点连接数大小动态分配前端请求
4.source 表示根据请求源IP
5.uri 表示根据请求的URI,做cdn使用
6.url_param表示根据请求的URL参数
7.hdr(name)表示根据HTTP请求头来锁定每一次HTTP请求
8.rdp-cookie(name)表示根据cookie(name)来锁定并哈希每一次TCP请求

LVS、Nginx、Haproxy的区别

基于什么实现的负载均衡    LVS基于系统内核,Nginx和Haproxy基于应用程序
负载均衡性能             LVS 最好 > Haproxy 其次 > nginx 弱于其他两种
支持的代理类型           LVS 只能实现四层代理转发(不支持正则),Nginx和Haproxy都能实现四层和七层的代理转发(支持正则)
对于节点的健康检测        LVS只能对端口进行主动检查,Nginx只能对端口进行被动检查(只能通过发消息处理失败来判断) Haproxy能支持端口、url、脚本等多种主动检查

Haproxy 搭建web集群

Haproxy服务器:192.168.100.10
Nginx服务器1:192.168.100.20
Nginx服务器2:192.168.100.30
客户端:192.168.100.40

节点服务器1

1.关闭防火墙

image.png 2.创建nginx的用户

image.png 3.安装nginx相关的插件

image.png 4.解压压缩包

image.png 5.编译安装

image.png 6.设置html文件

image.png 7.启动nginx image.png

节点服务器2

1.关闭防火墙

systemctl stop firewalld
setenforce 0

2.创建nginx的用户

image.png 3.安装nginx相关插件

image.png 4.解压压缩包

image.png 5.编译安装

image.png 6.设置html文件

image.png

image.png

Haproxy服务器配置

1.关闭防火墙,将安装Haproxy所需软件包传到/opt目录下

image.png 2.编译安装 Haproxy

image.png

image.png

image.png

TARGET=linux26	#内核版本,
#使用uname -r查看内核,如:2.6.18-371.el5,此时该参数用TARGET=linux26;kernel大于2.6.28的用TARGET=linux2628

ARCH=x86_64 	#系统位数,64位系统

image.png

image.png 3.Haproxy服务器配置

image.png

image.png image.png

image.png

image.png 4.添加haproxy 系统服务

image.png

image.png

image.png image.png

haproxy的日志管理

默认haproxy的日志是输出到系统的syslog中,查看起来不是非常方便,为了更好的管理haproxy的日志,要将haproxy的info及notice日志分别记录到不同的日志文件中。(其他级别的日志仍记录在系统日志/var/log/messages中;因为error日志较少,故一般不做分离)

需要修改rsyslog配置,为了便于管理。将haproxy相关的配置独立定义到haproxy.conf,并放到/etc/rsyslog.d/下,rsyslog启动时会自动加载此目录下的所有配置文件。

日志管理实验

1.修改配置文件
global
   1og /dev/log local0 info
   log /dev/log local0 notice
   
   
service haproxy restart  #重启服务

2.需要修改rsyslog配置,为了便于管理

image.png

image.png 3.重启日志服务 systemctl restart rsyslog.service

image.png