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 用于执行 netstatkillall 等经典排障命令。

集群架构-混合云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 组 暴露给最终用户的唯一访问入口

混合云架构全链路数据流转

管理流

路径:运维人员 -> 云端 -> 本地内网

  • 链路描述

    1. 运维人员通过公网 SSH 登录 Cloud-Hub(堡垒机)。

    2. Cloud-Hub 上的 Ansible 发出指令。

    3. 指令通过 FRP 隧道(地对云主动建立的安全通道)穿透防火墙。

    4. 流量到达 Firewall 的 DNAT 端口,转发至内网 Ansible 跳板接口

    5. Ansible 利用 SSH 代理转发(ProxyCommand),实现对内网 7 台虚拟机及 K3s 内部 Pod 的批量配置。

  • 技术价值:实现了“公网管控,内网隔离”,确保生产环境不直接暴露 SSH 端口。

监控流

路径:本地各节点 -> 网关 -> 云端展示

  • 链路描述

    1. 本地 VM 安装 node_exporter,MySQL 安装 mysqld_exporter,K3s 安装 metrics-server

    2. Prometheus (云端) 定时通过 FRP 隧道拨号,拉取(Pull)各节点的监控指标。

    3. 数据存储在云端时序数据库中。

    4. Grafana (云端) 访问 Prometheus 获取数据并实时绘图。

  • 技术价值:即使本地环境断网,历史监控数据依然保留在云端。

业务流

路径:外部用户 -> 四层负载 -> 七层路由 -> 容器业务

  • 链路描述

    1. 用户访问 VIP (192.168.10.200)

    2. LB1/LB2 (LVS DR模式) 接收请求,根据算法秒级分发给 Web1/Web2

    3. 流量到达 Web 节点的 K3s Ingress Controller(七层负载)。

    4. Ingress 根据域名(如 www.cluster2026.com)将请求转发给对应的 Service

    5. Service 将流量负载到具体的 Nginx Pod

    6. Nginx Pod 通过挂载的 PVC (NFS) 读取网页,通过内网连接 MySQL (MGR) 存取数据。

  • 技术价值:LVS 抗高并发,Ingress 精准识别业务,实现高性能与灵活性的统一。

日志流

路径:Pod/VM 日志 -> 缓冲区 -> 存储搜索

  • 链路描述

    1. Filebeat 驻留在各节点,实时读取 /var/log 和容器日志。

    2. Filebeat 将原始日志统一推送到 Kafka (消息队列)

    3. Logstash 异步从 Kafka 消费数据,进行格式化过滤(如 GeoIP 解析)。

    4. 过滤后的数据存入 Elasticsearch 集群。

    5. 运维通过 Kibana 进行关键词搜索和预警分析。

  • 技术价值:Kafka 充当“蓄水池”,在业务高峰期(如日志暴增)防止 Logstash 或 ES 崩溃,体现了高可用的优化思维。

持续交付流

路径:开发者代码 -> 制品库 -> 自动化部署

  • 链路描述

    1. 开发者推送代码至 GitLab

    2. Jenkins 检测到代码变更,触发流水线。

    3. Jenkins 调用 Docker 环境进行镜像构建,并推送至 Harbor (制品库)

    4. Jenkins 通过 Ansible 或 kubectl 更新 K3s 的 Deployment 镜像版本。

    5. 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。这能体现你对“用户无感知发布”的追求。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