网站出现500成都市建设网站公司

张小明 2026/3/12 19:50:36
网站出现500,成都市建设网站公司,浦城 建网站,寿光建设网站HAProxy 负载均衡全解析 从基础部署、负载策略到会话保持及性能优化指南 官网 https://www.haproxy.org/ 文档 https://www.haproxy.org/#docs 下载 https://www.haproxy.org/#down HAProxy 介绍 HAProxy 是一款提供高可用性、负载均衡以及基于TCP#xff08;第四层#xff…HAProxy 负载均衡全解析从基础部署、负载策略到会话保持及性能优化指南官网 https://www.haproxy.org/文档 https://www.haproxy.org/#docs下载 https://www.haproxy.org/#downHAProxy 介绍HAProxy 是一款提供高可用性、负载均衡以及基于TCP第四层和HTTP第七层应用的代理软件支持虚拟主机。它是免费、快速并且可靠的一种解决方案。 HAProxy 特别适用于那些负载特大的web站点这些站点通常又需要会话保持或七层处理。HAProxy 运行在时下的硬件上完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中 同时可以保护你的web服务器不被暴露到网络上。HAProxy 实现了一种事件驱动、单一进程模型此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户端(User-Space) 实现所有这些任务。此模型的弊端是在多核系统上这些程序通常扩展性较差。这就是为什么他们必须进行优化以 使每个CPU时间片(Cycle)做更多的工作。性能HAProxy借助于OS上几种常见的技术来实现性能的最大化。1单进程、事件驱动模型显著降低了上下文切换的开销及内存占用。2O(1)事件检查器(event checker)允许其在高并发连接中对任何连接的任何事件实现即时探测。3在任何可用的情况下单缓冲(single buffering)机制能以不复制任何数据的方式完成读写操作这会节约大量的CPU时钟周期及内存带宽4借助于Linux 2.6 ( 2.6.27.19)上的splice()系统调用HAProxy可以实现零复制转发(Zero-copy forwarding)在Linux 3.5及以上的OS中还可以实现零复制启动(zero-starting)5内存分配器在固定大小的内存池中可实现即时内存分配能够显著减少创建一个会话的时长6树型存储侧重于使用作者多年前开发的弹性二叉树实现了以O(log(N))的低开销来保持计时器命令、保持运行队列命令及管理轮询及最少连接队列7优化的HTTP首部分析优化的首部分析功能避免了在HTTP首部分析过程中重读任何内存区域8精心地降低了昂贵的系统调用大部分工作都在用户空间完成如时间读取、缓冲聚合及文件描述符的启用和禁用等所有的这些细微之处的优化实现了在中等规模负载之上依然有着相当低的CPU负载甚至于在非常高的负载场景中5%的用户空间占用率和95%的系统空间占用率也是非常普遍的现象这意味着HAProxy进程消耗比系统空间消耗低20倍以上。因此对OS进行性能调优是非常重要的。即使用户空间的占用率提高一倍其CPU占用率也仅为10%这也解释了为何7层处理对性能影响有限这一现象。由此在高端系统上HAProxy的7层性能可轻易超过硬件负载均衡设备。在生产环境中在7层处理上使用HAProxy作为昂贵的高端硬件负载均衡设备故障故障时的紧急解决方案也时长可见。硬件负载均衡设备在“报文”级别处理请求这在支持跨报文请求(request across multiple packets)有着较高的难度并且它们不缓冲任何数据因此有着较长的响应时间。对应地软件负载均衡设备使用TCP缓冲可建立极长的请求且有着较大的响应时间。HAProxy 调度算法Haproxy有8种负载均衡算法balance分别如下roundrobinrr动态加权轮询支持权重static-rr静态轮询 不支持权重。leastconn最小连接优先处理。source源地址哈希算法。uri根据URI做哈希算法。url_param根据请求的URl参数’balance url_param’ requires an URL parameter name做哈希。hdr(name) 根据HTTP请求头来锁定每一次HTTP请求。rdp-cookie(name) 根据据cookie(name)来锁定并哈希每一次TCP请求。HAProxy 实践1通过HAProxy实现4层和7层负载均衡。基础配置网络拓扑主机名IP地址服务器角色client2.shizhan.cloud10.1.1.21客户端client1.shizhan.cloud10.1.8.21客户端router.shizhan.cloud10.1.8.20 10.1.1.20路由器haproxy.shizhan.cloud10.1.8.10 10.1.1.10代理服务器web1.shizhan.cloud10.1.8.11Web 和 SSH 服务器web2.shizhan.cloud10.1.8.12Web 和 SSH 服务器web3.shizhan.cloud10.1.8.13Web 和 SSH 服务器网络说明所有主机第一块网卡名为 ens33第二块网卡名为 ens192默认第一块网卡模式为nat第二块网卡模式为hostonly网关设置10.1.1.0/24 网段网关为10.1.1.2010.1.8.0/24 网段网关为10.1.8.20基础配置主机名IP 地址网关# 网关配置命令参考# 10.1.1.0/24 网段网关为10.1.1.20nmcli connection modify ens33 ipv4.gateway10.1.1.20 nmcli connection up ens33# 10.1.8.0/24 网段网关为10.1.8.20可以不改nmcli connection modify ens33 ipv4.gateway10.1.8.20 nmcli connection up ens33配置 router# 开启路由echonet.ipv4.ip_forward1/etc/sysctl.conf sysctl -p# 设置防火墙systemctlenablefirewalld.service --now firewall-cmd --set-default-zonetrusted firewall-cmd --add-masquerade --permanent firewall-cmd --add-masqueradehttp 模式配置 web[rootweb1-3 ~]## 部署 webyuminstall-y nginxechoWelcome to$(hostname)/usr/share/nginx/html/index.html systemctlenablenginx.service --now# 访问后端 nginx[rootclient1 ~]# curl 10.1.8.11Welcome to web1.shizhan.cloud[rootclient1 ~]# curl 10.1.8.12Welcome to web2.shizhan.cloud[rootclient1 ~]# curl 10.1.8.13Welcome to web3.shizhan.cloud# 准备虚拟主机[rootweb1-3 ~]# cat /etc/nginx/conf.d/vhost-test.conf EOFserver{listen81;root /test;}EOF[rootweb1-3 ~]# systemctl restart nginx# 准备测试文件[rootweb1-3 ~]# mkdir /test[rootweb1-3 ~]# echo hello txt from $(hostname -s) /test/index.txt[rootweb1-3 ~]# echo hello html from $(hostname -s) /test/index.html# 测试[rootclient1 ~]# curl http://web1:81/hello html from web1[rootclient1 ~]# curl http://web2:81/hello html from web2[rootclient1 ~]# curl http://web3:81/hello html from web3配置 haproxy[roothaproxy ~]## 安装 haproxyyuminstall-y haproxy# 备份 haproxy 配置文件cp/etc/haproxy/haproxy.cfg{,.ori}# 修改 haproxy 配置文件最后添加以下内容echo ######### web 代理 ########### frontend front_web bind *:80 default_backend back_web acl test url_reg -i \.txt$ # acl 是固定的关键字 # test 规则名可自定义 # url_reg 匹配方式 # -i 忽略大小写 # \.txt$ 匹配.txt结尾 # 如果ac规则 test匹配则使用后端 back_test use_backend back_test if test backend back_web # 采用轮询方式负载 balance roundrobin server web1 10.1.8.11:80 check # server 是关键字代表后端主机 # web1 是后端主机名可自定义建议与主机名保持一致 # 10.1.8.11:80 是后端服务实际地址和端口 # check haproxy检查后端服务是否正常 server web2 10.1.8.12:80 check server web3 10.1.8.13:80 check backend back_test balance roundrobin server test1 10.1.8.11:81 check server test2 10.1.8.12:81 check server test3 10.1.8.13:81 check /etc/haproxy/haproxy.cfg# 启用并启动服务systemctlenablehaproxy.service --now测试[rootclient1 ~]# for n in {1..90}; do curl http://10.1.8.10 -s; done | sort |uniq -c30Welcome to web1.shizhan.cloud30Welcome to web2.shizhan.cloud30Welcome to web3.shizhan.cloud[rootclient2 ~]# for n in {1..90}; do curl http://10.1.1.10 -s; done | sort |uniq -c30Welcome to web1.shizhan.cloud30Welcome to web2.shizhan.cloud30Welcome to web3.shizhan.cloud# 测试 txt结尾的acl规则[rootclient1 ~]# for n in {1..90}; do curl http://10.1.8.10/index.txt -s; done | sort |uniq -ctcp 模式配置 ssh[rootweb1-3 ~]#yuminstall-y openssh-server systemctlenablesshd --now配置 haproxy# 备份 haproxy 配置文件cp/etc/haproxy/haproxy.cfg{,.ori}# 修改 haproxy 配置文件最后添加以下内容echo ######### ssh 代理 ########### listen ssh mode tcp bind *:1022 balance roundrobin server web1 10.1.8.11:22 check server web2 10.1.8.12:22 check server web3 10.1.8.13:22 check /etc/haproxy/haproxy.cfg# 重启服务systemctl restart haproxy.service测试[rootclient1 ~]# for n in {1..90}; do ssh roothaproxy -p 1022 hostname 2/dev/null; done| sort |uniq -c30web1.shizhan.cloud30web2.shizhan.cloud30web3.shizhan.cloudHAProxy 配置说明haproxy 的配置文件由两部分组成全局设定global settings和对代理的设定proxiesglobal settings主要用于定义haproxy进程管理安全及性能相关的参数proxies 共分为4段defaults为其它配置段提供默认参数默认配置参数可由下一个“defaults”重新设定。frontend定义一系列监听的套接字这些套接字可接受客户端请求并与之建立连接。backend定义“后端”服务器前端代理服务器将会把客户端的请求调度至这些服务器。listen定义监听的套接字和后端的服务器。类似于将frontend和backend段放在一起通常配置TCP流量也就是4层代理。所有代理的名称只能使用大写字母、小写字母、数字、-(中线)、_(下划线)、.(点号)和:(冒号)。此外ACL名称会区分字母大小写。全局部分进程管理及安全相关的参数# log address facility [max level [min level]]定义全局的syslog服务器最多可以定义两个log127.0.0.1 local2#log-send-hostname [string]在syslog信息的首部添加当前主机名可以为“string”指定的名称也可以缺省使用当前主机名log-send-hostname haproxy.shizhan.cloud# 变更haproxy工作目录至指定的目录并在放弃权限之前执行chroot()操作可以提升haproxy的安全级别不过需要注意的是要确保指定的目录为空目录且任何用户均不能有写权限chroot/var/lib/haproxy# 让haproxy以守护进程方式在后台运行daemon# 指定进程pid保存到哪个文件pidfile /var/run/haproxy.pid# 以指定的UID或者user身份运行haproxy进程uid188user haproxy# 以指定的gID或者group身份运行haproxy进程gid188group haproxy# 启用unix socket,用于访问统计数据stats socket /var/lib/haproxy/stats# 定义当前节点的名称用于HA场景中多haproxy进程共享同一个IP地址时node ha1.shizhan.cloud# 当前实例的描述信息description haproxy server1性能调整相关的参数# nbproc number指定启动的haproxy进程的个数只能用于守护进程模式的haproxy默认只启动一个进程鉴于调试困难等多方面的原因一般只在单进程仅能打开少数文件描述符的场景中才使用多进程模式nbproc2# ulimit-n设定每进程所能够打开的最大文件描述符数目默认情况下其会自动进行计算因此不推荐修改此选项Linux默认单进程打开文件数为1024个# maxconn number设定每个haproxy进程所接受的最大并发连接数其等同于命令行选项“-n”“ulimit -n”自动计算的结果正是参照此参数设定的maxconn4000# tune.bufsize number设定buffer的大小同样的内存条件小较小的值可以让haproxy有能力接受更多的并发连接较大的值可以让某些应用程序使用较大的cookie信息默认为16384其可以在编译时修改不过强烈建议使用默认值# tune.chksize number设定检查缓冲区的大小单位为字节更大的值有助于在较大的页面中完成基于字符串或模式的文本查找但也会占用更多的系统资源不建议修改# tune.maxaccept number设定haproxy进程内核调度运行时一次性可以接受的连接的个数较大的值可以带来较大的吞吐率默认在单进程模式下为100多进程模式下为8设定为-1可以禁止此限制一般不建议修改# tune.maxpollevents number设定一次系统调用可以处理的事件最大数默认值取决于OS其值小于200时可节约带宽但会略微增大网络延迟而大于200时会降低延迟但会稍稍增加网络带宽的占用量# tune.maxrewrite number设定为首部重写或追加而预留的缓冲空间建议使用1024左右的大小在需要使用更大的空间时haproxy会自动增加其值# tune.rcvbuf.server number设定内核套接字中服务端或客户端接收缓冲的大小单位为字节强烈推荐使用默认值代理部分# 设置haproxy默认工作模式,支持tcp和http# tcp工作在4层HAProxy分只是简单地转发流量# http工作在7层HAProxy分析协议并可以随意处理请求和响应内容例如allowing, blocking, switching, adding,modifying, removing。mode http# 日志格式与global配置一致log global# 日志发送给本地facility是local0level是noticelog127.0.0.1:514 local0 notice# 日志类别http日志格式也可指定为tcplogoption httplog# 不记录没有数据的心跳检测包option dontlognull# 允许server端关闭http连接option http-server-close# 在转发的包头前加入except 127.0.0.0/8option forwardfor except127.0.0.0/8# 连接失败后重新分发连接option redispatch# 3次连接失败就认为服务不可用retries3# 客户端建立连接但不请求数据时关闭客户端连接timeouthttp-request 10s# 队列存在最大时长timeoutqueue 1m# haproxy将客户端请求转发至后端服务器所等待的超时时长timeoutconnect 10s# 客户端非活动状态的超时时长timeoutclient 1m# 客户端与服务端建立连接后等待服务器端的超时时长timeoutserver 1m# 定义保持连接的超时时长timehttp-keep-alive 1m# 健康状态监测超时时长过短会误判过长会消耗更多资源timeoutcheck 10sHAProxy 实践2简化版基础配置主机名IP地址服务器角色controller.shizhan.cloud10.1.8.10控制服务器可选lb.shizhan.cloud10.1.8.100负载均衡服务器/客户端web1.shizhan.cloud10.1.8.11Web 服务器web2.shizhan.cloud10.1.8.12Web 服务器web3.shizhan.cloud10.1.8.13Web 服务器主机名、IP 地址hostshaproxy基础配置# 修改/etc/hosts[rootcontroller ~ 09:40:21]# vim /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6###############cluster#########################10.1.8.10 controller.shizhan.cloud controller10.1.8.11 web1.shizhan.cloud web110.1.8.12 web2.shizhan.cloud web210.1.8.13 web2.shizhan.cloud web310.1.8.100 lb.shizhan.cloud lb web.shizhan.cloud# 修改维护脚本[rootcontroller ~ 09:48:42]# vim /usr/local/bin/weihu.shhost_listweb1 web2 web3 lb# 使用维护脚本推送hosts[rootcontroller ~ 09:58:18]# weihu.sh scp /etc/hosts# lb节点安装haproxy[rootlb ~ 09:35:35]# yum install -y haproxy[rootlb haproxy 09:44:06]# systemctl enable haproxy.service --now# 修改haproxy配置[rootlb haproxy 09:39:42]# cp haproxy.cfg haproxy.cfg.bak# haproxy.cfg添加以下配置[rootlb haproxy 09:39:47]# vim haproxy.cfgfrontend front_web *:80 default_backend backend_web backend backend_web balance roundrobin server web1 web1:80 check server web2 web2:80 check server web3 web3:80 check# 启动haproxy[rootlb haproxy 09:44:06]# systemctl enable haproxy.service --now# 验证负载均衡[rootcontroller ~ 09:47:18]# for i in {1..30}; do curl -s http://web.shizhan.cloud;done | sort | uniq -c10Welcome to shizhan.Web1 WebSite!10Welcome to shizhan.Web2 WebSite!10Welcome to shizhan.Web3 WebSite!http 模式配置 web# web1节点[rootweb1 conf.d10:49:04]# echo hello txt from web1 /var/www/html/txt/test.txt[rootweb1 conf.d10:51:38]# echo hello world from web1 /var/www/html/txt/index.html[rootweb1 conf.d10:51:49]# pwd/etc/httpd/conf.d[rootweb1 conf.d11:09:40]# vim vhost-web.confVirtualHost *:80ServerName web.shizhan.cloud DocumentRoot/var/www/htmlDirectory/var/www/htmlOptions Indexes FollowSymLinks AllowOverride None Require all granted/Directory/VirtualHostListen81VirtualHost *:81ServerName web.shizhan.cloud DocumentRoot/var/www/html/txtDirectory/var/www/html/txtOptions Indexes FollowSymLinks AllowOverride None Require all granted/Directory/VirtualHost# web2节点[rootweb2 conf.d10:49:43]# echo hello txt from web2 /var/www/html/txt/test.txt[rootweb2 conf.d10:49:54]# echo hello world from web2 /var/www/html/txt/index.html[rootweb2 conf.d10:50:07]# pwd/etc/httpd/conf.d[rootweb2 conf.d11:10:55]# vim vhost-web.confVirtualHost *:80ServerName web.shizhan.cloud DocumentRoot/var/www/htmlDirectory/var/www/htmlOptions Indexes FollowSymLinks AllowOverride None Require all granted/Directory/VirtualHostListen81VirtualHost *:81ServerName web.shizhan.cloud DocumentRoot/var/www/html/txtDirectory/var/www/html/txtOptions Indexes FollowSymLinks AllowOverride None Require all granted/Directory/VirtualHost# 重启httpd服务[rootweb1 conf.d10:48:24]# systemctl restart httpd[rootweb2 conf.d10:49:09]# systemctl restart httpd配置 haproxy[rootlb haproxy10:36:37]# pwd/etc/haproxy[rootlb haproxy11:08:40]# vim haproxy.cfg# 修改haproxy配置文件最后几行内容如下frontend frontend_web *:80 default_backend backend_web# 新增匹配规则acl txt url_reg -i\.txt$ use_backend backend_txtiftxt backend backend_web balance roundrobin server web1 web1:80 check server web2 web2:80 check server web3 web3:80 check# 新增后端配置backend backend_txt balance roundrobin server web1 web1:81 check server web2 web2:81 check# 重启haproxy[rootlb haproxy10:31:09]# systemctl restart haproxy.service测试[rootcontroller ~10:52:28]# for i in {1..30}; do curl -s http://web.shizhan.cloud;done | sort | uniq -c10Welcome to shizhan.Web1 WebSite!10Welcome to shizhan.Web2 WebSite!10Welcome to shizhan.Web3 WebSite!# 测试 txt结尾的acl规则[rootcontroller ~10:52:47]# for i in {1..30}; do curl -s http://web.shizhan.cloud/test.txt;done | sort | uniq -c15hello txt from web115hello txt from web2tcp 模式配置 ssh[rootweb1-3 ~]#yuminstall-y openssh-server systemctlenablesshd --now配置 haproxy# 备份 haproxy 配置文件cp/etc/haproxy/haproxy.cfg{,.ori}# 修改 haproxy 配置文件最后添加以下内容echo ######### ssh 代理 ########### listen ssh mode tcp bind *:1022 balance roundrobin server web1 10.1.8.11:22 check server web2 10.1.8.12:22 check server web3 10.1.8.13:22 check /etc/haproxy/haproxy.cfg# 重启服务systemctl restart haproxy.service测试[rootcontroller ~10:53:05]# for n in {1..90}; do ssh rootlb -p 1022 hostname; done| sort |uniq -c30web1.shizhan.cloud30web2.shizhan.cloud30web3.shizhan.cloud[rootcontroller ~11:30:17]# for n in {1..30}; do ssh rootweb.shizhan.cloud -p 1022 hostname; done| sort |uniq -c10web1.shizhan.cloud10web2.shizhan.cloud10web3.shizhan.cloudHAProxy 使用总结HAProxy 是高性能开源负载均衡器支持 TCP 四层与 HTTP 七层代理核心功能含负载策略轮询、加权、IP 哈希等、后端服务器健康检查主动 / 被动及会话保持。通过 frontend/backend/listen 配置块定义转发规则可实现 SSL 终止、请求过滤与流量控制。轻量且高并发常用于 Web 服务、数据库等场景的高可用架构搭配日志监控与故障转移配置能有效提升服务稳定性与资源利用率。[rootcontroller ~10:53:05]# for n in {1..90}; do ssh rootlb -p 1022 hostname; done| sort |uniq -c30web1.shizhan.cloud30web2.shizhan.cloud30web3.shizhan.cloud[rootcontroller ~11:30:17]# for n in {1..30}; do ssh rootweb.shizhan.cloud -p 1022 hostname; done| sort |uniq -c10web1.shizhan.cloud10web2.shizhan.cloud10web3.shizhan.cloudHAProxy 使用总结HAProxy 是高性能开源负载均衡器支持 TCP 四层与 HTTP 七层代理核心功能含负载策略轮询、加权、IP 哈希等、后端服务器健康检查主动 / 被动及会话保持。通过 frontend/backend/listen 配置块定义转发规则可实现 SSL 终止、请求过滤与流量控制。轻量且高并发常用于 Web 服务、数据库等场景的高可用架构搭配日志监控与故障转移配置能有效提升服务稳定性与资源利用率。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

