web集群项目:集群架构&环境&部署流程
本文介绍了基于RockyLinux9.4的混合云集群架构设计与部署方案。采用"1+7"架构,云端作为控制平面管理本地数据中心。核心组件包括K3s容器平台、LVS负载均衡、MySQL8.4高可用数据库、NFS共享存储等。重点阐述了网络规划、安全隧道(FRP)建立、Ansible自动化部署流程,以及监控(Prometheus)、日志(ELK)和CI/CD(GitLab+Jenkin
title: 集群架构&环境&部署顺序 date: 2026-03-10 categories: - web综合集群 tags: - 项目 cover:
集群环境-本地&云
组件信息
| 功能类别 | 详细组件名称 | 建议版本 | 说明与生产价值 (面试加分点) |
|---|---|---|---|
| 基础设施 | Rocky Linux | 9.4+ (LTS) | 替代 CentOS 7 的企业级首选,内核 5.14+ 更好地支持容器化。 |
| 云端大脑 | 火山云 (ECS) | 云服务环境 | 充当堡垒机与全局管理节点,模拟混合云(公有云管理私有云)架构。 |
| 管理隧道 | FRP (Fast Reverse Proxy) | v0.54.0+ | 建立“云对地”安全隧道,实现公网对内网节点的透明管理。 |
| 自动化运维 | Ansible | 2.17+ | 无代理(Agentless)批量化配置,实现“基础环境一键初始化”。 |
| 数据持久化 | MySQL (LTS) | 8.4.x | 最新的长期支持版,重点实现 MGR (组复制) 高可用架构。 |
| 共享存储 | NAS (NFS) | v4.2 | 为全集群提供统一的文件存储,作为 K8s 的后端 PV/PVC。 |
| 四层负载均衡 | LVS | 内核内置 | 采用 DR (直接路由) 模式,处理百万级并发的入口流量。 |
| 高可用协议 | Keepalived | 2.2+ | 实现 LVS 的 VIP 故障秒级漂移,消除负载均衡的单点故障。 |
| 容器底座 | K3s (轻量级 K8s) | v1.3x+ | 兼容标准 K8s 但占用资源更少,适合本地环境模拟企业级容器云。 |
| 容器运行时 | Containerd | 1.7+ | 取代 Docker 成为 K8s 官方首选运行时,性能更轻量、稳定。 |
| 七层路由 | Ingress Nginx | v1.10+ | 处理 HTTPS 卸载、域名转发及灰度发布逻辑。 |
| Web 核心 | Nginx | 1.26+ | 源码编译安装,开启 HTTP/3 (QUIC) 支持,作为业务 Pod 核心。 |
| 指标监控 | Prometheus | 3.0 (最新) | 时序数据库监控标杆,负责抓取主机、容器及数据库的 Metrics。 |
| 仪表盘 | Grafana | 11.x | 监控可视化展示,通过 Dashboards 实现全集群“一屏了然”。 |
| 日志采集 | Filebeat | 8.x | 轻量级日志收集器,将容器日志实时推送至中间件。 |
| 日志中转 | Kafka & ZK | 3.7+ | 大数据运维核心:在大流量下起到日志“削峰填谷”作用。 |
| 日志存储分析 | ELK Stack | 8.x (开源版) | Elasticsearch (存储) + Logstash (过滤) + Kibana (展示)。 |
| 代码管理 | GitLab | 17.x | 企业级私有代码仓库,触发 Jenkins 流水线的源头。 |
| 制品库 | Harbor | 2.10+ | 私有镜像仓库,支持镜像扫描和权限控制,存储 Web 业务镜像。 |
| 持续集成/交付 | Jenkins | 2.4xx (LTS) | 核心流水线工具,实现“代码提交 -> 镜像构建 -> K8s 部署”闭环。 |
本地虚拟资源分配表
| 主机名 | 操作系统 | 网卡模式 | 建议配置 | 角色说明 |
|---|---|---|---|---|
| firewall | Rocky 9 | NAT + Host-Only | 1C/1G | 流量门户、FRP 客户端 |
| LB1 / LB2 | Rocky 9 | Host-Only | 1C/1G | LVS 负载均衡 + Keepalived |
| Web1 / Web2 | Rocky 9 | Host-Only | 1C/2G | K3s 节点、Nginx 业务 |
| NAS | Rocky 9 | Host-Only | 1C/1G | NFS 存储、数据备份 |
| MySQL | Rocky 9 | Host-Only | 2C/2G | 数据库主从/MGR |
云服务器环境准备
云安全组(防火墙)放行策略
这是保障“将军”能下达指令且你能看到战报的前提。建议在控制台新建一个名为 sg-web-cluster 的安全组。
| 端口/范围 | 协议 | 授权对象 | 用途说明 | 生产环境规范建议 |
|---|---|---|---|---|
| 22 | TCP | 你的物理机公网 IP | SSH 远程登录 | 强烈建议不要选 0.0.0.0/0,仅限你自己电脑访问。 |
| 6000-6100 | TCP | 0.0.0.0/0 | FRP 穿透隧道 | 这是“云对地”的主干道,必须开放给本地 Firewall 节点。 |
| 3000 | TCP | 0.0.0.0/0 | Grafana 仪表盘 | 用于浏览器查看可视化监控数据。 |
| 9090 | TCP | 0.0.0.0/0 | Prometheus UI | 用于调试监控指标抓取是否正常。 |
| 80 / 443 | TCP | 0.0.0.0/0 | Web 业务访问 | 模拟最终用户访问你的集群业务。 |
云服务器环境配置
在重装系统为 Rocky 9 之后,你需要执行以下初始化动作
| 类别 | 检查项/软件 | 推荐配置/执行命令 | 说明 |
|---|---|---|---|
| OS | 操作系统 | Rocky Linux 9.4 (LTS) | 保持全群(云+地)内核版本一致,避免因内核差异导致的 K3s 部署失败。 |
| 基础工具 | 常用命令 | dnf install -y vim wget git screen tar |
运维必备全家桶。 |
| 源配置 | EPEL 源 | dnf install -y epel-release |
Rocky 默认源没有 Ansible,必须先安装 EPEL 扩展源。 |
| 核心组件 | Ansible | dnf install -y ansible |
整个集群的“总指挥部”,通过 Python 调用。 |
| 网络工具 | Net-Tools | dnf install -y net-tools psmisc |
用于执行 netstat 和 killall 等经典排障命令。 |
集群架构-混合云1+7架构
我将架构分为 “云端控制平面” 和 “本地数据中心(IDC)” 两部分 核心逻辑为:“云端控制,本地生产,存储分离,安全加固”
集群架构&功能分配表
| 逻辑分层 | 节点名称 | 核心组件 | 版本建议 | 角色描述 |
|---|---|---|---|---|
| 管理层 (Cloud) | Cloud-Hub | Ansible, FRPS, Prometheus, Grafana,DNS,堡垒机 | 最新 LTS | 全局指挥官,负责监控汇聚与自动化下发。 |
| 出口层 (Local) | Firewall | FRPC, IPtables/NFTables, SNAT | 内核原生 | 内外网隔离,负责流量路由转发与安全过滤。 |
| 负载层 (LB) | LB1 / LB2 | LVS (DR模式), Keepalived | v2.2+ | 四层负载均衡高可用,负责握手 VIP 并分发流量。 |
| 计算层 (K3s) | Web1 (Master) | K3s Server, Containerd, Ingress-Nginx | v1.3x+ | 容器大脑,运行 Ingress 控制器与业务 Pod。 |
| 计算层 (K3s) | Web2 (Agent) | K3s Agent, Containerd, HPA | v1.3x+ | 纯工作节点,配合 Web1 实现 Pod 自动扩缩容。 |
| 存储层 (NAS) | NAS | NFS Server, Chrony, Rsync | v4.2 | 共享存储中枢,提供 PV/PVC 后端支持。 |
| 数据层 (DB) | MySQL | MySQL 8.4 (MGR/主从), Filebeat | 8.4.x | 核心数据资产,配置 GTID 模式的高可用。 |
| 日志/DevOps | (运行在 K3s) | Kafka, ES, Kibana, Jenkins, GitLab | 容器化部署 | 利用容器化部署减少虚拟机数量,体现云原生运维。 |
集群网络&端口规划表
| 主机名 | 外网/WAN IP (NAT) | 内网/LAN IP (Host-Only) | 默认网关 | 关键放行端口 |
|---|---|---|---|---|
| Cloud-Hub | 115.191.4.120 |
N/A | 云供应商网关 | 22, 6000-6100, 3000, 9090 |
| Firewall | 192.168.10.125 |
192.168.31.2 |
192.168.10.2 |
22, 80, 443, 隧道随机端口 |
| LB1 (M) | N/A | 192.168.31.3 |
192.168.31.2 |
80, 443, 1038 (Keepalived) |
| LB2 (B) | N/A | 192.168.31.4 |
192.168.31.2 |
80, 443, 1038 (Keepalived) |
| Web1 | N/A | 192.168.31.5 |
192.168.31.2 |
6443 (K3s API), 80, 443, 9100 |
| Web2 | N/A | 192.168.31.6 |
192.168.31.2 |
80, 443, 9100 (Exporter) |
| NAS | N/A | 192.168.31.7 |
192.168.31.2 |
111, 2049 (NFS) |
| MySQL | N/A | 192.168.31.8 |
192.168.31.2 |
3306, 33061 (MGR通信) |
| 集群 VIP | 192.168.10.200 |
N/A | 映射至 LB 组 | 暴露给最终用户的唯一访问入口 |
混合云架构全链路数据流转
管理流
路径:运维人员 -> 云端 -> 本地内网
-
链路描述:
-
运维人员通过公网 SSH 登录 Cloud-Hub(堡垒机)。
-
Cloud-Hub 上的 Ansible 发出指令。
-
指令通过 FRP 隧道(地对云主动建立的安全通道)穿透防火墙。
-
流量到达 Firewall 的 DNAT 端口,转发至内网 Ansible 跳板接口。
-
Ansible 利用 SSH 代理转发(ProxyCommand),实现对内网 7 台虚拟机及 K3s 内部 Pod 的批量配置。
-
-
技术价值:实现了“公网管控,内网隔离”,确保生产环境不直接暴露 SSH 端口。
监控流
路径:本地各节点 -> 网关 -> 云端展示
-
链路描述:
-
本地 VM 安装
node_exporter,MySQL 安装mysqld_exporter,K3s 安装metrics-server。 -
Prometheus (云端) 定时通过 FRP 隧道拨号,拉取(Pull)各节点的监控指标。
-
数据存储在云端时序数据库中。
-
Grafana (云端) 访问 Prometheus 获取数据并实时绘图。
-
-
技术价值:即使本地环境断网,历史监控数据依然保留在云端。
业务流
路径:外部用户 -> 四层负载 -> 七层路由 -> 容器业务
-
链路描述:
-
用户访问 VIP (192.168.10.200)。
-
LB1/LB2 (LVS DR模式) 接收请求,根据算法秒级分发给 Web1/Web2。
-
流量到达 Web 节点的 K3s Ingress Controller(七层负载)。
-
Ingress 根据域名(如
www.cluster2026.com)将请求转发给对应的 Service。 -
Service 将流量负载到具体的 Nginx Pod。
-
Nginx Pod 通过挂载的 PVC (NFS) 读取网页,通过内网连接 MySQL (MGR) 存取数据。
-
-
技术价值:LVS 抗高并发,Ingress 精准识别业务,实现高性能与灵活性的统一。
日志流
路径:Pod/VM 日志 -> 缓冲区 -> 存储搜索
-
链路描述:
-
Filebeat 驻留在各节点,实时读取
/var/log和容器日志。 -
Filebeat 将原始日志统一推送到 Kafka (消息队列)。
-
Logstash 异步从 Kafka 消费数据,进行格式化过滤(如 GeoIP 解析)。
-
过滤后的数据存入 Elasticsearch 集群。
-
运维通过 Kibana 进行关键词搜索和预警分析。
-
-
技术价值:Kafka 充当“蓄水池”,在业务高峰期(如日志暴增)防止 Logstash 或 ES 崩溃,体现了高可用的优化思维。
持续交付流
路径:开发者代码 -> 制品库 -> 自动化部署
-
链路描述:
-
开发者推送代码至 GitLab。
-
Jenkins 检测到代码变更,触发流水线。
-
Jenkins 调用 Docker 环境进行镜像构建,并推送至 Harbor (制品库)。
-
Jenkins 通过 Ansible 或
kubectl更新 K3s 的 Deployment 镜像版本。 -
K3s 执行滚动更新 (Rolling Update),Pod 逐步替换,业务不停机。
-
-
技术价值:实现了从“手工改配置”到“全自动代码交付”的质变,符合 2026 年运维开发(DevOps)的要求。
集群部署顺序
①基础设施
云服务器与本地隧道(FRP)
建立管理链路。
Ansible连通与初始化
打通所有节点(SSH 免密、Yum 源、时间同步)。 一键配置环境,同步节点
②数据中心构建
NAS(NFS)存储部署
为全集群提供共享的“硬盘”。 NAS 配置定时备份脚本。
MySQL 8.4高可用部署
搭建主从复制或 MGR,为 Web 提供持久化数据库支持。 MySQL 8.4 开启多主模式。
③容器化底座(K8s/K3s)
K3s 集群安装
在原 Web 节点上初始化 K8s 环境。 自动扩容预埋:部署 metrics-server,这是 HPA 生效的前提。
存储集成 (NFS-Provisioner)
让 K8s 识别并使用 NAS 存储。
④业务上线(容器化部署)
Web 镜像构建
编写 Dockerfile,打包 Nginx + 业务代码。 分层镜像优化:减少 Dockerfile 层数,使用极简基础镜像(Alpine)。配置探针三剑客。
K8s 资源编排
编写 Deployment, Service, PVC, HPA 等 YAML 文件并部署。 使用探针(liveless、readiness、startup)的httpGet和exec方法对web业务pod进行监控,一旦出现问题马上重启,增强业务pod的可靠性。
⑤流量入口管理
LVS + Keepalived 部署
在 LB1/LB2 节点配置四层负载均衡,作为集群的总入口。
Ingress 控制器配置
SSL 全链路加密:在 Ingress 层配置证书,实现 HTTPS 访问。 处理七层转发(域名解析、HTTPS 证书)。 使用ingress给web业务做负载均衡
⑥观测与交付
监控体系 (Prometheus/Grafana/dashboard)
实现全集群可视化。 对所有集群(cpu,内存,网络带宽,web服务,数据库服务,磁盘IO等)进行监控包括k8s集群
日志收集体系(filebeat/kafka/zookeeper等)
日志收集与自动预警等
CI-CD
全链路监控:实现“代码提交 -> 自动部署 -> 自动监控”的闭环。 安装gitlab、Jenkins、harbor实现相关的代码发布、镜像制作、数据备份等流水线工作
优化思路
单点故障SPOF
-
现状:目前mysql和nas都是单机的,若nas宕机,K8s的Pod就会挂起
-
优化:计划引入 Keepalived 对 NAS 进行主备切换,或者使用 GlusterFS/Ceph 实现分布式存储,确保存储的高可用
探针精细化配置
-
优化:对于 Tomcat/Java 等启动较慢的服务,一定要配置 Startup Probe(启动探针)。
-
在 2026 年的面试中,你可以提到:“未来计划引入 Keepalived 对 NAS 进行主备切换,或者使用 GlusterFS/Ceph 实现分布式存储,确保存储的高可用。
平滑重启与优雅退出
-
优化细节:在 K8s 的 Deployment 中添加
terminationGracePeriodSeconds。 -
价值:当 Pod 更新时,先给 Nginx 发送
quit信号,等旧的连接处理完再销毁 Pod。这能体现你对“用户无感知发布”的追求。
更多推荐

所有评论(0)