一**.**负载均衡
**1.1.**什么是负载均衡
负载均衡:Load Balance,简称LB,是一种服务或基于硬件设备等实现的高可用反向代理技术,负载均
衡将特定的业务(web服务、网络流量等)分担给指定的一个或多个后端特定的服务器或设备,从而提高了
公司业务的并发处理能力、保证了业务的高可用性、方便了业务后期的水平动态扩展
阿里云SLB介绍 :https://yq.aliyun.com/articles/1803

**1.2.**为什么用负载均衡
Web服务器的动态水平扩展-->对用户无感知
增加业务并发访问及处理能力-->解决单服务器瓶颈问题
节约公网IP地址-->降低IT支出成本
隐藏内部服务器IP-->提高内部服务器安全性
配置简单-->固定格式的配置文件
功能丰富-->支持四层和七层,支持动态下线主机
性能较强-->并发数万甚至数十万
**1.3.**负载均衡类型
1.3.1****硬件
F5 美国F5网络公司 https://f5.com/zh
Netscaler 美国思杰公司 https://www.citrix.com.cn/products/citrix-adc/、
Array 华耀 https://www.arraynetworks.com.cn/
AD-1000 深信服 http://www.sangfor.com.cn/
**1.3.2.**四层负载均衡

1.通过ip+port决定负载均衡的去向。
2.对流量请求进行NAT处理,转发至后台服务器。
3.记录tcp、udp流量分别是由哪台服务器处理,后续该请求连接的流量都通过该服务器处理。
4.支持四层的软件
lvs:重量级四层负载均衡器。
Nginx:轻量级四层负载均衡器,可缓存。(nginx四层是通过upstream模块)
Haproxy:模拟四层转发。
**1.3.3.**七层负载均衡

