网站营销管理培训班wordpress购物

当前位置: 首页 > news >正文

网站营销管理培训班,wordpress购物,公司漏沟设计logo免费,技术博客主题wordpressHaproxy: haproxy是一个开源的高性能反向代理和负载均衡器#xff0c;主要用于‌TCP和‌HTTP流量管理。 功能和特点#xff1a;haproxy能够处理大量的并发连接#xff0c;支持TCP和HTTP协议#xff0c;具有高可用性和负载均衡功能。它特别适用于需要处理大量流量的网站主要用于‌TCP和‌HTTP流量管理。 功能和特点haproxy能够处理大量的并发连接支持TCP和HTTP协议具有高可用性和负载均衡功能。它特别适用于需要处理大量流量的网站能够保护web服务器不被直接暴露在网络中同时提供基于cookie的会话保持、健康检查、动态和静态负载均衡策略等功能。‌23   应用场景haproxy被广泛应用于各种需要高性能网络流量管理的场景包括网站、应用服务等。由于其高性能和可靠性haproxy已经成为许多高流量网站的负载均衡解决方案。‌36   技术细节haproxy采用事件驱动、单一进程模型这种模型在处理大量并发连接时表现出色。此外haproxy还支持多种负载均衡算法如轮询、最少连接等以及健康检查功能能够在后端服务器出现问题时自动剔除恢复后自动重新加入。‌24  总之haproxy是一个功能强大且高效的工具适用于需要高性能网络流量管理的各种环境。 1.haproxy七层代理 1.1负载均衡 Haproxy负载均衡是一种建立在现有网络结构之上‌提供廉价有效透明的方法扩展网络设备和服务器的方法‌通过数据流量分摊到多个服务器上执行‌减轻每台服务器的压力‌从而提高网络的灵活性和可用性。‌Haproxy特别适用于负载特大的web站点‌这些站点通常需要会话保持或七层处理。‌Haproxy运行在时下的硬件上‌可以支持数以万计的并发连接‌并且它的运行模式使得它可以简单安全地整合进用户当前的架构中‌同时保护web服务器不被暴露到网络上。‌Haproxy实现了一种事件驱动、‌单一进程模型‌支持非常大的并发连接数‌这种模型在用户空间实现所有任务‌没有多进程或多线程模型所面临的内存限制、‌系统调度器限制以及锁限制等问题‌从而能够处理高并发连接。‌此外‌Haproxy还支持连接拒绝和全透明代理等特性‌为网站提供了额外的安全保障。 1.2四层负载均衡 Haproxy的四层负载均衡是基于传输层‌TCP/UDP‌的负载均衡技术。‌它通过发布三层‌网络层‌的IP地址‌VIP‌加上四层‌传输层‌的端口号来决定哪些流量需要进行负载均衡。‌这种负载均衡架构不需要解析报文消息内容‌因此在网络吞吐量与处理能力上相对较高。‌四层负载均衡主要基于IP地址和端口号进行流量分发‌例如‌通过VIP和特定的端口号‌如HTTP的80端口‌来辨别是否需要处理的流量‌并进行NAT处理后转发至后台服务器。‌此外‌四层负载均衡还记录下哪个服务器处理的TCP或UDP流量‌确保后续该连接的所有流量都同样转发到同一台服务器处理‌从而实现负载均衡。‌ Haproxy作为一款基于事件驱动、‌单进程模型设计的负载均衡器‌能够实现在TCP/UDP层面以及HTTP(S)等应用层协议上的高效流量分发‌包括四层和七层负载均衡。‌四层负载均衡在传输层及以下工作‌主要依据IP地址和端口号进行流量分发‌其优势在于性能较高‌因为不需要解析应用层的报文内容‌从而在网络吞吐量和处理能力上表现出色 支持四层的软件nginx,haproxy,lvs 1.3七层负载均衡 Haproxy七层负载均衡是一种基于HTTP‌第七层‌应用的负载均衡技术‌它可以根据用户请求的内容将请求转发到不同的后端服务器。‌这种负载均衡方法更加复杂‌因为它允许负载均衡器根据HTTP请求的内容‌如URL、‌请求头等信息‌来决定如何路由请求到后端服务器‌从而实现更精细的控制和优化。‌Haproxy七层负载均衡特别适合需要会话保持或七层处理的高负载web站点‌能够提供快速、‌可靠的负载均衡解决方案。‌ Haproxy七层负载均衡的主要特点包括‌ 会话保持‌能够根据会话信息‌如cookie‌将用户的请求路由到同一个后端服务器‌保持会话的连续性。‌灵活性‌支持多种负载均衡算法‌可以根据服务器的负载情况、‌响应时间等因素进行动态调整‌实现负载的均衡分配。‌高性能‌Haproxy能够支撑数以万计的并发连接‌处理大量请求‌具有高性能的特点。‌安全性‌通过HAProxy的代理‌可以避免Web服务器直接暴露给外部网络‌增加安全性。‌监控与管理‌拥有强大的服务器状态监控页面‌可以实时了解系统的运行状况‌便于管理和维护。‌ Haproxy七层负载均衡通过这些特点‌为高负载的web应用提供了可靠、‌高效的负载均衡解决方案‌特别适用于需要会话保持或七层处理的应用场景。 支持七层的软件nginx,haproxy 1.4区别 四层和七层负载均衡的主要区别在于它们在网络OSI模型中的操作层次、功能和处理能力。 操作层次和功能 四层负载均衡 主要工作在OSI模型的传输层第4层基于IP地址和端口号进行负载均衡。它主要负责简单的数据包转发不涉及应用层数据的解析或修改。‌12七层负载均衡 则工作在应用层第7层能够根据应用层协议如‌HTTP、FTP等的信息进行负载均衡。它能够解析和应用层的数据如URL、HTTP头部等从而实现更复杂的负载均衡策略如内容交换和代理。  应用场景 四层负载均衡 适用于对性能要求较高且不需要复杂应用层处理的场景如简单的TCP应用。‌35七层负载均衡 更适合需要智能处理的应用如网站或内部信息平台等基于B/S开发的系统因为它可以根据应用层信息优化流量分配提高系统灵活性和安全性。  技术特点 四层负载均衡处理速度快但功能相对简单七层负载均衡虽然处理开销较大但提供了更强大的功能和灵活性。‌4 总结来说选择四层还是七层负载均衡取决于具体的应用需求和技术要求。 2.Haproxy软件下载 LINUX中dnf install haproxy -y 实验环境三台主机haproxy,web1,web2 分别对三台主机进行如下配置 haproxy ip配置 web1 ip配置 web2 ip配置 三台主机均关闭防火墙和SELINUX 下载安装包   #haproxy dnf install haproxy -y dnf install socat   -y #可调整服务器动态权重和其它状态   #server1、server2 dnf install nginx echo webserver1 -172.25.250.10 /usr/share/nginx/html/index.html #server1的访问页面 echo webserver2 -172.25.250.20 /usr/share/nginx/html/index.html #server2的访问页面 systemctl enable –now nginx curl 172.25.250.10 curl 172.25.250.20    #测试web服务是否正常运行 rpm -qc haproxy    #查询配置文件 vim /etc/haproxy/haproxy.cfg    #修改配置文件 systemctl start haproxy.service    #重启服务 cat /var/log/messages #查看错误日志 对配置文件/etc/haproxy/haproxy.cfg 进行配置并测试 修改权限 echo help |socat stdio /var/lib/haproxy/stats    #查看帮助 echo show info |socat stdio /var/lib/haproxy/stats     #查看haproxy状态 echo show server stats |socat stdio /var/lib/haproxy/stats #查看服务器状态 echo get weight webcluster/web1 | socat stdio /var/lib/haproxy/stats#查看集群中server1的权重 echo set weight webcluster/web1 1 | socat stdio /var/lib/haproxy/stats#修改集群权重 echo disable server webcluster/web1 | socat stdio /var/lib/haproxy/stats#关闭web1 echo enable server webcluster/web1 | socat stdio /var/lib/haproxy/stats#开启web1 仅展示了部分命令了解更多可以去haproxy网站查询 3.haproxy算法 ‌HAProxy支持多种调度算法包括静态和动态调度算法。 这些算法可以根据服务器的状态和负载情况进行动态调整以提高系统的整体性能和稳定性。 以下是HAProxy中常见的几种调度算法及其特点 ‌Round Robin轮询这是最简单常用的一种算法基于权重进行轮询调度。在服务器的处理时间保持均匀分布时这是一种最平衡、最公平的算法。此算法是动态的表示其权重可以在运行时进行调整。‌   ‌Least Connections最少连接数新的连接请求被派发至具有最少连接数目的后端服务器。在有着较长时间会话的场景中推荐使用此算法如LDAP、‌SQL等其并不太适用于较短会话的应用层协议如‌HTTP。‌   ‌Source IP Hash基于来源访问调度算法用于一些有Session会话记录在服务器端的场景可以基于来源的IP、Cookie等做集群调度。这种方式可以使同一个客户端IP的请求始终被转发到某特定的后端服务器。‌   ‌URI Hash基于请求的URI将请求转发至同一个后端节点上。这种模式在缓存代理实现中对于增加缓存命中率非常理想。‌   ‌URL Parameter基于请求的URL参数进行调度。
这些调度算法可以根据具体的应用场景和需求进行选择以达到最佳的负载均衡效果。 3.1 静态算法 静态算法按照事先定义好的规则轮询公平调度不关心后端服务器的当前负载、连接数和响应速度 等且无法实时修改权重(只能为0和1,不支持其它值)只能靠重启HAProxy生效。 3.1.1static-rr基于权重的轮询调度 不支持运行时利用socat进行权重的动态调整(只支持0和1,不支持其它值) 不支持端服务器慢启动 其后端主机数量没有限制相当于LVS中的 wrr 3.1.2 first 根据服务器在列表中的位置自上而下进行调度 其只会当第一台服务器的连接数达到上限新请求才会分配给下一台服务 其会忽略服务器的权重设置 不支持用socat进行动态修改权重,可以设置0和1,可以设置其它值但无效 3.2 动态算法 基于后端服务器状态进行调度适当调整 新请求将优先调度至当前负载较低的服务器 权重可以在haproxy运行时动态调整无需重启 3.2.1 roundrobin 1. 基于权重的轮询动态调度算法

  1. 支持权重的运行时调整不同于lvs中的rr轮训模式
  2. HAProxy中的roundrobin支持慢启动(新加的服务器会逐渐增加转发数)
  3. 其每个后端backend中最多支持4095个real server
  4. 支持对real server权重动态调整
  5. roundrobin为默认调度算法,此算法使用广泛 3.2.2 leastconn eastconn加权的最少连接的动态 支持权重的运行时调整和慢启动即:根据当前连接最少的后端服务器而非权重进行优先调度(新客户 端连接) 比较适合长连接的场景使用比如MySQL等场景 3.3 其他算法 其它算法即可作为静态算法又可以通过选项成为动态算法 3.3.1 source 源地址hash基于用户源地址hash并将请求转发到后端服务器后续同一个源地址请求将被转发至同一 个后端web服务器。此方式当后端服务器数据量发生变化时会导致很多用户的请求转发至新的后端服 务器默认为静态方式但是可以通过hash-type支持的选项更改这个算法一般是在不插入Cookie的TCP 模式下使用也可给拒绝会话cookie的客户提供最好的会话粘性适用于session会话保持但不支持 cookie和缓存的场景源地址有两种转发客户端请求到后端服务器的服务器选取计算方式分别是取模法和一致性hash 4.Haproxy高级功能及配置、 4.1状态页 stats enable   #基于默认的参数启用stats page stats hide-version   #将状态页中haproxy版本隐藏 stats refresh delay #设定自动刷新时间间隔默认不自动刷新 stats uri prefix #自定义stats page uri默认值/haproxy?stats stats auth user:passwd #认证时的账号和密码可定义多个用户,每行指定一个用户 #默认no authentication stats admin { if | unless } #启用stats page中的管理功能 4.2、基于cookie的会话保持 在一个浏览器访问后会记住选择之后刷新一直是该后端主机另一个浏览器访问则是另一个后端主机 [roothaproxy ~]# vim /etc/haproxy/haproxy.cfg      balance roundrobin     cookie WEBCOOKIE insert nocache indirect     server web1 172.25.250.10:80 cookie aaa1 check inter 2 fall 3 rise 5 weight 2     server web2 172.25.250.20:80 cookie aaa2 check inter 2 fall 3 rise 5 weight 1 [roothaproxy ~]# systemctl restart haproxy.service  [roothaproxy ~]# curl -b WEBCOOKIEaaa1 172.25.250.100 webserver1 - 172.25.250.10 [roothaproxy ~]# curl -b WEBCOOKIEaaa2 172.25.250.100 webserver2 - 172.25.250.20 4.3 backend server信息 session rate(每秒的连接会话信息): Errors(错误统计信息) cur:每秒的当前会话数量 : Req:错误请求量 max:每秒新的最大会话数量 conn:错误链接量 limit:每秒新的会话限制量 Resp:错误响应量 sessions(会话信息): Warnings(警告统计信息) cur:当前会话量 Retr:重新尝试次数 max:最大会话量 Redis:再次发送次数 limit: 限制会话量 Total:总共会话量 Server(real server信息) LBTot:选中一台服务器所用的总时间 Status:后端机的状态包括UP和DOWN Last和服务器的持续连接时间 LastChk:持续检查后端服务器的时间 Wght:权重 Bytes(流量统计) Act:活动链接数量 In:网络的字节输入总量 Bck:备份的服务器数量 Out:网络的字节输出总量 Chk:心跳检测时间 Dwn:后端服务器连接后都是DOWN的数量 Denied(拒绝统计信息) Dwntme:总的downtime时间 Req:拒绝请求量 Thrtle:server 状态 Resp:拒绝回复量 4.4ip透传 七层代理 七层代理 mode—http #webserver1 [rootwebserver1 ~]# systemctl disable nginx [rootwebserver1 ~]# systemctl stop nginx [rootwebserver1 ~]# dnf install httpd -y [rootwebserver1 ~]# echo webserver1 - 172.25.250.10 /var/www/html/index.html [rootwebserver1 ~]# vim /etc/httpd/conf/httpd.conf  如下图标注 %{X-Forwarded-For}i [rootwebserver1 ~]# systemctl enable –now httpd ​ ​#测试 [rootwebserver1 ~]# tail -n 3 /etc/httpd/logs/access_log [rootwebserver2 ~]# tail -3 /var/log/nginx/access.log   四层代理 四层代理mode—tcp 看不到IP地址 [roothaproxy ~]# vim /etc/haproxy/haproxy.cfg      mode tcp     server web1 172.25.250.10:80  check inter 2 fall 3 rise 5 weight 2     server web2 172.25.250.20:80 send-proxy check inter 2 fall 3 rise 5 weight 1 [roothaproxy ~]# systemctl restart haproxy.service ​ #webserver2 [rootwebserver2 ~]#   vim /etc/nginx/nginx.conf http { log_format main \(remote_addr - \)remote_user [\(time_local] \)request     $proxy_protocol_addr      server {         listen       80 proxy_protocol; ​ [rootwebserver2 ~]# systemctl restart nginx   [roothaproxy ~]# vim /etc/haproxy/haproxy.cfg  server web1 172.25.250.10:80 check inter 2 fall 3 rise 5 weight 2     server web2 172.25.250.20:80 send-proxy check inter 2 fall 3 rise 5 weight 1 [roothaproxy ~]# systemctl restart haproxy.service ​ ​# 测试 [rootwebserver2 ~]# tail -n 3 /var/log/nginx/access.log [rootwebserver1 ~]# tail -n 3 /etc/httpd/logs/access_log 4.5基于文件后缀名实现动静分离 [rootwebserver1 ~]# dnf install php -y [rootwebserver1 ~]# systemctl restart httpd [rootwebserver1 ~]# vim /var/www/html/index.php [rootwebserver1 ~]# cat /var/www/html/index.php  ?php     phpinfo(); ? ​ #haproxy frontend webcluster     bind *:80     mode http     acl static path_end -i .html .jpg .png .css .js     acl php    path_end -i .php     use_backend webcluster-host if php     default_backend default-host 5.自定义HAProxy错误界面 基于自定义的错误页面文件 #webserver1\2主机上 system stop httpd ​ #haproxy主机上 [roothaproxy ~]# mkdir /etc/haproxy/errorpage -p [roothaproxy ~]# vim /etc/haproxy/errorpage/503.http HTTP/1.0 503 Service Unavailable Cache-Control: no-cache Connection: close Content-Type: text/html;charsetUTF-8 ​ htmlbodyh1什么动物生气最安静/h1 大猩猩 /body/html [roothaproxy ~]# vim /etc/haproxy/haproxy.conf defaults     errorfile 503   /etc/haproxy/errorpage/503.http [roothaproxy ~]# systemctl restart haproxy.service  ​然后用浏览器去访问172.25.250.130 6、haproxy https实现 ​ #证书制作 [roothaproxy ~]# mkdir -p /etc/haproxy/certs [roothaproxy ~]# openssl req -newkey rsa:2048 -nodes -sha256 -keyout /etc/haproxy/certs/timinglee.org.key -x509 -days 356 -out /etc/haproxy/certs/timinglee.org.crt CD shannxi XIan timinglee webserver www.timinglee.org admintiminglee.org ​ [roothaproxy ~]# ls /etc/haproxy/certs/ [roothaproxy ~]# cat /etc/haproxy/certs/timinglee.org.key /etc/haproxy/certs/timinglee.org.crt /etc/haproxy/certs/timinglee.pem ​ [roothaproxy ~]# vim /etc/haproxy/haproxy.cfg frontend webcluster     bind *:80     mode http     redirect scheme https if !{ ssl_fc }  #全网站加密 ​ backend webcluster-host     mode http     server web1 172.25.250.10:80 check inter 2 fall 2 rise 5 ​ backend default-host     mode http     server web2 172.25.250.20:80 check inter 2 fall 2 rise 5 ​ listen web-https     bind *:443 ssl crt /etc/haproxy/certs/timinglee.pem     mode http     balance roundrobin     server web1 172.25.250.10:3306 check inter 2 fall 2 rise 5     server web2 172.25.250.20:3306 check inter 2 fall 2 rise 5 ​ [roothaproxy ~]# systemctl restart haproxy [roothaproxy ~]# netsata -antup | grep 443 ​ 开启web1web2服务 访问https://172.25.250.130 完成