title: 集群架构&环境&部署顺序
date: 2026-03-10
categories:
  - web综合集群
tags:
  - 项目
cover:

集群环境-本地&云

组件信息

功能类别详细组件名称建议版本说明与生产价值 (面试加分点)
基础设施Rocky Linux9.4+ (LTS)替代 CentOS 7 的企业级首选,内核 5.14+ 更好地支持容器化。
云端大脑火山云 (ECS)云服务环境充当堡垒机与全局管理节点,模拟混合云(公有云管理私有云)架构。
管理隧道FRP (Fast Reverse Proxy)v0.54.0+建立“云对地”安全隧道,实现公网对内网节点的透明管理。
自动化运维Ansible2.17+无代理(Agentless)批量化配置,实现“基础环境一键初始化”。
数据持久化MySQL (LTS)8.4.x最新的长期支持版,重点实现 MGR (组复制) 高可用架构。
共享存储NAS (NFS)v4.2为全集群提供统一的文件存储,作为 K8s 的后端 PV/PVC
四层负载均衡LVS内核内置采用 DR (直接路由) 模式,处理百万级并发的入口流量。
高可用协议Keepalived2.2+实现 LVS 的 VIP 故障秒级漂移,消除负载均衡的单点故障。
容器底座K3s (轻量级 K8s)v1.3x+兼容标准 K8s 但占用资源更少,适合本地环境模拟企业级容器云。
容器运行时Containerd1.7+取代 Docker 成为 K8s 官方首选运行时,性能更轻量、稳定。
七层路由Ingress Nginxv1.10+处理 HTTPS 卸载、域名转发及灰度发布逻辑。
Web 核心Nginx1.26+源码编译安装,开启 HTTP/3 (QUIC) 支持,作为业务 Pod 核心。
指标监控Prometheus3.0 (最新)时序数据库监控标杆,负责抓取主机、容器及数据库的 Metrics。
仪表盘Grafana11.x监控可视化展示,通过 Dashboards 实现全集群“一屏了然”。
日志采集Filebeat8.x轻量级日志收集器,将容器日志实时推送至中间件。
日志中转Kafka & ZK3.7+大数据运维核心:在大流量下起到日志“削峰填谷”作用。
日志存储分析ELK Stack8.x (开源版)Elasticsearch (存储) + Logstash (过滤) + Kibana (展示)。
代码管理GitLab17.x企业级私有代码仓库,触发 Jenkins 流水线的源头。
制品库Harbor2.10+私有镜像仓库,支持镜像扫描和权限控制,存储 Web 业务镜像。
持续集成/交付Jenkins2.4xx (LTS)核心流水线工具,实现“代码提交 -> 镜像构建 -> K8s 部署”闭环。

本地虚拟资源分配表

主机名操作系统网卡模式建议配置角色说明
firewallRocky 9NAT + Host-Only1C/1G流量门户、FRP 客户端
LB1 / LB2Rocky 9Host-Only1C/1GLVS 负载均衡 + Keepalived
Web1 / Web2Rocky 9Host-Only1C/2GK3s 节点、Nginx 业务
NASRocky 9Host-Only1C/1GNFS 存储、数据备份
MySQLRocky 9Host-Only2C/2G数据库主从/MGR

云服务器环境准备

云安全组(防火墙)放行策略

这是保障“将军”能下达指令且你能看到战报的前提。建议在控制台新建一个名为 sg-web-cluster 的安全组。

端口/范围协议授权对象用途说明生产环境规范建议
22TCP你的物理机公网 IPSSH 远程登录强烈建议不要选 0.0.0.0/0,仅限你自己电脑访问。
6000-6100TCP0.0.0.0/0FRP 穿透隧道这是“云对地”的主干道,必须开放给本地 Firewall 节点。
3000TCP0.0.0.0/0Grafana 仪表盘用于浏览器查看可视化监控数据。
9090TCP0.0.0.0/0Prometheus UI用于调试监控指标抓取是否正常。
80 / 443TCP0.0.0.0/0Web 业务访问模拟最终用户访问你的集群业务。

云服务器环境配置

在重装系统为 Rocky 9 之后,你需要执行以下初始化动作

类别检查项/软件推荐配置/执行命令说明
OS操作系统Rocky Linux 9.4 (LTS)保持全群(云+地)内核版本一致,避免因内核差异导致的 K3s 部署失败。
基础工具常用命令dnf install -y vim wget git screen tar运维必备全家桶。
源配置EPEL 源dnf install -y epel-releaseRocky 默认源没有 Ansible,必须先安装 EPEL 扩展源
核心组件Ansiblednf install -y ansible整个集群的“总指挥部”,通过 Python 调用。
网络工具Net-Toolsdnf install -y net-tools psmisc用于执行 netstatkillall 等经典排障命令。

集群架构-混合云1+7架构

我将架构分为 “云端控制平面”“本地数据中心(IDC)” 两部分 核心逻辑为:“云端控制,本地生产,存储分离,安全加固

集群架构&功能分配表

逻辑分层节点名称核心组件版本建议角色描述
管理层 (Cloud)Cloud-HubAnsible, FRPS, Prometheus, Grafana,DNS,堡垒机最新 LTS全局指挥官,负责监控汇聚与自动化下发。
出口层 (Local)FirewallFRPC, IPtables/NFTables, SNAT内核原生内外网隔离,负责流量路由转发与安全过滤。
负载层 (LB)LB1 / LB2LVS (DR模式), Keepalivedv2.2+四层负载均衡高可用,负责握手 VIP 并分发流量。
计算层 (K3s)Web1 (Master)K3s Server, Containerd, Ingress-Nginxv1.3x+容器大脑,运行 Ingress 控制器与业务 Pod。
计算层 (K3s)Web2 (Agent)K3s Agent, Containerd, HPAv1.3x+纯工作节点,配合 Web1 实现 Pod 自动扩缩容。
存储层 (NAS)NASNFS Server, Chrony, Rsyncv4.2共享存储中枢,提供 PV/PVC 后端支持。
数据层 (DB)MySQLMySQL 8.4 (MGR/主从), Filebeat8.4.x核心数据资产,配置 GTID 模式的高可用。
日志/DevOps(运行在 K3s)Kafka, ES, Kibana, Jenkins, GitLab容器化部署利用容器化部署减少虚拟机数量,体现云原生运维。

集群网络&端口规划表

主机名外网/WAN IP (NAT)内网/LAN IP (Host-Only)默认网关关键放行端口
Cloud-Hub115.191.4.120N/A云供应商网关22, 6000-6100, 3000, 9090
Firewall192.168.10.125192.168.31.2192.168.10.222, 80, 443, 隧道随机端口
LB1 (M)N/A192.168.31.3192.168.31.280, 443, 1038 (Keepalived)
LB2 (B)N/A192.168.31.4192.168.31.280, 443, 1038 (Keepalived)
Web1N/A192.168.31.5192.168.31.26443 (K3s API), 80, 443, 9100
Web2N/A192.168.31.6192.168.31.280, 443, 9100 (Exporter)
NASN/A192.168.31.7192.168.31.2111, 2049 (NFS)
MySQLN/A192.168.31.8192.168.31.23306, 33061 (MGR通信)
集群 VIP192.168.10.200N/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

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

更多推荐