关于运维实战笔记#
这里记录了我在服务器运维过程中遇到的各种问题和解决方案。每一篇文章都是真实场景的完整复盘,包含问题诊断、原理分析、解决步骤和经验总结。
为什么运维实战很重要?#
- 真实场景:所有问题都来自生产环境的实际遇到
- 完整流程:从问题发现到彻底解决的全过程记录
- 深度分析:不仅解决问题,更要理解背后的技术原理
- 可复用性:详细的步骤和命令,可以直接参考使用
这里有什么?#
系统化的运维知识分享,从问题诊断到最佳实践:
✅ 故障排查:SSL证书、服务异常、性能问题
✅ 系统配置:Nginx、数据库、缓存服务
✅ 自动化运维:脚本编写、定时任务、监控告警
✅ 安全加固:权限管理、防火墙、备份策略
知识体系#
🔧 Web服务器#
Nginx配置、SSL证书、反向代理、负载均衡
🗄️ 数据库运维#
MySQL优化、备份恢复、主从复制、性能调优
🚀 应用部署#
Docker容器、CI/CD、版本管理、灰度发布
📊 监控告警#
日志分析、性能监控、告警配置、故障预警
🔒 安全加固#
权限管理、防火墙配置、漏洞修复、安全审计
🛠️ 自动化脚本#
Shell脚本、Python运维、定时任务、批量操作
最新文章#
前言 在云计算时代,网络架构是整个系统的基石。阿里云VPC(Virtual Private Cloud,专有网络)作为云上网络的核心,为用户提供了一个隔离的、可自定义的网络环境。本文将深入剖析VPC的各个组件,帮助你构建安全、高效、可扩展的云网络架构。
无论你是刚接触云计算的新手,还是需要优化现有架构的架构师,这篇文章都将为你提供系统化的知识和实用的最佳实践。
第一部分:VPC基础概念 1.1 什么是VPC VPC的定义和作用 VPC(Virtual Private Cloud,专有网络)是阿里云为用户提供的一个逻辑隔离的私有网络环境。你可以把它想象成在云上租了一块"虚拟土地",在这块土地上,你可以:
自定义IP地址段:就像规划小区的门牌号一样 划分子网:就像小区里划分不同的楼栋 配置路由规则:就像规划小区内的道路 设置安全策略:就像设置小区的门禁系统 核心特点:
完全隔离:每个VPC都是独立的网络空间,不同VPC之间默认完全隔离 自主可控:你拥有完整的网络控制权,包括IP地址、路由、安全策略 灵活扩展:可以随时调整网络规模,添加新的子网和资源 安全可靠:多层安全防护机制,保障网络安全 为什么需要VPC(vs 经典网络) 在VPC出现之前,阿里云提供的是经典网络。让我们对比一下:
特性 经典网络 VPC专有网络 网络隔离 所有用户共享网络空间 每个VPC完全隔离 IP地址 阿里云统一分配,不可自定义 用户自定义CIDR地址段 安全控制 仅支持安全组 安全组 + 网络ACL + 路由控制 网络规划 无法自定义 完全自定义 适用场景 简单应用(已不推荐) 所有生产环境(推荐) 为什么要迁移到VPC?
安全性:经典网络中,所有用户的ECS实例在同一个网络平面,存在安全隐患 灵活性:VPC支持自定义网络拓扑,满足复杂业务需求 可扩展性:VPC支持更多高级网络功能(VPN、专线、对等连接等) 合规性:很多行业合规要求必须使用隔离的私有网络 注意:阿里云已经停止新用户使用经典网络,所有新资源都必须创建在VPC中。
VPC的核心优势 1. 网络隔离
每个VPC都是一个独立的网络空间,就像每个公司都有自己的办公楼,互不干扰。即使是同一个账号下的不同VPC,默认也无法互相访问。
2. 自定义网络配置
你可以完全控制网络的每个细节:
选择IP地址段(10.0.0.0/8、172.16.0.0/12、192.168.0.0/16) 划分子网(交换机) 配置路由表 设置网关 3. 安全可控
多层安全防护:
安全组:实例级别的虚拟防火墙 网络ACL:子网级别的访问控制 路由控制:精确控制流量走向 VPN/专线:安全连接本地数据中心 4. 灵活扩展
...
导航 上一步:模块6:部署应用到K8s 返回主索引:阿里云ACK部署SOP 模块概述 预计时间:40分钟
本模块目标:
✅ 掌握Pod故障排查方法 ✅ 掌握网络故障排查方法 ✅ 学会查看和分析日志 ✅ 学会回滚应用 ✅ 了解成本优化方法 ✅ 学会彻底清理资源 成本说明:
本模块不产生额外费用 会学习如何优化成本 步骤7.1:Pod故障排查 - ImagePullBackOff 🎬 操作说明 ImagePullBackOff是最常见的Pod启动失败错误,表示无法拉取Docker镜像。我们需要学会快速定位和解决这个问题。
📍 详细步骤 第1步:识别错误
运行命令查看Pod状态: kubectl get pods -n my-app 如果看到ImagePullBackOff或ErrImagePull: NAME READY STATUS RESTARTS AGE my-app-7d9f8c6b5d-abc12 0/1 ImagePullBackOff 0 2m 第2步:查看详细错误信息
运行命令: kubectl describe pod <Pod名称> -n my-app 在Events部分查看错误: Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 2m default-scheduler Successfully assigned my-app/my-app-xxx to node1 Normal Pulling 1m (x4 over 2m) kubelet Pulling image "registry.cn-hangzhou.aliyuncs.com/my-namespace/my-app:v1.0.0" Warning Failed 1m (x4 over 2m) kubelet Failed to pull image: rpc error: code = Unknown desc = Error response from daemon: pull access denied Warning Failed 1m (x4 over 2m) kubelet Error: ErrImagePull Normal BackOff 30s (x6 over 2m) kubelet Back-off pulling image Warning Failed 30s (x6 over 2m) kubelet Error: ImagePullBackOff 第3步:分析错误原因
...
导航 上一步:模块5:构建Docker镜像 下一步:模块7:故障排查和优化 返回主索引:阿里云ACK部署SOP 模块概述 预计时间:30分钟
本模块目标:
✅ 理解Kubernetes核心资源(Namespace、Deployment、Service、Ingress) ✅ 创建完整的应用配置文件 ✅ 部署应用到Kubernetes集群 ✅ 配置健康检查和资源限制 ✅ 通过域名访问应用 ✅ 验证负载均衡和高可用 成本说明:
本模块不产生额外费用 使用已有的ACK集群和ALB实例 步骤6.1:理解Kubernetes核心资源 🎬 操作说明 在开始部署之前,我们需要先理解Kubernetes的核心资源。这些资源是部署应用的基础,理解它们的作用和关系非常重要。
📍 详细说明 Kubernetes资源层级关系
┌─────────────────────────────────────────┐ │ Ingress(外网访问入口) │ │ - 域名路由 │ │ - SSL证书 │ │ - 七层负载均衡 │ └──────────────┬──────────────────────────┘ │ ┌──────────────▼──────────────────────────┐ │ Service(服务发现和负载均衡) │ │ - ClusterIP(集群内部访问) │ │ - 自动负载均衡到多个Pod │ │ - 服务发现(通过DNS) │ └──────────────┬──────────────────────────┘ │ ┌──────────────▼──────────────────────────┐ │ Deployment(管理Pod副本) │ │ - 声明期望的副本数 │ │ - 自动创建和管理Pod │ │ - 滚动更新和回滚 │ └──────────────┬──────────────────────────┘ │ ┌──────────────▼──────────────────────────┐ │ Pod(最小部署单元) │ │ - 运行一个或多个容器 │ │ - 共享网络和存储 │ │ - 生命周期管理 │ └──────────────┬──────────────────────────┘ │ ┌──────────────▼──────────────────────────┐ │ Container(容器) │ │ - 运行Docker镜像 │ │ - 隔离的运行环境 │ └─────────────────────────────────────────┘ 核心资源详解
...
导航 上一步:模块4:配置ALB Ingress 下一步:模块6:部署应用到K8s 返回主索引:阿里云ACK部署SOP 模块概述 预计时间:20分钟
本模块目标:
✅ 理解Docker镜像的基本概念 ✅ 编写Dockerfile(使用多阶段构建) ✅ 本地构建Docker镜像 ✅ 本地测试镜像 ✅ 推送镜像到阿里云ACR ✅ 验证镜像可用性 成本说明:
ACR个人版:免费 镜像存储:免费(个人版有300GB免费额度) 镜像拉取:免费(同地域) 本模块预计成本:¥0 步骤5.1:理解Docker镜像 🎬 操作说明 在开始构建镜像之前,我们需要先理解Docker镜像的基本概念。这一步不需要操作,只需要理解核心概念。
📍 详细说明 什么是Docker镜像?
Docker镜像是一个轻量级、可执行的独立软件包,包含运行应用所需的一切:
代码(你的应用程序) 运行时(如:Java、Python、Node.js) 系统工具和库 配置文件 镜像 vs 容器
概念 说明 类比 镜像(Image) 只读的模板,包含应用和依赖 类似于"类"(Class) 容器(Container) 镜像的运行实例 类似于"对象"(Object) 镜像的层级结构
Docker镜像由多个层(Layer)组成,每一层都是只读的:
┌─────────────────────────────┐ │ 你的应用代码(Layer 4) │ ← 最上层 ├─────────────────────────────┤ │ 应用依赖(Layer 3) │ ├─────────────────────────────┤ │ 运行时环境(Layer 2) │ ├─────────────────────────────┤ │ 基础操作系统(Layer 1) │ ← 最底层 └─────────────────────────────┘ 为什么使用分层结构?
...
导航 上一步:模块3:创建ACK集群 下一步:模块5:构建Docker镜像 返回主索引:阿里云ACK部署SOP 模块概述 预计时间:25分钟
本模块目标:
✅ 理解ALB和SLB的区别 ✅ 安装ALB Ingress Controller ✅ 创建ALB实例 ✅ 配置域名解析 ✅ 配置SSL证书(自动签发) ✅ 验证ALB工作正常 成本说明:
ALB实例:约¥60/月(alb.s1.small规格) 流量费用:¥0.8/GB(按实际使用计费) 本模块预计成本:¥60-100/月 步骤4.1:理解ALB vs SLB 🎬 操作说明 在配置Ingress之前,我们需要先理解阿里云的两种负载均衡产品:ALB(应用型负载均衡)和SLB(传统负载均衡)。这一步不需要操作,只需要理解它们的区别。
📍 详细说明 ALB vs SLB 对比表
特性 ALB(应用型负载均衡) SLB(传统负载均衡) OSI层级 七层(HTTP/HTTPS) 四层(TCP/UDP)+ 七层 路由能力 基于域名、路径、Header 基于端口 SSL证书 自动管理、自动续期 手动上传、手动续期 WebSocket 原生支持 需要特殊配置 HTTP/2 原生支持 部分支持 健康检查 HTTP健康检查 TCP健康检查 价格 约¥60/月起 约¥30/月起 适用场景 Web应用、API网关 通用负载均衡 推荐度 ⭐⭐⭐⭐⭐(强烈推荐) ⭐⭐⭐(传统方案) 为什么选择ALB?
智能路由
...
导航 上一步:模块2:创建VPC网络 下一步:模块4:配置ALB Ingress 返回主索引:阿里云ACK部署SOP 模块概述 预计时间:30分钟(包含15分钟集群创建等待时间)
本模块目标:
✅ 理解ACK集群的三种类型 ✅ 创建标准托管版ACK集群 ✅ 配置节点池和Worker节点 ✅ 下载并配置kubeconfig文件 ✅ 验证集群连接正常 成本说明:
控制平面:免费(标准托管版) Worker节点:约¥223/月/节点(2核4G) 本模块预计成本:¥446/月(2个节点) 步骤3.1:理解ACK集群类型 🎬 操作说明 在创建集群之前,我们需要先理解阿里云ACK提供的三种集群类型。这一步不需要操作,只需要理解每种类型的特点和适用场景。
📍 详细说明 ACK集群类型对比表
特性 标准托管版 专有版 Serverless版 控制平面 阿里云托管(免费) 用户自建(收费) 阿里云托管(免费) Worker节点 用户管理ECS 用户管理ECS 无需管理(按Pod收费) 适用场景 生产环境、学习测试 高安全要求 突发流量、测试环境 成本 中等(只付Worker节点费用) 高(控制平面+Worker节点) 低(按实际使用付费) 灵活性 高 最高 中等 运维复杂度 低 高 最低 第1种:标准托管版(推荐)
控制平面由阿里云托管,完全免费 你只需要管理Worker节点(运行应用的服务器) 适合99%的场景,包括生产环境 成本最优,运维最简单 第2种:专有版
控制平面也是你自己的ECS服务器 需要额外付费(3台Master节点) 适合金融、政务等高安全要求场景 成本高,运维复杂 第3种:Serverless版
完全无需管理服务器 按Pod运行时间付费 适合突发流量、测试环境 成本最低,但灵活性受限 ✅ 验证点 理解三种集群类型的区别 明确我们选择标准托管版的原因 ⚠️ 常见问题 问题1:为什么选择标准托管版?
...
方案概述 本文档提供Hugo博客从传统服务器部署迁移到阿里云ACK Kubernetes集群的完整技术方案,包括容器化、K8s资源配置、CI/CD流程改造和实战部署步骤。
架构对比 当前架构(传统部署):
本地开发 → Git推送 → GitHub Actions构建 → rsync同步 → Nginx服务器 → 用户访问 目标架构(K8s部署):
本地开发 → Git推送 → GitHub Actions构建 → Docker镜像 → 阿里云ACR → K8s集群 → Ingress → 用户访问 核心变化 维度 传统部署 K8s部署 部署方式 SSH + rsync kubectl apply 运行环境 直接在服务器 Docker容器 负载均衡 单机Nginx K8s Service + Ingress 扩展性 手动扩容 自动扩缩容 更新策略 直接覆盖 滚动更新 回滚 手动恢复 kubectl rollout undo 成本 ¥0/月 ¥200-500/月 一、容器化方案 1.1 Dockerfile设计(多阶段构建) 创建 docker/Dockerfile:
...
项目背景 这是一个基于Hugo的个人技术博客系统,采用完全自动化的CI/CD流程,实现了从本地编写文章到生产环境发布的全流程自动化。整个系统具有以下特点:
✅ 零成本运营:使用GitHub Actions免费额度 ✅ 高度自动化:Git推送即部署,2-3分钟自动完成 ✅ 模块化设计:支持多专题独立管理 ✅ 自主可控:自建访客统计系统 ✅ 性能优异:静态网站,首页加载<2秒 核心工作流:
写作(2分钟) → Git推送(即时) → Actions构建(1.5分钟) → rsync部署(30秒) → 网站生效(即时) 技术架构 技术栈 层级 技术选型 说明 静态网站生成器 Hugo v0.150.1 extended 构建速度快,支持SCSS 主题 PaperMod 简洁美观,功能丰富 CI/CD平台 GitHub Actions 免费,与GitHub深度集成 版本控制 Git + GitHub 代码托管和协作 Web服务器 Nginx 1.20.1 高性能静态文件服务 SSL证书 Let’s Encrypt (acme.sh) 免费,自动续期 访客统计 Python Flask + SQLite 自建,数据可控 服务器 阿里云ECS CentOS/Alibaba Cloud Linux 系统架构图 ┌─────────────────────────────────────────────────────────────┐ │ 本地开发环境 │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 写作编辑 │→│ 本地预览 │→│ Git提交 │ │ │ │ Markdown │ │hugo server│ │git push │ │ │ └──────────┘ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ GitHub平台 │ │ ┌──────────────────────────────────────────────────────┐ │ │ │ GitHub Actions (CI/CD) │ │ │ │ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │ │ │ │ │检出 │→│安装 │→│构建 │→│SSH │→│部署 │ │ │ │ │ │代码 │ │Hugo │ │网站 │ │连接 │ │文件 │ │ │ │ │ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘ │ │ │ └──────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ 生产服务器 │ │ ┌──────────────────────────────────────────────────────┐ │ │ │ Nginx Web服务器 │ │ │ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │ │ │ │ 静态文件 │ │ SSL证书 │ │ 访客统计 │ │ │ │ │ │ /blog/ │ │ HTTPS加密 │ │ Flask API │ │ │ │ │ └────────────┘ └────────────┘ └────────────┘ │ │ │ └──────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ 用户访问 │ │ https://ruyueshuke.com/blog/ │ └─────────────────────────────────────────────────────────────┘ GitHub Actions CI/CD配置 配置文件结构 文件位置:.github/workflows/deploy.yml
...
🎯 本章目标 完成K8s集群所需的网络基础设施配置,包括:
✅ 创建VPC专有网络 ✅ 创建交换机(至少2个可用区) ✅ 配置安全组规则 ✅ 验证网络配置正确 预计时间:10分钟
预计费用:¥0(VPC和安全组免费)
📋 前置条件 在开始之前,请确认:
已完成第1步:准备工作 已登录阿里云控制台 账户余额充足 第一部分:理解网络架构 什么是VPC? 🎬 概念说明 VPC(Virtual Private Cloud,专有网络) 是你在阿里云上的私有网络空间,就像你在云上拥有一个独立的局域网。
形象比喻:
VPC就像一栋大楼 交换机就像大楼里的每一层 ECS实例就像每层楼里的房间 安全组就像门禁系统 为什么需要VPC?
🔒 网络隔离:你的资源和其他用户完全隔离 🎯 自定义网段:可以自己规划IP地址范围 🔐 安全控制:通过安全组控制流量 🌐 灵活组网:可以连接多个可用区 网络架构图 ┌─────────────────────────────────────────────────────────┐ │ VPC (10.0.0.0/8) │ │ │ │ ┌──────────────────────┐ ┌──────────────────────┐ │ │ │ 可用区A │ │ 可用区B │ │ │ │ 交换机A │ │ 交换机B │ │ │ │ (10.0.1.0/24) │ │ (10.0.2.0/24) │ │ │ │ │ │ │ │ │ │ ┌────┐ ┌────┐ │ │ ┌────┐ ┌────┐ │ │ │ │ │Node│ │Node│ │ │ │Node│ │Node│ │ │ │ │ │ 1 │ │ 2 │ │ │ │ 3 │ │ 4 │ │ │ │ │ └────┘ └────┘ │ │ └────┘ └────┘ │ │ │ └──────────────────────┘ └──────────────────────┘ │ │ │ │ ┌──────────────────────────────────────────────────┐ │ │ │ 安全组规则 │ │ │ │ - 允许内网互通 │ │ │ │ - 允许外网访问80/443端口 │ │ │ │ - 允许SSH访问22端口 │ │ │ └──────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────┘ 关键概念 概念 说明 示例 VPC 专有网络,你的私有网络空间 10.0.0.0/8 交换机 VPC内的子网,位于特定可用区 10.0.1.0/24 可用区 阿里云的物理机房 华东1可用区A 安全组 虚拟防火墙,控制流量 允许80端口 CIDR IP地址范围表示法 10.0.0.0/8 第二部分:创建VPC专有网络 步骤2.1:进入VPC控制台 🎬 操作说明 我们首先要进入VPC管理控制台,这是管理所有网络资源的地方。
...
🎯 本章目标 完成阿里云ACK部署的所有准备工作,包括:
✅ 注册阿里云账号并完成实名认证 ✅ 充值账户并开通必要服务 ✅ 在本地安装kubectl命令行工具 ✅ 在本地安装Docker Desktop ✅ 验证所有工具安装成功 预计时间:30分钟
预计费用:¥0(仅充值,暂不产生费用)
📋 准备工作清单 在开始之前,请准备好:
一台电脑(Windows 10+、macOS 10.15+、或Linux) 稳定的网络连接 手机(用于接收验证码) 身份证(用于实名认证) 银行卡或支付宝(用于充值) 第一部分:阿里云账号准备 步骤1.1:注册阿里云账号 🎬 操作说明 如果你已经有阿里云账号,可以跳过这一步。如果没有,我们现在来注册一个。
📍 详细步骤 第1步:打开阿里云官网
在浏览器中输入:https://www.aliyun.com 按回车键访问阿里云官网 你会看到阿里云的首页,上面有很多产品介绍 第2步:点击注册按钮
在页面右上角,找到"免费注册"按钮 按钮通常是橙色或蓝色的,很显眼 点击"免费注册"按钮 第3步:选择注册方式
你会看到两种注册方式: 手机号注册(推荐) 邮箱注册 我们选择"手机号注册"(更方便) 第4步:填写注册信息
输入你的手机号码(11位数字) 点击"获取验证码"按钮 等待手机收到验证码(通常10秒内到达) 输入收到的6位验证码 设置登录密码(建议8位以上,包含字母和数字) 勾选"我已阅读并同意《阿里云服务协议》" 点击"注册"按钮 第5步:完成注册
注册成功后,页面会自动跳转 你会看到"注册成功"的提示 现在你已经有了一个阿里云账号 ✅ 验证点 确认收到阿里云的欢迎短信 确认可以用手机号和密码登录阿里云控制台 登录后能看到阿里云控制台首页 ⚠️ 常见问题 问题1:收不到验证码怎么办?
...