企业站用什么程序做网站,提供网站建设公司电话,外贸网站推荐,wordpress主题导航菜单目录
Web集群调度器
Haproxy应用分析
HAProxy的主要特性有
HAProxy负载均衡策略
LVS、Nginx、HAproxy的区别
Haproxy搭建 Web 群集
部署Nginx服务器 192.168.142.30 部署Nginx服务器 192.168.142.50
部署Haproxy服务器192.168.142.20
日志定义 Web集群调度器
目前常见…目录
Web集群调度器
Haproxy应用分析
HAProxy的主要特性有
HAProxy负载均衡策略
LVS、Nginx、HAproxy的区别
Haproxy搭建 Web 群集
部署Nginx服务器 192.168.142.30 部署Nginx服务器 192.168.142.50
部署Haproxy服务器192.168.142.20
日志定义 Web集群调度器
目前常见的Web集群调度器分为软件和硬件
软件通常使用开源的LVS、Haproxy、Nginx
LVS性能最好基于内核转发但是搭建相对复杂Nginx的upstream模块支持群集功能但是对群集节点健康检查功能不强高并发性能没有 Haproxy好。
LVSHAproxynginx
硬件一般使用比较多的是F5最多、Array也有很多人使用国内的一些产品如梭子鱼、绿盟等
不在乎成本的公司会选择用硬件更多的是采用软件
Haproxy应用分析
LVS在企业应用中抗负载能力很强但存在不足 LVS不支持正则处理不能实现动静分离
对于大型网站LVS的实施配置复杂维护成本相对较高
一般在上百台群集中使用
Haproxy是一款可提供高可用性、负载均衡、及基于TCP和HTTP应用的代理的软件 适用于负载大的Web站点
运行在硬件上可支持数以万计的并发连接的连接请求
HAProxy的主要特性有
●可靠性和稳定性非常好可以与硬件级的F5负载均衡设备相媲美 ●最高可以同时维护40000-50000个并发连接单位时间内处理的最大请求数为20000个最大处理能力可达10Git/s ●支持多达8种负载均衡算法同时也支持会话保持 ●支持虚机主机功能从而实现web负载均衡更加灵活 ●支持连接拒绝、全透明代理等独特的功能 ●拥有强大的ACL支持用于访问控制 ●其独特的弹性二叉树数据结构使数据结构的复杂性上升到了0(1)即数据的查寻速度不会随着数据条目的增加而速度有所下降 ●支持客户端的keepalive功能减少客户端与haproxy的多次三次握手导致资源浪费让多个请求在一个tcp连接中完成 ●支持TCP加速零复制功能类似于mmap机制 ●支持响应池response buffering ●支持RDP协议 ●基于源的粘性类似nginx的ip_hash功能把来自同一客户端的请求在一定时间内始终调度到上游的同一服务器 ●更好统计数据接口其web接口显示后端集群中各个服务器的接收、发送、拒绝、错误等数据的统计信息 ●详细的健康状态检测web接口中有关于对上游服务器的健康检测状态并提供了一定的管理功能 ●基于流量的健康评估机制 ●基于http认证 ●基于命令行的管理接口 ●日志分析器可对日志进行分析。
HAProxy负载均衡策略
1roundrobin表示简单的轮询 2static-rr表示根据权重 3leastconn表示最少连接者先处理 4source表示根据请求源IP 5uri表示根据请求的URI,做cdn需使用; 6url_param表示根据请求的URl参数balance url_param requires an URL parameter name 7hdr(name)表示根据HTTP请求头来锁定每一次HTTP请求; 8rdp-cookie(name)表示根据cookie(name)来锁定并哈希每一次TCP请求。 LVS、Nginx、HAproxy的区别
●LVS基于Linux操作系统内核实现软负载均衡而HAProxy和Nginx是基于第三方应用实现的软负载均衡 ●LVS是可实现4层的IP负载均衡技术无法实现基于目录、URL的转发。而HAProxy和Nginx都可以实现4层和7层技术HAProxy可提供TCP和HTTP应用的负载均衡综合解决方案 ●LVS因为工作在ISO模型的第四层其状态监测功能单一而HAProxy在状态监测方面功能更丰富、强大可支持端口、URL、脚本等多种状态检测方式 ●HAProxy功能强大但整体性能低于4层模式的LVS负载均衡。 ●Nginx主要用于Web服务器或缓存服务器。Nginx的upstream模块虽然也支持群集功能但是对群集节点健康检查功能不强性能没有Haproxy好。
Haproxy搭建 Web 群集
Haproxy服务器192.168.142.20
Nginx服务器 192.168.142.30
Nginx服务器 192.168.142.50
部署Nginx服务器 192.168.142.30
把nginx.repo拖到/etc/yum.repos.d
cd /usr/share/nginx/html/
mv index.html index.html.bakvim index.html
html
bodyh1this is nginx1 test web/h1
/body
/html 部署Nginx服务器 192.168.142.50
把nginx.repo拖到/etc/yum.repos.d
cd /usr/share/nginx/html/
mv index.html index.html.bakvim index.html
html
bodyh1this is nginx2 test web/h1
/body
/html
部署Haproxy服务器192.168.142.20
1.关闭防火墙将安装Haproxy所需软件包传到/opt目录下
systemctl stop firewalld
setenforce 0haproxy-1.5.19.tar.gz2.编译安装 Haproxy
yum install -y pcre-devel bzip2-devel gcc gcc-c maketar zxvf haproxy-1.5.19.tar.gz
cd haproxy-1.5.19/
make TARGETlinux2628 ARCHx86_64
make install---------------------参数说明---------------------------------------------------------------------------
TARGETlinux26 #内核版本
#使用uname -r查看内核如2.6.18-371.el5此时该参数用TARGETlinux26kernel大于2.6.28的用TARGETlinux2628ARCHx86_64 #系统位数64位系统
3.Haproxy服务器配置
mkdir /etc/haproxy
cp examples/haproxy.cfg /etc/haproxy/cd /etc/haproxy/
vim haproxy.cfg
global #全局配置主要用于定义全局参数属于进程级的配置通常和操作系统配置有关
--4~5行--修改定义haproxy日志输出设置和日志级别local0为日志设备默认存放到系统日志log /dev/log local0 info #修改log /dev/log local0 notice #修改#log loghost local0 infomaxconn 4096 #最大连接数需考虑ulimit -n限制推荐使用10240
--8行--注释chroot运行路径为该服务自设置的根目录一般需将此行注释掉#chroot /usr/share/haproxyuid 99 #用户UIDgid 99 #用户GIDdaemon #守护进程模式nbproc 1 #添加设置并发进程数建议与当前服务器CPU核数相等或为其2倍defaults #配置默认参数这些参数可以被用到Listenfrontendbackend组件 log global #引入global定义的日志格式mode http #模式为http7层代理http4层代理tcpoption httplog #日志类别为http日志格式option dontlognull #不记录健康检查日志信息retries 3 #检查节点服务器失败次数连续达到三次失败则认为节点不可用redispatch #当服务器负载很高时自动结束当前队列处理比较久的连接maxconn 2000 #最大连接数“defaults”中的值不能超过“global”段中的定义#contimeout 5000 #设置连接超时时间默认单位是毫秒#clitimeout 50000 #设置客户端超时时间默认单位是毫秒#srvtimeout 50000 #设置服务器超时时间默认单位是毫秒timeout http-request 10s #默认http请求超时时间timeout queue 1m #默认队列超时时间timeout connect 10s #默认连接超时时间新版本中替代contimeout该参数向后兼容timeout client 1m #默认客户端超时时间新版本中替代clitimeout该参数向后兼容timeout server 1m #默认服务器超时时间新版本中替代srvtimeout该参数向后兼容timeout http-keep-alive 10s #默认持久连接超时时间timeout check 10s #设置心跳检查超时时间--删除下面所有listen项--添加
listen webcluster 0.0.0.0:80 #haproxy实例状态监控部分配置定义一个名为webcluster的应用option httpchk GET /test.html #检查服务器的test.html文件balance roundrobin #负载均衡调度算法使用轮询算法roundrobinserver inst1 192.168.10.15:80 check inter 2000 fall 3 #定义在线节点server inst2 192.168.10.16:80 check inter 2000 fall 3---------------------参数说明---------------------------------------------------------------------------
balance roundrobin #负载均衡调度算法
#轮询算法roundrobin最小连接数算法leastconn来源访问调度算法source类似于nginx的ip_hashcheck inter 2000 #表示启用对此后端服务器执行健康检查设置健康状态检查的时间间隔单位为毫秒
fall 3 #表示连续三次检测不到心跳频率则认为该节点失效
若节点配置后带有“backup”表示该节点只是个备份节点仅在所有在线节点都失效该节点才启用。不携带“backup”表示为主节点和其它在线节点共同提供服务。
----------------------------------------------------------------------------------------------------------4.添加haproxy 系统服务
cp /opt/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy
chmod x haproxy
chkconfig --add /etc/init.d/haproxyln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
service haproxy start 或 /etc/init.d/haproxy start
日志定义
#默认haproxy的日志是输出到系统的syslog中查看起来不是非常方便为了更好的管理haproxy的日志我们在生产环境中一般单独定义出来。需要将haproxy的info及notice日志分别记录到不同的日志文件中。
vim /etc/haproxy/haproxy.cfg
globallog /dev/log local0 infolog /dev/log local0 noticeservice haproxy restart#需要修改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.servicetail -f /var/log/haproxy/haproxy-info.log #查看haproxy的访问请求日志信息