基于 CentOS7 搭建 5 节点三层高可用 Web 集群功能实现
1.编写 Shell 批量运维脚本替代重复手动命令提升部署效率通过免密 SSH 批量循环脚本 健壮性判断 日志输出实现一键启停全集群服务、一键巡检所有节点状态、自动化运维替代人工免密 SSH 原理管理节点生成公私钥公钥分发到所有节点后续连接无需密码验证脚本才能远程执行命令。前置在任意一台管理节点操作推荐 Nginx 主节点检查本机是否已有密钥:没查询到生成 RSA 公私钥无交互、无密码-t rsa使用 RSA 加密算法-N 密钥不设置密码脚本自动化必须无密码-f指定密钥存放路径验证分发公钥到全部 5 台节点这里只以一台具体举例说明其余几台也需要开机哦注第一次分发需要输入每台机器 root 密码验证免密是否成功不需要输入密码、正常输出主机名 免密搭建成功集群批量启停脚本功能-参数校验不传参、乱传参直接提示用法-循环遍历所有节点-区分服务存在性-带颜色输出日志方便看运维结果-适配 Nginx/Tomcat/MySQL 全服务编写集群服务启停脚本cat /usr/local/bin/cluster_service.sh EOF #!/bin/bash # Cluster node IP list NODE( 192.168.2.10 192.168.2.11 192.168.2.12 192.168.2.13 192.168.2.14 192.168.2.15 ) # Color settings RED\033[0;31m GREEN\033[0;32m NC\033[0m # Check input argument count [ $# -ne 1 ] echo -e ${RED}Error: One argument required${NC}\nUsage: $0 start|stop|restart exit 1 # Run remote tasks for ip in ${NODE[]}; do echo -e ${GREEN}Processing ${ip}${NC} ssh ${ip} systemctl $1 nginx; systemctl $1 tomcat; systemctl $1 mariadb [ $? -eq 0 ] echo -e ${GREEN}${ip} success${NC} || echo -e ${RED}${ip} fail${NC} done echo -e ${GREEN}All tasks done${NC} EOF给脚本添加执行权限检查文件权限是否生效全部重启集群服务单独测试单节点 SSH 连通性xsync.sh 集群文件同步脚本创建脚本赋予执行权限同步单个配置文件会把本机 hostname 文件推送到所有 5 台节点通用远程命令脚本xcall.sh创建脚本授权测试 查看所有节点系统时间 xcall.sh date把两个脚本批量推送到集群全部机器注日常运维常用测试命令# 批量查看所有节点主机名 xcall.sh hostname # 批量检查 Nginx 运行状态 xcall.sh systemctl status nginx # 批量检查防火墙状态 xcall.sh systemctl status firewalld总结脚本一cluster_service.sh专门固化Nginx/Tomcat/MariaDB这三个服务的启停是专项服务管理脚本二xsync.sh负责文件配置批量分发改完配置一键同步所有节点再用脚本一重启服务形成完整运维闭环脚本二备选xcall.sh通用万能批量命令排查问题、批量安装软件都能用。2.接入 PrometheusGrafana 监控体系实现服务器、服务、数据库状态实时监测与异常告警批量部署 node-exporter5 台服务器全部部署master 下载二进制包先确认文件存在解压同步程序至所有节点创建 systemd 服务文件写入内容同步服务文件至全部节点批量重载系统服务、启动、开机自启xcall.sh systemctl daemon-reload xcall.sh systemctl start node-exporter xcall.sh systemctl enable node-exporter xcall.sh systemctl status node-exporter # 批量验证运行状态浏览器访问http://192.168.2.10:9100/metrics出现指标即正常。部署业务专属采集器Nginx-exporter192.168.2.10、192.168.2.11示例Nginx 开启监控状态页,编辑 nginx 主配置在 http 块内添加同步配置并重载 Nginx注意里面的hostname根据真实且正确主机名写可先通过执行hostname进行查看也可以分别进行重载测试状态页同理可得部署 nginx-exporter创建服务文件同步服务文件启动仅两台 Nginx 节点mysqld-exporter192.168.2.14、192.168.2.15 MySQL 主从MySQL 创建监控账号登录 192.168.2.14 执行 SQL下载部署 mysqld-exporter创建数据库认证配置文件同步文件并设置权限注: 除了使用xsync还可以使用单节点逐个scp同步systemd 服务文件同步文件启动仅 mysql 两台节点tomcat-exporter192.168.2.12 centos-app下载 jar 包Tomcat 新增监控配置在文件最顶部添加//Master 节点部署 Prometheus 192.168.2.10安装程序......整套集群功能复盘与故障总结已实现完整能力接入层高可用双 Nginx Keepalived VIP 自动漂移彻底消除网关单点故障应用层负载均衡Nginx 分发流量至多台 Tomcat提高并发承载能力数据层冗余备份MySQL 主从复制binlog 日志实时同步保障数据安全集群自动化运维通过自定义 Shell 脚本实现多节点批量运维大幅降低运维成本部署过程核心踩坑总结Keepalived 虚拟 IP 不漂移防火墙、SELinux 未关闭导致 VRRP 协议拦截MySQL 主从同步失败server-id 重复、binlog 日志异常、从库只读权限未配置Tomcat 无法被负载分发端口监听、进程未彻底关闭、上下文路径配置问题SSH 免密失效.ssh 目录权限过高必须 700 权限私钥 600 权限企业级进阶优化方案项目拓展架构设计本项目在基础集群稳定运行的前提下梳理生产级优化升级方案作为后续迭代方向Prometheus Grafana 全集群监控方案规划对集群全组件监控• 服务器指标CPU、内存、磁盘、网络• 服务指标Nginx QPS、连接数、Tomcat 线程、JVM 状态• 数据库指标MySQL 连接数、慢查询、主从延迟 实现可视化面板展示 异常告警机制。MySQL 读写分离 Redis 缓存优化当前架构仅主从备份后续可引入• MyCat 中间件实现读写分离主库写、从库读• 增加 Redis 热点数据缓存降低数据库压力提升响应速度Docker 容器化改造将 Nginx、Tomcat、MySQL 容器化部署解决环境不一致、部署繁琐问题实现服务快速迁移、快速恢复。K8s 容器编排进阶在容器化基础上后续可接入 K8s 实现自动扩缩容、自愈、滚动更新向生产级集群架构升级。云平台迁移方案将本地虚拟机集群迁移至公有云 ECS替换传统虚拟化架构适配企业云上运维场景。项目整体总结本项目完整搭建 5 节点三层高可用 Web 集群从基础服务部署、高可用架构实现、数据冗余备份到自动化运维脚本开发、故障排错、企业级架构优化完成一套从零基础到企业标准的 Web 运维集群实战项目。通过本次项目熟练掌握了• 高可用架构设计思想• 负载均衡流量分发原理• MySQL 主从复制机制• Linux 批量自动化运维思路• 生产环境集群优化与迭代方案

