常见的WEB集群调度器
目前常见的Web集群调度器分为软件和硬件(专门用于负载均衡的调度器)
软件通常使用开源的LVS、Haproxy、Nginx
LVS性能最好,但搭建相对复杂;Nginx的UPstream模块支持群集功能,但是对群集节点健康检查功能不强,高并发性 能没有Haproxy好。
硬件一般使用比较多的是F5、Array,也有很多人使用。国内的一些产品,如梭子鱼、绿盟等
HAProxy是什么
HAProxy是可提供高可用性,负载均衡以及基于TCP和HTTP应用的代理,是免费、快速并且可靠的一种解决方案,HAProxy非常适用于并发大(并发达1w以上)web站点,这些站点通常又需要会话保持或七层处理。HAProxy的运行模式使得它可以很简单安全的整合至当前的架构中,同时可以保护web服务器不被暴露到网络上。
查看nginx是否允许的方式
ps -elf |grep nginx | grep -v "grep"
ss -nltp |grep nginx
netstat -nltp |grep nginx
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.关闭防火墙
2.创建nginx的用户
3.安装nginx相关的插件
4.解压压缩包
5.编译安装
6.设置html文件
7.启动nginx
节点服务器2
1.关闭防火墙
systemctl stop firewalld
setenforce 0
2.创建nginx的用户
3.安装nginx相关插件
4.解压压缩包
5.编译安装
6.设置html文件
Haproxy服务器配置
1.关闭防火墙,将安装Haproxy所需软件包传到/opt目录下
2.编译安装 Haproxy
TARGET=linux26 #内核版本,
#使用uname -r查看内核,如:2.6.18-371.el5,此时该参数用TARGET=linux26;kernel大于2.6.28的用TARGET=linux2628
ARCH=x86_64 #系统位数,64位系统
3.Haproxy服务器配置
4.添加haproxy 系统服务
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配置,为了便于管理
3.重启日志服务
systemctl restart rsyslog.service