肥城网站设计公司做做做做网站

第一章:金融风险对冲的核心概念与R语言环境搭建 金融风险对冲是现代投资组合管理中的关键策略,旨在通过持有特定资产或衍生品来抵消潜在市场波动带来的损失。其核心思想在于利用资产之间的负相关性或统计套利关系,降低整体风险暴露。常见的对…

张小明 2026/3/8 19:37:39 网站建设

ag亚游平台网站开发折800网站源码

Langchain-Chatchat能否实现自主任务分解? 在企业知识管理日益复杂的今天,员工常常面临这样一个困境:一个问题涉及多个制度文件——差旅标准在《行政手册》里,审批流程藏在OA系统的公告中,合作酒店名单又分散在邮件附件…

张小明 2026/3/9 11:00:38 网站建设

做网站是用什么技术的城乡住房和城乡建设网站查询

基于PaddlePaddle实现眼疾图像分类 在医疗AI领域,一个微小的像素变化可能意味着重大疾病的早期征兆。尤其是在眼科诊断中,病理性近视(Pathologic Myopia, PM)这类隐匿性强、进展迅速的眼底病变,若能在影像阶段被及时识…

张小明 2026/3/9 3:38:37 网站建设

哪些公司做网站比较好莱芜雪野湖别墅

写在前面车门焊死,考研将至,准备冲刺!我将持续为大家更新25最新真题解析!学得快的同学可以和我一起,全力冲刺~注意,目前我只发布最新年份的真题,其他年份的真题,一个是很…

张小明 2026/3/8 21:53:22 网站建设

网站建设市场拓展岗位抖音代运营工作怎么样

利用comsol软件建立激光熔覆三维流速场模型()在材料加工领域,激光熔覆技术凭借其独特的优势,如高精度、快速凝固等,越来越受到关注。而理解激光熔覆过程中的流速场对于优化工艺参数、提高熔覆层质量至关重要。今天咱们就来聊聊如何利用Comsol…

张小明 2026/3/9 1:41:13 网站建设

免费建设网站赚钱西安营销网站建设公司

第一章:紧急预警:Open-AutoGLM长按缺陷可能导致严重交互崩溃近期在多个基于 Open-AutoGLM 框架的智能交互系统中发现一个高危缺陷:当用户或自动化脚本连续长时间触发“长按”事件时,系统核心事件循环将陷入不可逆的堆栈溢出状态&a…

张小明 2026/3/10 7:50:57 网站建设