haproxy 📅 发布时间:2026/7/11 4:46:57 👁️ 浏览次数: 负载均衡Load Balance简称LB是一种服务或基于硬件设备等实现的高可用反向代理技术负载均 衡将特定的业务(web服务、网络流量等)分担给指定的一个或多个后端特定的服务器或设备从而提高了 公司业务的并发处理能力、保证了业务的高可用性、方便了业务后期的水平动态扩展。为什么用负载均衡Web服务器的动态水平扩展对用户无感知 增加业务并发访问及处理能力解决单服务器瓶颈问题 节约公网IP地址降低IT支出成本 隐藏内部服务器IP提高内部服务器安全性 配置简单固定格式的配置文件 功能丰富支持四层和七层支持动态下线主机 性能较强并发数万甚至数十万负载均衡类型:四层负载均衡1.通过ipport决定负载均衡的去向。2.对流量请求进行NAT处理转发至后台服务器。3.记录tcp、udp流量分别是由哪台服务器处理后续该请求连接的流量都通过该服务器处理。4.支持四层的软件lvs重量级四层负载均衡器。Nginx轻量级四层负载均衡器可缓存。nginx四层是通过upstream模块Haproxy 模拟四层转发。四层的负载均衡就是通过发布三层的IP地址VIP然后加四层的端口号来决定哪些流量需要做负 载均衡对需要处理的流量进行NAT处理转发至后台服务器并记录下这个TCP或者UDP的流量是由哪 台服务器处理的后续这个连接的所有流量都同样转发到同一台服务器处理七层负载均衡1.通过虚拟url或主机ip进行流量识别根据应用层信息进行解析决定是否需要进行负载均衡。2.代理后台服务器与客户端建立连接如nginx可代理前后端与前端客户端tcp连接与后端服务器建立 tcp连接。3.支持7层代理的软件Nginx:基于http协议(nginx七层是通过proxy_pass)Haproxy:七层代理会话保持、标记、路径转移等。七层的负载均衡就是在四层的基础上没有四层是绝对不可能有七层的再考虑应用层的特征比 如同一个Web服务器的负载均衡除了根据VIP加80端口辨别是否需要处理的流量还可根据七层的 URL、浏览器 类别、语言来决定是否要进行负载均衡。1.实现最基本的负载1.1前后端分开设定[roothaproxy ~]# vim /etc/haproxy/haproxy.cfgfrontend webclusterbind *:80mode httpuse_backend webserver-80backend webserver-80server web1 192.168.0.10:80 check inter 3s fall 3 rise 5server web2 192.168.0.20:80 check inter 3s fall 3 rise 5[roothaproxy ~]# systemctl restart haproxy.service1.2用listen方式书写负载均衡[roothaproxy ~]# vim /etc/haproxy/haproxy.cfglisten webclusterbind *:80mode httpserver haha 192.168.0.10:80 check inter 3s fall 3 rise 5server hehe 192.168.0.20:80 check inter 3s fall 3 rise 5[roothaproxy ~]# systemctl restart haproxy.service2.指定把日志发送到哪里实验指定日志发送到192.168.0.102.1在192.168.0.10 开启接受日志的端口[rootwebserver1 ~]# vim /etc/rsyslog.confmodule(loadimudp) # needs to be done just onceinput(typeimudp port514)[rootwebserver1 ~]# systemctl restart rsyslog.service2.2测试接受日志端口是否开启[rootwebserver1 ~]# netstat -antlupe | grep rsyslogudp 0 0 0.0.0.0:514 0.0.0.0:* 0 74140 30965/rsyslogdudp6 0 0 :::514 :::* 0 74141 30965/rsyslogd2.3在haproxy主机中设定日志发送信息[roothaproxy haproxy]# vim haproxy.cfglog 192.168.0.10 local2[roothaproxy haproxy]# systemctl restart haproxy.service3.实现haproxy的多进程3.1默认haproxy是单进程[roothaproxy ~]# vim /etc/haproxy/haproxy.cfgnbproc 2[roothaproxy ~]# systemctl restart haproxy.service#验证[roothaproxy ~]# pstree -p | grep haproxy|-haproxy(31549)--haproxy(31551)| -haproxy(31552)3.2多进程cpu绑定[roothaproxy ~]# vim /etc/haproxy/haproxy.cfgnbproc 2cpu-map 1 0cpu-map 2 1[roothaproxy ~]# systemctl restart haproxy.servicecpu-map 1 0 → 第1个进程 绑定到 第0号CPU核心cpu-map 2 1 → 第2个进程 绑定到 第1号CPU核心4.利用socat热更新工具查看haproxy信息在服务或软件不停止的情况下更新软件或服务的工作方式完成对软件不停工更新安装socat[roothaproxy ~]# dnf install socat -y[roothaproxy ~]# socat -h[roothaproxy ~]# echo show servers state | socat stdio /var/lib/haproxy/statswebcluster 1 haha 192.168.0.10 2 0 1 1 275 6 3 7 6 0 0 0 - 80 - 0 0 - - 0webcluster 2 hehe 192.168.0.20 2 0 1 1 275 6 3 7 6 0 0 0 - 80 - 0 0 - - 0[roothaproxy ~]# echo get weight webcluster/haha | socat stdio /var/lib/haproxy/stats1 (initial 1)[roothaproxy ~]# echo get weight webcluster/hehe | socat stdio /var/lib/haproxy/stats1 (initial 1)5.利用socat更改haproxy信息对socket进行授权[roothaproxy ~]# vim /etc/haproxy/haproxy.cfgstats socket /var/lib/haproxy/stats mode 600 level admin删除上个实验的配置[roothaproxy ~]# rm -rf /var/lib/haproxy/*[roothaproxy ~]# systemctl restart haproxy.service[roothaproxy ~]# ll /var/lib/haproxy/总用量 0srw------- 1 root root 0 1月 25 10:04 stats执行权重更改[roothaproxy ~]# echo set weight webcluster/hehe 4 | socat stdio /var/lib/haproxy/stats[roothaproxy ~]# echo get weight webcluster/hehe | socat stdio /var/lib/haproxy/stats4 (initial 1)6.基于cookie的会话保持如果在haprorxy中设定算法为source在同一台客户端主机中无论使用什么浏览器访问的最终服务器是同一个。可以使用cookie值进行优化让同一台客户端中同一个浏览器中访问的是同一个服务器不同浏览器访问的是不同的服务器配合基于cookie的会话保持方法[roothaproxy ~]# vim /etc/haproxy/haproxy.cfglisten webclusterbind *:80balance roundrobinhash-type consistentcookie WEBCOOKIE insert nocache indirectserver haha 192.168.0.10:80 cookie web1 check inter 3s fall 3 rise 5 weight 2server hehe 192.168.0.20:80 cookie web2 check inter 3s fall 3 rise 5 weight 1[roothaproxy ~]# systemctl restart haproxy.service7.HAProxy状态页[roothaproxy ~]# vim /etc/haproxy/haproxy.cfglisten statsmode httpbind 0.0.0.0:4321stats enablelog globalstats refresh 1stats uri /statusstats auth lee:lee[roothaproxy ~]# systemctl restart haproxy.service8.Haproxy算法实验8.1 静态算法static-rr--静态轮询算法和普通的 roundrobin 很像权重调整,需要重启服务才能生效[roothaproxy ~]# vim /etc/haproxy/haproxy.cfglisten webclusterbind *:80balance static-rrserver haha 192.168.0.10:80 check inter 3s fall 3 rise 5 weight 2server hehe 192.168.0.20:80 check inter 3s fall 3 rise 5 weight 1[roothaproxy ~]# systemctl restart haproxy.service#测试[Administrator.DESKTOP-VJ307M3] ➤ for i in {1..10}; do curl 172.25.254.100; donewebserver1 - 192.168.0.10webserver1 - 192.168.0.10webserver2 - 192.168.0.20webserver1 - 192.168.0.10webserver1 - 192.168.0.10webserver2 - 192.168.0.20webserver1 - 192.168.0.10webserver1 - 192.168.0.10webserver2 - 192.168.0.20webserver1 - 192.168.0.108.2 firstfirst 算法是 “先用满第一台再用下一台”,请求按服务器定义顺序依次使用只有当第一台服务器的连接数达到上限才会把请求分给第二台。先把 web1 用到 100 个连接web1 满了才用 web2web2 满了才用 web3如果有[roothaproxy ~]# vim /etc/haproxy/haproxy.cfglisten webclusterbind *:80balance firstserver haha 192.168.0.10:80 maxconn 100 check inter 3s fall 3 rise 5 weight 2server hehe 192.168.0.20:80 maxconn 100 check inter 3s fall 3 rise 5 weight 1[roothaproxy ~]# systemctl restart haproxy.service8.3 动态算法roundrobin权重调整,需要重启服务才能生效[roothaproxy ~]# vim /etc/haproxy/haproxy.cfglisten webclusterbind *:80balance roundrobinserver haha 192.168.0.10:80 check inter 3s fall 3 rise 5 weight 2server hehe 192.168.0.20:80 check inter 3s fall 3 rise 5 weight 1[roothaproxy ~]# systemctl restart haproxy.service#测试[Administrator.DESKTOP-VJ307M3] ➤ for i in {1..10}; do curl 172.25.254.100; donewebserver1 - 192.168.0.10webserver1 - 192.168.0.10webserver2 - 192.168.0.20webserver1 - 192.168.0.10webserver1 - 192.168.0.10webserver2 - 192.168.0.20webserver1 - 192.168.0.10webserver1 - 192.168.0.10webserver2 - 192.168.0.20webserver1 - 192.168.0.10leastconn--最少连接算法核心原则是谁最闲就给谁派活[roothaproxy ~]# vim /etc/haproxy/haproxy.cfglisten webclusterbind *:80balance leastconnserver haha 192.168.0.10:80 check inter 3s fall 3 rise 5 weight 2server hehe 192.168.0.20:80 check inter 3s fall 3 rise 5 weight 1[roothaproxy ~]# systemctl restart haproxy.service[Administrator.DESKTOP-VJ307M3] ➤ for i in {1..10}; do curl 172.25.254.100; donewebserver1 - 192.168.0.10webserver2 - 192.168.0.20webserver1 - 192.168.0.10webserver2 - 192.168.0.20webserver1 - 192.168.0.10webserver2 - 192.168.0.20webserver1 - 192.168.0.10webserver2 - 192.168.0.20webserver1 - 192.168.0.10webserver2 - 192.168.0.208.4 混合算法source--源 IP 哈希,Hash(客户端IP) % 服务器总数 选定的服务器效果同一个 IP 的请求始终访问同一台服务器。[roothaproxy ~]# vim /etc/haproxy/haproxy.cfglisten webclusterbind *:80balance sourceserver haha 192.168.0.10:80 check inter 3s fall 3 rise 5 weight 2server hehe 192.168.0.20:80 check inter 3s fall 3 rise 5 weight 1[roothaproxy ~]# systemctl restart haproxy.service一致性哈希(hash-type consistent)默认的哈希方式是 取模法consistent 是 一致性哈希。简单说默认方式一台挂了全部重算用户会话集体失效一致性哈希一台挂了只影响它负责的那部分其他用户不受影响[roothaproxy ~]# vim /etc/haproxy/haproxy.cfglisten webclusterbind *:80balance sourcehash-type consistentserver haha 192.168.0.10:80 check inter 3s fall 3 rise 5 weight 2server hehe 192.168.0.20:80 check inter 3s fall 3 rise 5 weight 1[roothaproxy ~]# systemctl restart haproxy.serviceuri--URI 哈希效果根据请求的 URI 路径进行哈希,访问 /api/user 的请求始终去同一台访问 /api/order 去另一台。[roothaproxy ~]# vim /etc/haproxy/haproxy.cfglisten webclusterbind *:80balance urihash-type consistentserver haha 192.168.0.10:80 check inter 3s fall 3 rise 5 weight 2server hehe 192.168.0.20:80 check inter 3s fall 3 rise 5 weight 1[roothaproxy ~]# systemctl restart haproxy.serviceurl_param--URL 参数哈希效果根据 URL 中的参数进行哈希,URL 中 ?userId1001 的请求始终去同一台服务器。[roothaproxy ~]# vim /etc/haproxy/haproxy.cfglisten webclusterbind *:80balance url_param namehash-type consistentserver haha 192.168.0.10:80 check inter 3s fall 3 rise 5 weight 2server hehe 192.168.0.20:80 check inter 3s fall 3 rise 5 weight 1[roothaproxy ~]# systemctl restart haproxy.servicehdr--通常是Host、User-Agent效果根据 HTTP 请求头进行哈希,同一个 Header 值的请求去同一台服务器。[roothaproxy ~]# vim /etc/haproxy/haproxy.cfglisten webclusterbind *:80balance hdrUser-Agenthash-type consistentserver haha 192.168.0.10:80 check inter 3s fall 3 rise 5 weight 2server hehe 192.168.0.20:80 check inter 3s fall 3 rise 5 weight 1[roothaproxy ~]# systemctl restart haproxy.service9.IP透传七层IP透传在rs主机中默认是未开启透传功能的[rootwebserver2 ~]# cat /etc/httpd/logs/access_log192.168.0.100 - - [26/Jan/2026:10:03:03 0800] GET / HTTP/1.1 200 26 - curl/7.65.0开启ip透传的方式[roothaproxy ~]# vim /etc/haproxy/haproxy.cfgdefaultsmode httplog globaloption httplogoption dontlognulloption http-server-closeoption forwardfor except 127.0.0.0/8 #开启haproxy透传功能option redispatchretries 3timeout http-request 10stimeout queue 1mtimeout connect 10stimeout client 1mtimeout server 1mtimeout http-keep-alive 10stimeout check 10smaxconn 3000在rs中设定采集透传IP[rootwebserver2 ~]# vim /etc/httpd/conf/httpd.conf201 LogFormat %h %l %u %t \%r\ %s %b \%{X-Forwarded-For}i\ \%{Referer}i\ \%{User-Agent}i \ combined[rootwebserver2 ~]# systemctl restart httpd测试效果[rootwebserver2 ~]# cat /etc/httpd/logs/access_log192.168.0.100 - - [26/Jan/2026:10:10:29 0800] GET / HTTP/1.1 200 26 172.25.254.1 - curl/7.65.0四层IP透传在RS中把apache停止[rootwebserver1 ~]# systemctl disable --now httpd[rootwebserver2 ~]# systemctl disable --now httpd部署nginx[rootwebserver1 ~]# dnf install nginx -y[rootwebserver2 ~]# dnf install nginx -y[rootwebserver1 ~]# echo RS1 - 192.168.0.10 /usr/share/nginx/html/index.html[rootwebserver2 ~]# echo RS2 - 192.168.0.20 /usr/share/nginx/html/index.html[rootwebserver1 ~]# systemctl enable --now nginx[rootwebserver2 ~]# systemctl enable --now nginx启用nginx的四层访问控制[rootwebserver12 ~]# vim /etc/nginx/nginx.confserver {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 {}[rootwebserver12 ~]# systemctl restart nginx.servicenginx只支持四层访问,设定haproxy访问4层[roothaproxy ~]# vim /etc/haproxy/haproxy.cfglisten webclusterbind *:80mode tcp #四层访问balance roundrobinserver haha 192.168.0.10:80 send-proxy check inter 3s fall 3 rise 5 weight 1server hehe 192.168.0.20:80 send-proxy check inter 3s fall 3 rise 5 weight 1[roothaproxy ~]# systemctl restart haproxy.service设置四层ip透传[rootwebserver12 ~]# vim /etc/nginx/nginx.conflog_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;[rootwebserver12 ~]# systemctl restart nginx.service10.Harproxy的四层负载--(mode tcp)环境设定1.部署mariadb数据库[rootwebserver12 ~]# dnf install mariadb-server mariadb -y[rootwebserver11 ~]# vim /etc/my.cnf.d/mariadb-server.cnf[mysqld]server_id10 #设定数据库所在主机的id标识在20上设定id为20datadir/var/lib/mysqlsocket/var/lib/mysql/mysql.socklog-error/var/log/mariadb/mariadb.logpid-file/run/mariadb/mariadb.pid2.建立远程登录用户并授权[rootwebserver21 ~]# mysqlMariaDB [(none)] CREATE USER lee% identified by lee;MariaDB [(none)] GRANT ALL ON *.* TO lee%;3.四层负载操作[roothaproxy ~]# vim /etc/haproxy/haproxy.cfglisten mariadbclusterbind *:6663 #端口随意mode tcpbalance roundrobinserver haha 192.168.0.10:3306 check inter 3s fall 3 rise 5 weight 1server hehe 192.168.0.20:3306 check inter 3s fall 3 rise 5 weight 1[roothaproxy ~]# vim /etc/haproxy/haproxy.cfg4.测试[Administrator.DESKTOP-VJ307M3] ➤ mysql -ulee -plee -h172.25.254.100 -P 6663Welcome to the MariaDB monitor. Commands end with ; or \g.Your MariaDB connection id is 7Server version: 10.5.27-MariaDB MariaDB ServerCopyright (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)] quitBye✔─────────────────────────────────────────────────────────────────────────────────────────────────────[2026-01-26 11:39.31] ~[Administrator.DESKTOP-VJ307M3] ➤ mysql -ulee -plee -h172.25.254.100 -P 6663Welcome to the MariaDB monitor. Commands end with ; or \g.Your MariaDB connection id is 8Server version: 10.5.27-MariaDB MariaDB ServerCopyright (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)MariaDB [(none)]5.backup参数--用于配置 备用服务器标记为 backup 的服务器平时 不接收任何流量只有当所有非 backup 服务器都挂了它才会启用[roothaproxy ~]# vim /etc/haproxy/haproxy.cfglisten mariadbclusterbind *:6663mode tcpbalance roundrobinserver haha 192.168.0.10:3306 check inter 3s fall 3 rise 5 weight 1server hehe 192.168.0.20:3306 check inter 3s fall 3 rise 5 weight 1 backup[roothaproxy ~]# systemctl restart haproxy.service
快速掌握5大排序算法精髓 排序算法一、插入排序1. 思想是——逐个将未排序的数据插入到已排序的数据中2. 重要性——为O(N)中效率较快的排序方法,是理解希尔排序的根基3. 代码for (int i 1; i < n; i){int tmp a[i];int j i - 1;while(j > 0 &&… 2026/7/7 4:56:27
对比分析AI裁决书:小律最优 2026年3月06日 18:35 由AI自动生成请你对比分析由不同AI生成的裁决书,评价哪一份写得最好基于对三份由不同AI生成的裁决书(《小律同学生成.docx》、《kimi 2.5生成.docx》、《deepseekV3.2生成.docx》)的详细对比分析,以下是评价报… 2026/5/17 3:20:38
放弃 chasing 大厂社交,我在剑侠世界里搭了个“防偷看”的小窝 对于社交软件,我已经有点 PTSD 了。 事情要从上个月说起。作为从《剑侠情缘网络版》一路摸爬滚打过来的老玩家,我们这群中年人的社交圈其实特别窄。微信群里有十几个人,都是当年一起在响水洞刷过怪、在汴京铁塔下PK到天亮的老兄弟。大家平时… 2026/5/17 9:22:17
响应面分析 3 大常见误区:从 SPSSAU 结果解读到 Python 手动验证 响应面分析三大陷阱:从SPSSAU结果验证到Python代码实战当研究者面对复杂的多变量系统时,响应面分析(Response Surface Methodology)已成为揭示变量间非线性关系的利器。但令人惊讶的是,超过60%使用SPSSAU等工具的研究者… 2026/7/11 4:44:13
STM32L041C6与ADS131M02高精度ADC系统设计指南 1. 项目背景与核心需求在工业测量、医疗设备和便携式仪器等领域,高精度模数转换(ADC)是数据采集系统的核心环节。传统方案往往面临几个痛点:要么使用MCU内置ADC但精度不足(通常仅12位),要么采用… 2026/7/11 4:44:12
Building and Environment 热点趋势分析:2023-2024年智能技术、低碳方案等5大主题发文统计 2023-2024年建筑环境领域五大前沿趋势:数据驱动的科研选题指南当全球建筑行业面临碳中和转型与数字化升级的双重挑战时,《Building and Environment》作为建筑科学领域的权威期刊,其发文趋势已成为把握学科风向的重要标尺。我们通过对2023-20… 2026/7/11 4:40:11
原来互联网上这些才是靠谱的谷歌SEO优化渠道? 引言在当今数字化时代,谷歌SEO优化对于企业拓展海外市场至关重要。然而,面对众多的优化渠道,如何选择靠谱的那一个成为了难题。凰启出海作为外贸整合营销资深服务商,有着诸多优势,能为企业提供可靠的谷歌SEO优化服务。… 2026/7/11 4:40:11
2026年小程序制作商排行榜,口碑、稳定性、服务实力排名 2026年小程序制作商排行榜,口碑、稳定性、服务实力排名市面上小程序制作商那么多,到底哪些综合实力强、口碑好?这个问题困扰着不少准备做小程序的老板。今天我就结合行业数据和用户反馈,梳理一份综合实力榜单。艾瑞咨询《2026年中… 2026/7/11 4:38:11
蓝牙BQB认证“十年最狠一刀”:2026新规落地,蓝牙5.4强制+LE Audio必选,模组选型怎么避坑? 蓝牙BQB认证“十年最狠一刀”:2026新规落地,欧飞信已完成蓝牙5.4LE Audio全系布局 上一篇刚贺喜全球首张蓝牙6.2模组认证落地,还没从高兴中缓过来,又有重磅信息炸开,蓝牙技术联盟(SIG)对BQB认证… 2026/7/11 4:36:11
5分钟搞定Kodi字幕难题:智能字幕插件让你追剧无忧 [特殊字符] 5分钟搞定Kodi字幕难题:智能字幕插件让你追剧无忧 🎬 【免费下载链接】zimuku_for_kodi Kodi 插件,用于从「字幕库」网站下载字幕 项目地址: https://gitcode.com/gh_mirrors/zi/zimuku_for_kodi 还记得那个深夜吗?你刚下载… 2026/7/11 0:00:11
工业信号干扰处理与FOD4216光耦应用实战 1. 工业环境中的信号干扰挑战在工业自动化领域,信号采集的准确性直接关系到整个控制系统的可靠性。典型的工业现场充斥着各种干扰源:大功率电机启停产生的电磁干扰、变频器工作产生的高频噪声、继电器触点火花放电,以及长距离传输引入的共模干… 2026/7/11 0:00:11
OpenHarmony 完整项目工程整合规范 + 模块化分层架构(API23+ 标准企业级结构) 摘要前面系列教程覆盖了 ArkUI 组件、路由、生命周期、本地存储、网络请求、Ability 底层全套基础能力,本篇统一梳理标准工程目录分层、模块化拆分、代码复用规范、全局工具统一管理、项目打包权限配置、常见工程报错统一解决方案,形成可直接用于课程设计… 2026/7/11 0:00:11
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/7 11:26:57
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/8 20:15:17
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/8 14:25:08