相关新闻

Keystone 6 测试实战:用 getContext + node:test 为 GraphQL API 编写集成测试

Keystone 6 测试实战:用 getContext + node:test 为 GraphQL API 编写集成测试

后端 【免费下载链接】keystone The superpowered headless CMS for Node.js — built with GraphQL and React 项目地址: https://gitcode.com/gh_mirrors/key/keystone 点击查看 免费下载 导读 本指南以仓库中的 examples/testing 示例项目为主线,讲…

2026/9/24 16:38:45 阅读更多 →
Dart 分析服务器代码补全(Code Completion)实现指南:从请求处理到候选排序的完整链路

Dart 分析服务器代码补全(Code Completion)实现指南:从请求处理到候选排序的完整链路

Dart 分析服务器代码补全(Code Completion)实现指南:从请求处理到候选排序的完整链路 【免费下载链接】sdk The Dart SDK, including the VM, JS and Wasm compilers, analysis, core libraries, and more. 项目地址: https://gitcode.com/…

2026/9/24 16:38:45 阅读更多 →
Whisper Windows 移植版:基于 DirectCompute 的高性能 GPGPU 推理指南

Whisper Windows 移植版:基于 DirectCompute 的高性能 GPGPU 推理指南

人工智能语音音频本地部署桌面应用 【免费下载链接】Whisper High-performance GPGPU inference of OpenAIs Whisper automatic speech recognition (ASR) model 项目地址: https://gitcode.com/gh_mirrors/wh/Whisper 点击查看 免费下载 本指南以仓库根目录 Readm…

