集群应用
用户态调用内核态
web集群调度器分为软件和硬件
负载均衡器 F5,梭子鱼,绿盟硬件负载 软LVS,nginx,HAproxy负载云负载slb(阿里云)clb(腾讯云)
高负在深信服防护火墙
keepalived的意义
子目录
数据流向
tomcat不常用,用spring cloud
haproxy 四层七层都能用
LVS在企业应用中康复在能力强但LVS不支持正则化表达式,不能实现动静分离对大型网站,LVS的事实配置复杂,维护成本相对较高
Haproxy是一款高可用,负载均衡,基于tcp和http的代理软件适用于负载打的web站点,玉兴在硬件上可支持数万以上的并发连接请求(1W以上用Haproxy)
Haproxy常用三种调度算法
RR算法是最简单的一种算法,及轮询调度
HAProxy的主要特性有:
- 可靠性和稳定性非常好;
- 最高可以同时维护40000-50000个并发连接,单位时间内处理的最大请求数为20000个,最大处理能力可达10Git/s;
- 支持多达8种负载均衡算法,同时也支持会话保持:支持虚机主机功能,从而实现web负载均衡更加灵活:
- 支持连接拒绝、全透明代理等独特的功能;
- 拥有强大的ACL支持,用于访问控制:
- 其独特的弹性二叉树数据结构,使数据结构的复杂性上升到了0(1),即数据的查寻速度不会随着数据条目的增加而速度有所下降:·
- 支持客户端的keepalive功能,减少客户端与haproxy的多次三次握手导致资源浪费,让多个请求在一个tcp连接中完成:
- 支持TCP加速,零复制功能,类似于mmap机制;支持响应池 (response buffering) ;
- 支持RDP协议:
- ·基于源的粘性,类似ngin的ip hash功能,把来自同一客户端的请求在一定时间内始终调度到上游的同
- 服务器:
- 更好统计数据接口,其web接口显示后端集群中各个服务器的接收、发送、拒绝、错误等数据的统计信
- 息:
- 详细的健康状态检测,web接口中有关于对上游服务器的健康检测状态,并提供了一定的管理功能:
- 基于流量的健康评估机制:
- 基于http认证:
- 基于命令行的管理接口:
- 日志分析器,可对日志进行分析。
HAProxy负载均衡策略非常多,常见的有如下8种:
(1) roundrobin,表示简单的轮询
(2) static-rr,表示根据权重
(3) leastconn,表示最少连接者先处理
(4)source,表示根据请求源IP
(5)uri,表示根据请求的URI,做cdn需使用;
(6)表示根据请求的UR1参数 balance url param'url param,requires an URI parameter name
(7) hdr (name),表示根据HTTP请求头来锁定每一次HT引请求;
(8) rdp-cookie(name),表示根据cookie(name)来锁定并哈希每一次TCP请求。
LVS,nginx,HAproxy区别
LVS是基于linux操作系统内核实现负载句横的,HAproxy和nginx是基于第三方应用实现的啊软件负载均衡;
LVS是可实现4层的ip负载均衡技术,无法实现基于目录,url的转发,而HAproxy和nginx都可实现4
层七层技术Haproxy可提供tcp和http应用的负载均衡综合解决
LVS因为工作在ISO模性的第四层,其状态监控单一,而HAproxy在状态检测方面功能丰富,强大,可支持端口url,脚本等多种状态检测
Haproxy功能强大,但整体性能低于4层模式的LVS负载均衡
nginx主要用于web服务器或缓存服务器。nginx的upstream模块虽然支持群集功能,按时是对群集节点健康检查功能不强,没Haproxy好。
haproxy服务的部署
mkdir /etc/haproxy
cp /opt/haproxy/haproxy-1.5.19/examples/haproxy.cfg /etc/haproxy/
cd /etc/haproxy/
vim haproxy.cfg
注释第五行,chroot运行路径,为该服务自设置的根目录,一般需将此行注释掉
nbproc 2 #添加,设置并发进程数,建议与当前服务器CPU核数相等或为其2倍
listen webcluster 0.0.0.0:80 #haproxy实例状态监控部分配置,定义一个名为webcluster的应用
option httpchk GET /test.html #检查服务器的test.html文件balance roundrobin #负载均衡调度算法
#轮询算法:roundrobin;最小连接数算法:leastconn;来源访问调度算法:source,类似于nginx的ip_hash
global
log /dev/log local0 info
log /dev/log local1 notice
#log loghost local0 info
maxconn 4096
# chroot /usr/share/haproxy
uid 99
gid 99
daemon
#debug
#quiet
nbproc 2
defaults
log global
mode http
option httplog
option dontlognull
retries 3
redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen webcluster 0.0.0.0:80
option httpchk GET /test.html
balance roundrobin
server inst1 192.168.232.7:80 check inter 2000 fall 3
server inst2 192.168.232.17:80 check inter 2000 fall 3
添加服务
cp /opt/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy
chmod +x haproxy
chkconfig --add /etc/init.d/haproxy
cd /etc/init.d
ln -s /usr/local/sbin/haproxy /usr/sbin
service haproxy start 或 /etc/init.d/haproxy start
检测方法:
两台nginx自行安装
添加
echo "<h1>this is Nginx01</h1>" > /usr/local/nginx/html/index.html
echo "<h1>this is Nginx02</h1>" > /usr/local/nginx/html/index.html
curl 192.168.232.105(haproxy服务器)/test.html验证
#需要修改rsyslog配置,为了便于管理。将haproxy相关的配置独立定义到haproxy.conf,并放到/etc/rsyslog.d/下,rsyslog启动时会自动加载此目录下的所有配置文件。
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
&~
#说明:
这部分配置是将haproxy的info日志记录到/var/log/haproxy/haproxy-info.log下,将notice日志记录到/var/log/haproxy/haproxy-notice.log下。“&~”表示当日志写入到日志文件后,rsyslog停止处理这个信息。
systemctl restart rsyslog.service
systemctl restart haproxy
tail -f /var/log/haproxy/haproxy-info.log #查看haproxy的访问请求日志信息