资讯详情

基于 CentOS7 搭建 5 节点三层高可用 Web 集群功能实现

📅 2026/9/24 16:38:35 | 华诺云谱 👁 阅读
基于 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 批量自动化运维思路• 生产环境集群优化与迭代方案
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。