2026/9/24 16:38:44 阅读更多 →

最新新闻

C# WinForms+OpenCvSharp实现实时图像与TCP检测结果同窗显示

C# WinForms+OpenCvSharp实现实时图像与TCP检测结果同窗显示

简介:针对相机无法通过SDK直接取图、只能从本地文件读取场景,这份C#工程源码提供了一套图像与通信联动的检测可视化方案。程序基于System.Drawing与System.Net.Sockets实现两路并行:定时扫描本地文件夹并实时绘制最新图像,同时监听…

2026/9/24 18:10:58 阅读更多 →
JavaWeb电子相册毕设项目:JSP+Servlet+JDBC+MySQL实战全解析

JavaWeb电子相册毕设项目:JSP+Servlet+JDBC+MySQL实战全解析

简介:这份基于JavaWeb的电子相册毕设项目,是一套完整的网络相册管理系统源码包,面向计算机相关专业准备毕业设计的学生及需要项目实战的Java初学者,可直接作为毕设使用。系统采用B/S结构,前台支持用户注册登录、网站介…

2026/9/24 18:10:58 阅读更多 →
基于Python和CNN的人脸表情识别课程设计全流程解析

基于Python和CNN的人脸表情识别课程设计全流程解析

简介:这是一份基于深度学习的人脸表情识别系统完整实现,面向高校课程设计、毕业设计及计算机视觉初学者,解决从数据集处理、模型训练到实时表情识别落地的全流程问题。压缩包共19个文件、约10.81MB,其中10个Python脚本为核心源码&…

2026/9/24 18:10:58 阅读更多 →
Python+Django实战:高校学生违纪管理系统开发与数据建模

Python+Django实战:高校学生违纪管理系统开发与数据建模

简介:这套基于Python的高校学生违纪信息管理系统,面向教育信息化开发者、高校管理人员及需要搭建同类Web管理系统的技术人群,系统围绕学生违纪数据的录入、分类统计、处罚记录、报表导出、权限管理和预警通知等核心功能展开,能够显…

2026/9/24 18:10:58 阅读更多 →
JavaEE二手图书交易平台源码实战:分层架构与部署避坑指南

JavaEE二手图书交易平台源码实战:分层架构与部署避坑指南

简介:这是一套面向高校计算机相关专业学生的JavaEE课程设计完整资源,以二手图书交易平台为选题,适合作为期末大作业、课程设计或毕业设计参考,新手也能快速上手。资源包共173个文件,约25.68MB,涵盖21个Java…

2026/9/24 18:10:58 阅读更多 →
JavaEE二手图书交易平台实战:Spring+MyBatis从零搭建与避坑指南

JavaEE二手图书交易平台实战:Spring+MyBatis从零搭建与避坑指南

简介:这是一套面向高校计算机相关专业学生的JavaEE课程设计完整项目,以二手图书交易平台为主题,适合作为期末大作业、课程设计或毕业设计参考。项目采用Java语言开发,功能覆盖用户注册登录、图书发布、分类浏览、订单管理等核心业…

2026/9/24 18:09:58 阅读更多 →

日新闻

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →