灯塔网站制作公司,企业网站建设自己的官网,毕业设计代做网站 知乎,wordpress 首页分栏目前常见的Web集群调度器分为软件和硬件
软件通常使用开源的LVS、Haproxy、Nginx LVS性能最好#xff08;基于内核转发#xff09;#xff0c;但是搭建相对复杂#xff1b;Nginx的upstream模块支持群集功能#xff0c;但是对群集节点健康检查功能不强#xff0c;高并发性…目前常见的Web集群调度器分为软件和硬件
软件通常使用开源的LVS、Haproxy、Nginx LVS性能最好基于内核转发但是搭建相对复杂Nginx的upstream模块支持群集功能但是对群集节点健康检查功能不强高并发性能没有 Haproxy好 硬件一般使用比较多的是F5最多、Array也有很多人使用国内的一些产品如梭子鱼、绿盟等
不在乎成本的公司会选择用硬件更多的是采用软件
HAProxy介绍
LVS抗负载能力强但不支持正则表达式、不能实现动静分离大型网站LVS实施配置复杂维护成本相对较高一般在上百台集群中使用
HAProxy是一款可提供高可用性和负载均衡基于TCP四层和HTTP七层应用的代理的软件
适用于负载大的web站点运行再硬件上可以支持上万条并发连接的连接请求 HAProxy的主要特性
LVS在企业应用中抗负载能力强但不支持正则表达式不能实现动静分离大型网站配置复杂维护成本高
HARoxy
HAProxy负载均衡的策略8种
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好。
nginx ① 支持正则 ② 只支持基于端口的健康检查 ③ 不支持session直接保持、但能通过ip_hash来解决 ④ 对网络稳定性要求不高 ⑤ 反向代理能力强
LVS ① 只能基于四层端口转发 ② 尽在四层做分发作用 抗负载能力强 ③ 应用范围广
haproxy ① 支持8中负载均衡策略 ② 仅作负载均衡软件使用在高并发情况下性能优于nginx ③ 支持URL检测 支持session保持
Haproxy搭建 Web 群集
Haproxy服务器192.168.220.121 Nginx 服务器1192.168.220.111 Nginx 服务器2192.168.220.112 客户端192.168.220.10
haproxy 服务器部署
1.关闭防火墙将安装Haproxy所需软件包传到/opt目录下
systemctl stop firewalld
setenforce 0cd /opt
上传haproxy-1.5.19.tar.gz
2.编译安装 Haproxy
yum install -y pcre-devel bzip2-devel gcc gcc-c make
tar 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的用TARGETlinux2628
ARCHx86_64 #系统位数64位系统 ----------------------------------------------------------------------------------------------------------
3.Haproxy服务器配置
mkdir /etc/haproxy
cp examples/haproxy.cfg /etc/haproxy/cd /etc/haproxy/
vim haproxy.cfgglobal #全局配置主要用于定义全局参数属于进程级的配置通常和操作系统配置有关
--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.16:80 check inter 2000 fall 3 #定义在线节点server inst2 192.168.10.17:80 check inter 2000 fall 3---------------------参数说明----------------------------------- balance roundrobin #负载均衡调度算法 #轮询算法roundrobin最小连接数算法leastconn来源访问调度算法source类似于nginx的ip_hash
check 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
节点服务器部署
【安装 Nginx 服务】192.168.220.111、192.168.220.112
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
1、安装依赖包
yum -y install pcre-devel zlib-devel gcc gcc-c make
2、创建运行用户
useradd -M -s /sbin/nologin nginx
3、编译安装
cd /opt
tar zxvf nginx-1.22.0.tar.gz -C /opt/cd nginx-1.22.0/
./configure \
--prefix/usr/local/nginx \
--usernginx \
--groupnginx \
--with-http_stub_status_module./configure --with-streammake -j 4 make install
4、优化路径
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
5、添加 Nginx 系统服务
vim /lib/systemd/system/nginx.service
[Unit]
Descriptionnginx
Afternetwork.target
[Service]
Typeforking
PIDFile/usr/local/nginx/logs/nginx.pid
ExecStart/usr/local/nginx/sbin/nginx
ExecReload/bin/kill -s HUP $MAINPID
ExecStop/bin/kill -s QUIT $MAINPID
PrivateTmptrue
[Install]
WantedBymulti-user.target
6、赋权、启动Nginx服务
chmod 777 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service
--192.168.220.111--
echo this is HN web1 /usr/local/nginx/html/test.html
--192.168.220.112--
echo this is HN web2 /usr/local/nginx/html/test.html
测试 Web群集
在客户端使用浏览器打开
http://192.168.220.121/test.html
不断刷新浏览器测试负载均衡效果