1.通过虚拟ur|或主机ip进行流量识别,根据应用层信息进行解析,决定是否需要进行负载均衡。
2.代理后台服务器与客户端建立连接,如nginx可代理前后端,与前端客户端tcp连接,与后端服务器建立
tcp连接,
3.支持7层代理的软件:
Nginx:基于http协议(nginx七层是通过proxy_pass)
Haproxy:七层代理,会话保持、标记、路径转移等。
1.3.4****四层和七层的区别
所谓的四到七层负载均衡,就是在对后台的服务器进行负载均衡时,依据四层的信息或七层的信息来决 定怎么样转发流量。
四层的负载均衡,就是通过发布三层的IP地址(VIP),然后加四层的端口号,来决定哪些流量需要做负 载均衡,对需要处理的流量进行NAT处理,转发至后台服务器,并记录下这个TCP或者UDP的流量是由哪 台服务器处理的,后续这个连接的所有流量都同样转发到同一台服务器处理七层的负载均衡,就是在四层的基础上(没有四层是绝对不可能有七层的),再考虑应用层的特征,比 如同一个Web服务器的负载均衡,除了根据VIP加80端口辨别是否需要处理的流量,还可根据七层的 URL、浏览器类别、语言来决定是否要进行负载均衡。
1.分层位置:四层负载均衡在传输层及以下,七层负载均衡在应用层及以下
2.性能 :四层负载均衡架构无需解析报文消息内容,在网络吞吐量与处理能力上较高:七层可支持解析应用 层报文消息内容,识别URL、Cookie、HTTP header等信息。
3.原理 :四层负载均衡是基于ip+port;七层是基于虚拟的URL或主机IP等。
4.功能类比:四层负载均衡类似于路由器;七层类似于代理服务器。
5.安全性:四层负载均衡无法识别DDoS攻击;七层可防御SYN Cookie/Flood攻击
二. haproxy简介
1、HAProxy的概念
HAProxy是一款基于事件驱动、单进程模型设计的四层与七层负载均衡器,它能够在TCP/UDP层面以及HTTP(S)等应用层协议上实现高效的流量分发。HAProxy不仅适用于Web服务器负载均衡,还能应用于数据库、邮件服务器、缓存服务器等多种场景,支持高达数百万级别的并发连接,并具有极低的延迟
- 支持功能
- TCP 和 HTTP 反向代理
- SSL/TSL服务器
- 可以针对HTTP请求添加 cookie,进行路由后端服务器
- 可平衡负载至后端服务器,并支持持久连接
- 支持所有主服务器故障切换至备用服务器 keepalive
- 支持专用端口实现监控服务
- 支持停止接受新连接请求,而不影响现有连接
- 可以在双向添加,修改或删除HTTP报文首部字段
- 响应报文压缩
- 支持基于 pattern 实现连接请求的访问控制
- 通过特定的 URI(url)为授权用户提供详细的状态信息
2、HAProxy的主要特性
高性能负载均衡: HAProxy通过优化的事件驱动引擎,能够以最小的系统资源开销处理大量并发请求。它支持多种负载均衡算法,如轮询、最少连接、源IP哈希等,可根据实际业务需求灵活配置
健康检查与故障恢复: HAProxy具备完善的后端服务器健康检查机制,可以根据响应时间、错误率等因素自动剔除不健康的后端节点,并在节点恢复时重新将其加入到服务池中,确保服务连续性
会话保持与亲和性: 为了保证用户的会话一致性,HAProxy支持基于cookie或源IP地址的会话保持功能,确保同一客户端的请求被转发到同一台后端服务器进行处理
安全性与SSL卸载: HAProxy支持SSL/TLS加密传输,可对HTTPS流量进行解密并透明地分发至后端服务器,同时也能终止SSL连接以减轻服务器的加密计算压力
高级路由与策略: 根据HTTP请求头、URL路径、内容类型等条件,HAProxy可以执行复杂的路由规则和ACL策略,使得负载均衡更加智能化和精准化
日志记录与监控: HAProxy提供丰富的日志记录选项,可通过syslog、CSV格式输出等方式收集统计数据,便于运维人员实时监控系统状态和性能指标
3、HAProxy的优缺点
- 优点
- 高性能:HAProxy是一个高性能的负载均衡器,可以处理大量的并发连接
- 灵活性:HAProxy支持多种负载均衡算法,如轮询、加权轮询、最少连接等,可以根据实际需求选择合适的算法
- 高可用性:HAProxy可以检测服务器的健康状态,如果某个服务器出现故障,它可以自动将流量转移到其他健康的服务器,从而保证服务的高可用性
- 安全性:HAProxy可以作为反向代理,隐藏后端服务器的真实IP地址,提高系统的安全性。
- 缺点
- 单点故障:如果HAProxy本身出现故障,可能会导致整个系统的服务不可用
- 配置复杂:HAProxy的配置相对复杂,需要一定的学习成本
- 性能瓶颈:虽然HAProxy的性能很高,但在处理大量并发连接时,可能会成为系统的性能瓶颈
- 功能单一:只支持做负载均衡的调度服务器,不支持正则处理,不能实现动静分离,也不能做web服务器
支持基于cookie的持久性,自动故障切换,支持正则表达式及web状态统计
- 企业版网站:https://www.haproxy.com
- 社区版网站:http://www.haproxy.org
- github:https://github.com/haprox
三.环境部署
1.HAPORXY实验环境设定

haproxy主机
配IP(双网卡)

配置内核路由功能
root@haproxy xia\]# echo net.ipv4.ip_forward=1 \> /etc/sysctl.conf \[root@haproxy xia\]# sysctl -p net.ipv4.ip_forward = 1 * 值为 1 时,表示开启 IP 转发(系统会充当路由器,转发不同网段的数据包); * 值为 0 时(默认),关闭 IP 转发,系统仅处理发往本机的数据包。 * 永久开启 Linux 系统的 IP 转发功能。 webserver1 配IP  \[root@webserver1 xia\]# mount /dev/sr0 /mnt 挂载硬盘 mount: /mnt: WARNING: source write-protected, mounted read-only. \[root@webserver1root@webserver1 \~\]# dnf install httpd -y  webserver2 配IP  \[root@webserver2 xia\]# mount /dev/sr0 /mnt 挂载硬盘 mount: /mnt: WARNING: source write-protected, mounted read-only. \[root@webserver2 xia\]# dnf install httpd -y  验证  #表示网络连通了 ### 2.Haproxy的安装及配置参数 #### 2.1安装 \[root@haproxy xia\]# mount /dev/sr0 /mnt mount: /mnt: WARNING: source write-protected, mounted read-only. \[root@haproxy xia\]# dnf install haproxy.x86_64 -y #### 2.2harpoxy的参数详解实验 1设定vim中tab键的空格个数 \[root@haproxy xia\]# vim ./vimrc set ts=4 ai \[root@haproxy xia\]# vim /etc/haproxy/haproxy.cfg  \[root@haproxy xia\]# systemctl restart haproxy.service 测试  #用listen方式书写负载均衡 \[root@haproxy xia\]# vim /etc/haproxy/haproxy.cfg  \[root@haproxy xia\]# systemctl restart haproxy.service 测试  2.log 指定把日志发送到哪里 实验。指定日志发送到192.168.0.10 #在192.168.0.10 开启接受日志的端口 \[root@webserver1 xia\]# vim /etc/rsyslog.conf  \[root@webserver1 xia\]# systemctl restart rsyslog.service #测试接受日志端口是否开启 \[root@webserver1 xia\]# netstat -antlupe \| grep rsyslog udp 0 0 0.0.0.0:514 0.0.0.0:\* 0 64123 30797/rsyslogd udp6 0 0 :::514 :::\* 0 64124 30797/rsyslogd #在haproxy主机中设定日志发送信息 \[root@haproxy haproxy\]# vim haproxy.cfg log 192.168.0.10 local2 \[root@haproxy haproxy\]# systemctl restart haproxy.service 测试  root@webserver1 \~\]# cat /var/log/messages 查看日志  ### 3.实现haproxy的多进程 \[root@haproxy xia\]# pstree -p \| grep haproxy \|-haproxy(30610)---haproxy(30612)-+-{haproxy}(30613) \| \|-{haproxy}(30614) \| \`-{haproxy}(30615) \[root@haproxy xia\]# vim /etc/haproxy/haproxy.cfg  \[root@haproxy xia\]# systemctl restart haproxy.service \[root@haproxy xia\]# pstree -p \| grep haproxy \|-haproxy(30685)-+-haproxy(30687) \| \`-haproxy(30688) #多进程cpu绑定 \[root@haproxy xia\]# vim /etc/haproxy/haproxy.cfg  \[root@haproxy xia\]# systemctl restart haproxy.service #为不同进程准备不同套接字 \[root@haproxy xia\]# vim /etc/haproxy/haproxy.cfg \[root@haproxy xia\]# systemctl restart haproxy.service \[root@haproxy xia\]# systemctl stop haproxy.service \[root@haproxy xia\]# rm -fr /var/lib/haproxy/stats \[root@haproxy xia\]# vim /etc/haproxy/haproxy.cfg  \[root@haproxy xia\]# systemctl restart haproxy.service #效果  ### 4.haproxy实现多线程 注意多线程不能和多进程同时启用 #查看当前haproxy的进程信息 \[root@haproxy xia\]# pstree -p \| grep haproxy \|-haproxy(30711)-+-haproxy(30713) \| \`-haproxy(30714) #查看haproxy子进程的线程信息 \[root@haproxy xia\]# cat /proc/30713/status \| grep Threads Threads: 1 #启用多线程 \[root@haproxy xia\]# vim /etc/haproxy/haproxy.cfg  \[root@haproxy xia\]# systemctl restart haproxy.service \[root@haproxy xia\]# pstree -p \| grep haproxy \|-haproxy(30730)---haproxy(30732)---{haproxy}(30733) 效果 \[root@haproxy xia\]# cat /proc/30732/status \| grep Threads Threads: 2 ## 四.socat热更新工具 热更新 在服务或软件不停止的情况下更新软件或服务的工作方式,完成对软件不停工更新,典型的热更新设备,usb,在使用usb进行插拔时,电脑系统时不需要停止工作的,这中设备叫热插拔设备。 ### 1.安装socat \[root@haproxy xia\]# mount /dev/sr0 /mnt \[root@haproxy xia\]# dnf install socat -y \[root@haproxy xia\]# socat -h 查看 socat 工具的帮助信息 ### 2.利用socat查看haproxy信息 \[root@haproxy xia\]# echo "show servers state" \| socat stdio /var/lib/haproxy/stats 查询所有后端服务器的底层运行状态 1 # be_id be_name srv_id srv_name srv_addr srv_op_state srv_admin_state srv_uweight srv_iweight srv_time_since_last_change srv_check_status srv_check_result srv_check_health srv_check_state srv_agent_state bk_f_forced_id srv_f_forced_id srv_fqdn srv_port srvrecord srv_use_ssl srv_check_port srv_check_addr srv_agent_addr srv_agent_port 3 static 1 static 127.0.0.1 0 0 1 1 897 8 2 0 6 0 0 0 - 4331 - 0 0 - - 0 4 app 1 app1 127.0.0.1 0 0 1 1 897 8 2 0 6 0 0 0 - 5001 - 0 0 - - 0 4 app 2 app2 127.0.0.1 0 0 1 1 897 8 2 0 6 0 0 0 - 5002 - 0 0 - - 0 4 app 3 app3 127.0.0.1 0 0 1 1 896 8 2 0 6 0 0 0 - 5003 - 0 0 - - 0 4 app 4 app4 127.0.0.1 0 0 1 1 896 8 2 0 6 0 0 0 - 5004 - 0 0 - - 0 5 webcluster 1 haha 192.168.0.10 2 0 1 1 897 6 3 7 6 0 0 0 - 80 - 0 0 - - 0 5 webcluster 2 hehe 192.168.0.20 2 0 1 1 897 6 3 7 6 0 0 0 - 80 - 0 0 - - 0 \[root@haproxy xia\]# echo "get weight webcluster/haha" \| socat stdio /var/lib/haproxy/stats 查询指定后端服务器的当前权重值 1 (initial 1) \[root@haproxy xia\]# echo "get weight webcluster/hehe" \| socat stdio /var/lib/haproxy/stats 查询 webcluster/hehe 服务器的权重 1 (initial 1) ### 3.利用socat更改haproxy信息 #直接更改报错 \[root@haproxy xia\]# echo "set weight webcluster/haha 2" \| socat stdio /var/lib/haproxy/stats Permission denied #对socket进行授权 \[root@haproxy xia\]# vim /etc/haproxy/haproxy.cfg  \[root@haproxy xia\]# rm -rf /var/lib/haproxy/\* \[root@haproxy xia\]# systemctl restart haproxy.service \[root@haproxy xia\]# ll /var/lib/haproxy/ 总用量 0 srw------- 1 root root 0 2月 11 10:21 stats #对socket进行授权 \[root@haproxy xia\]# echo "get weight webcluster/hehe" \| socat stdio /var/lib/haproxy/stats 1 (initial 1) \[root@haproxy xia\]# echo "set weight webcluster/hehe 4 " \| socat stdio /var/lib/haproxy/stats \[root@haproxy xia\]# echo "get weight webcluster/hehe" \| socat stdio /var/lib/haproxy/stats 4 (initial 1) 测试  ### 五.Haproxy算法实验 1.静态算法 1.1static-rr \[root@haproxy xia\]# vim /etc/haproxy/haproxy.cfg  \[root@haproxy xia\]# systemctl restart haproxy.service 测试  #检测是否支持热更新  1.2.first \[root@haproxy xia\]# vim /etc/haproxy/haproxy.cfg  \[root@haproxy xia\]# systemctl restart haproxy.service 测试 \[root@haproxy xia\]# while true; do curl 172.25.254.100; done webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 ... ....... \[xia@haproxy \~\]$ while true; do curl 172.25.254.100; done webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver1 - 192.168.0.10 webserver2 - 192.168.0.20 webserver1 - 192.168.0.10 webserver2 - 192.168.0.20 ### 2.动态算法 #### 2.1.roundrobin \[root@haproxy xia\]# vim /etc/haproxy/haproxy.cfg  \[root@haproxy xia\]# systemctl restart haproxy.service 验证  #动态权重更新 \[root@haproxy xia\]# echo "get weight webcluster/haha" \| socat stdio /var/lib/haproxy/stats 2 (initial 2) \[root@haproxy xia\]# echo "set weight webcluster/haha 1 " \| socat stdio /var/lib/haproxy/stats \[root@haproxy xia\]# echo "get weight webcluster/haha" \| socat stdio /var/lib/haproxy/stats 1 (initial 2) 验证  #### 2.2 leastcon 验证  ### 3.混合算法 #### 3.1.source #默认静态算法  验证  #source动态算法  验证  #### 3.2.uri #主备实验环境 webserver1  webserver2  #设定uri算法  测试  #### 3.3.url_param #主备实验环境 webserver1 webserver2  #设定url_param算法  测试  #### 3.4hdr 测试  ## 六.基于cookie的会话保持 如果在haprorxy中设定算法为source,在同一台客户端主机中,无论使用什么浏览器访问的最终服务器是同一个 可以使用cookie值进行优化,让同一台客户端中同一个浏览器中访问的是同一个服务器 不同浏览器访问的是不同的服务器 #配合基于cookie的会话保持方法 测试  ## 七.HAProxy状态页  登录测试   开启自动刷新  ## 八.IP透传 ### 1.七层IP透传 #实验环境  测试  #在rs主机中默认是未开启透传功能的  #可以忽略不记  #在rs中设定采集透传IP  #记得systemctl restart httpd 测试  ### 2.四层IP透传 #环境设置 #在RS中把apache停止  #部署nginx \[root@webserver1 xia\]# mount /dev/sr0 /mnt mount: /mnt: WARNING: source write-protected, mounted read-only. \[root@webserver1 xia\]# dnf install nginx -y \[root@webserver1 xia\]# echo RS2 - 192.168.0.10 \> /usr/share/nginx/html/index.html \[root@webserver1 xia\]# systemctl enable --now nginx Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service. \[root@webserver2 xia\]# mount /dev/sr0 /mnt mount: /mnt: WARNING: source write-protected, mounted read-only. \[root@webserver2 xia\]# dnf install nginx -y \[root@webserver2 xia\]# echo RS2 - 192.168.0.20 \> /usr/share/nginx/html/index.html \[root@webserver2 xia\]# systemctl enable --now nginx Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service. 测试 #启用nginx的四层访问控制 \[root@webserver1/2 xia\]# vim /etc/nginx/nginx.conf server { listen 80 proxy_protocol; #启用四层访问控制 listen \[::\]:80; server_name _; root /usr/share/nginx/html; # Load configuration files for the default server block. include /etc/nginx/default.d/\*.conf; error_page 404 /404.html; location = /404.html { } \[root@webserver1/2 xia\]# systemctl restart nginx.service 记得重启服务 测试  出现上述报错标识nginx只支持四层访问 #设定haproxy访问4层  mode tcp #四层访问 测试  #设置4层ip透传 \[root@webserver1/2 xia\]# vim /etc/nginx/nginx.conf http { log_format main '$remote_addr - $remote_user \[$time_local\] "$request" ' '"$proxy_protocol_addr"' 采集传递信息 '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; \[root@webserver1/2 xia\]# systemctl restart nginx.service 测试   ## 九.Harproxy的四层负载 #部署mariadb数据库 \[root@webserver1/2 xia\]# dnf install mariadb-server mariadb -y \[root@webserver1/2 xia\]# vim /etc/my.cnf.d/mariadb-server.cnf \[mysqld
server_id=10 #设定数据库所在主机的id标识,在20上设定id为20
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mariadb/mariadb.log
pid-file=/run/mariadb/mariadb.pid
#建立远程登录用户并授权
root@webserver1/2 xia\]# systemctl start mariadb.service \[root@webserver1/2 xia\]# mysql  测试 \[root@webserver2 xia\]# mysql -ulee -plee -h 192.168.0.20 #测试10时修改ip即可  #四层负载操作  检测端口  验证  backup参数   关闭10的mariadb并等待1分钟 \[root@webserver1 xia\]# systemctl stop mariadb \[Administrator.DESKTOP-VJ307M3\] ➤ mysql -ulee -plee -h172.25.254.100 -P 6663 ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 1 "Operation not permitted" #标识haproxy 没有完成故障转换,需要等待 \[Administrator.DESKTOP-VJ307M3\] ➤ mysql -ulee -plee -h172.25.254.100 -P 6663 Welcome to the MariaDB monitor. Commands end with ; or \\g. Your MariaDB connection id is 11 Server version: 10.5.27-MariaDB MariaDB Server Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\\h' for help. Type '\\c' to clear the current input statement. MariaDB \[(none)\]\> SELECT @@server_id; +-------------+ \| @@server_id \| +-------------+ \| 20 \| +-------------+ 1 row in set (0.00 sec) MariaDB \[(none)\]\> #还原故障主机等待片刻 \[root@webserver1 xia\]# systemctl start mariadb \[Administrator.DESKTOP-VJ307M3\] ➤ mysql -ulee -plee -h172.25.254.100 -P 6663 Welcome to the MariaDB monitor. Commands end with ; or \\g. Your MariaDB connection id is 4 Server version: 10.5.27-MariaDB MariaDB Server Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\\h' for help. Type '\\c' to clear the current input statement. MariaDB \[(none)\]\> SELECT @@server_id; +-------------+ \| @@server_id \| +-------------+ \| 10 \| +-------------+ 1 row in set (0.00 sec) ## 十.自定义HAProxy 错误界面 ### 1.sorryserver的设定 正常的所有服务器如果出现宕机,那么客户将被定向到指定的主机中,这个当业务主机出问题时被临时访问的主机叫做sorryserver #在新主机中安装apache(可以用haproxy主机代替) \[root@haproxy xia\]# dnf install httpd -y \[root@haproxy xia\]# vim /etc/httpd/conf/httpd.conf  \[root@haproxy xia\]# systemctl enable --now httpd Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service. \[root@haproxy xia\]# echo "夏润宇勇往直前" \> /var/www/html/index.html #配置sorryserver上线  验证  \[root@webserver1/2 xia\]# systemctl stop httpd  ### 2.自定义错误页面 当所有主机包括sorryserver都宕机了,那么haproxy会提供一个默认访问的错误页面,这个错误页面跟报错代码有关,这个页面可以通过定义来机型设置 #出现的错误页面 \[root@webserver1/2 xia\]# systemctl stop httpd \[root@haproxy xia\]# systemctl stop httpd 注意vim /errorpage/html/503.http 脚本里面的tcp要改成http  #所有后端web服务都宕机  \[root@haproxy \~\]# mkdir /errorpage/html/ -p \[root@haproxy \~\]# vim /errorpage/html/503.http \[root@haproxy \~\]# cat /errorpage/html/503.http HTTP/1.0 503 Service Unavailable Cache-Control: no-cache Connection: close Content-Type: text/html;charset=UTF-8 \\
\