企业级高可用架构实战

项目概述

这是一个完整的企业级高可用架构实战项目,涵盖从需求分析、网络规划、安全设计到 EKS 集群部署的全流程。

项目规模:

公司类型:中大型互联网公司
用户规模:100万+ 注册用户,日活 20万+
业务类型:SaaS 协作平台
技术栈:微服务架构 + Kubernetes
目标可用性:99.95%(年度停机时间 < 4.38 小时)

架构总览

整体架构图

┌─────────────────────────────────────────────────────────────┐
│                    Route 53 (DNS)                           │
│                    CloudFront (CDN)                         │
└───────────────────────┬─────────────────────────────────────┘
                        │
        ┌───────────────┴───────────────┐
        │    AWS Region (us-east-1)     │
        │                               │
        │  ┌─────────────────────────┐ │
        │  │   Transit Gateway       │ │
        │  └──────────┬──────────────┘ │
        │             │                │
        │  ┌──────────┼──────────────┐ │
        │  │          │              │ │
        │  │    ┌─────▼─────┐  ┌────▼─────┐
        │  │    │  Prod VPC │  │NonProd VPC│
        │  │    │10.0.0.0/16│  │10.1.0.0/16│
        │  │    └─────┬─────┘  └──────────┘
        │  │          │                    │
        │  │    ┌─────▼──────────────┐    │
        │  │    │   3 AZs (1a,1b,1c) │    │
        │  │    │  ┌──────────────┐  │    │
        │  │    │  │Public Subnet │  │    │
        │  │    │  │ - ALB/NLB   │  │    │
        │  │    │  │ - NAT GW    │  │    │
        │  │    │  └──────────────┘  │    │
        │  │    │  ┌──────────────┐  │    │
        │  │    │  │Private-App   │  │    │
        │  │    │  │ - EKS Nodes │  │    │
        │  │    │  │ - Containers│  │    │
        │  │    │  └──────────────┘  │    │
        │  │    │  ┌──────────────┐  │    │
        │  │    │  │Private-Data  │  │    │
        │  │    │  │ - RDS       │  │    │
        │  │    │  │ - Redis     │  │    │
        │  │    │  └──────────────┘  │    │
        │  │    └───────────────────┘    │
        │  └────────────────────────────┘ │
        └───────────────────────────────────┘

核心技术栈

计算和容器编排:

├─ Amazon EKS 1.28
│   ├─ Managed Node Groups(3 AZ)
│   ├─ Spot Instances(成本优化)
│   └─ Auto Scaling(弹性扩展)
├─ AWS Fargate(无服务器容器)
└─ AWS Lambda(事件驱动任务)

网络和负载均衡:

├─ VPC(Multi-VPC 架构)
│   ├─ 生产 VPC:10.0.0.0/16
│   ├─ 非生产 VPC:10.1.0.0/16
│   └─ Transit Gateway(中心化路由)
├─ Application Load Balancer(HTTP/HTTPS)
├─ Network Load Balancer(TCP/UDP)
└─ CloudFront + Route 53(全球加速)

数据存储:

├─ Amazon RDS PostgreSQL(Multi-AZ + Read Replicas)
├─ Amazon ElastiCache Redis(Cluster Mode)
├─ Amazon DynamoDB(NoSQL + Global Tables)
├─ Amazon S3(对象存储 + 生命周期管理)
└─ Amazon EBS(持久化卷)

可观测性:

├─ CloudWatch Container Insights
├─ Fluent Bit(日志采集)
├─ Prometheus + Grafana(指标监控)
├─ Jaeger(分布式追踪)
└─ X-Ray(服务地图)

安全和合规:

├─ IAM(身份和访问管理)
├─ Security Groups(点对点安全组策略)
├─ Network ACLs(子网级防护)
├─ AWS WAF(Web 应用防火墙)
├─ KMS(密钥管理)
├─ Secrets Manager(密钥存储)
└─ GuardDuty + Security Hub(威胁检测)

学习路径

本实战项目按以下顺序组织,建议循序渐进学习:

第一阶段:项目规划(第1章)

1. 项目概述和需求分析 [→ 点击查看]

内容概要:
├─ 项目背景和业务痛点
├─ 技术目标和业务目标
├─ 架构设计原则
│   ├─ 高可用性原则
│   ├─ 安全性原则
│   └─ 可观测性原则
├─ 技术栈选型
│   ├─ 计算资源(EKS、EC2)
│   ├─ 存储和数据库
│   ├─ 网络和负载均衡
│   └─ CI/CD 和 GitOps
├─ 项目实施阶段(14周计划)
└─ 成功指标和风险管理

学习重点:
✓ 理解企业级项目的完整生命周期
✓ 掌握技术选型的决策依据
✓ 学习架构设计的核心原则
✓ 了解项目管理和风险控制

第二阶段:基础设施搭建(第2-3章)

2. 网络架构规划 [→ 点击查看]

内容概要:
├─ 多 VPC 架构设计
│   ├─ 生产 VPC(10.0.0.0/16)
│   │   ├─ 3个公有子网(10.0.1-3.0/24)
│   │   ├─ 3个私有应用子网(10.0.11-13.0/24)
│   │   └─ 3个私有数据子网(10.0.21-23.0/24)
│   ├─ 非生产 VPC(10.1.0.0/16)
│   └─ 共享服务 VPC(10.2.0.0/16)
├─ 路由表设计
│   ├─ 公有路由表
│   ├─ 私有路由表(每AZ独立)
│   └─ 数据层路由表(完全隔离)
├─ 网络组件配置
│   ├─ Internet Gateway
│   ├─ NAT Gateway(3个,高可用)
│   ├─ VPC Endpoints(S3、ECR、CloudWatch)
│   └─ Transit Gateway(VPC互联)
└─ 完整的脚本实战

学习重点:
✓ 企业级 CIDR 规划技巧
✓ 多可用区高可用网络设计
✓ NAT Gateway 成本优化策略
✓ VPC Endpoints 最佳实践
✓ 自动化脚本编写

3. 安全组和访问控制 [→ 点击查看]

内容概要:
├─ 点对点安全组策略(核心)
│   ├─ 为什么使用安全组引用
│   ├─ 安全组分层架构
│   └─ 命名规范
├─ 生产环境安全组设计
│   ├─ ALB 安全组
│   ├─ Web 层安全组
│   ├─ 应用层安全组
│   ├─ Redis 安全组
│   ├─ PostgreSQL 安全组
│   ├─ EKS 控制平面安全组
│   ├─ EKS Worker Node 安全组
│   ├─ VPC Endpoint 安全组
│   └─ Bastion Host 安全组
├─ 完整的创建脚本
├─ 安全组验证和审计
└─ 最佳实践总结

学习重点:
✓ 掌握点对点安全组引用策略
✓ 理解安全组的有状态特性
✓ 学习纵深防御架构
✓ 实践最小权限原则
✓ 自动化安全审计

第三阶段:容器平台部署(第4章)

4. EKS 集群创建和配置 [→ 点击查看]

内容概要:
├─ EKS 架构设计
│   ├─ 集群规划
│   ├─ 网络配置(VPC CNI)
│   └─ 连接模式(公有+私有端点)
├─ IAM 角色准备
│   ├─ EKS 集群角色
│   ├─ EKS Node 角色
│   └─ 应用访问策略
├─ 创建 EKS 集群
│   ├─ 控制平面配置
│   ├─ 日志启用
│   └─ OIDC Provider
├─ Managed Node Groups
│   ├─ 通用型节点组(On-Demand)
│   ├─ Spot 实例节点组
│   └─ 计算密集型节点组
├─ 安装核心插件
│   ├─ VPC CNI
│   ├─ CoreDNS
│   ├─ kube-proxy
│   └─ EBS CSI Driver
├─ 配置日志和监控
│   ├─ CloudWatch Container Insights
│   ├─ Fluent Bit(日志采集)
│   └─ 自定义指标
└─ AWS Load Balancer Controller

学习重点:
✓ EKS 集群完整创建流程
✓ IRSA(IAM Roles for Service Accounts)
✓ Managed Node Groups 最佳实践
✓ Spot 实例成本优化
✓ 可观测性配置
✓ Kubernetes 原生监控

第四阶段:应用部署和数据层(第5-6章)

5. 应用部署和负载均衡

即将上线,内容包括:
├─ 微服务应用部署
│   ├─ Deployment 配置
│   ├─ Service 配置
│   ├─ Ingress 配置(ALB)
│   └─ HorizontalPodAutoscaler
├─ 配置管理
│   ├─ ConfigMap
│   ├─ Secret
│   └─ 外部配置中心集成
├─ 服务网格(Istio)
│   ├─ 流量管理
│   ├─ 安全通信(mTLS)
│   └─ 可观测性增强
└─ 金丝雀发布和蓝绿部署

6. 数据库和缓存层

即将上线,内容包括:
├─ RDS PostgreSQL
│   ├─ Multi-AZ 部署
│   ├─ Read Replicas
│   ├─ 参数组优化
│   └─ 自动备份策略
├─ ElastiCache Redis
│   ├─ Cluster Mode 配置
│   ├─ 故障转移测试
│   └─ 缓存策略优化
├─ DynamoDB
│   ├─ 表设计最佳实践
│   ├─ 读写容量配置
│   └─ Global Tables
└─ S3 存储
    ├─ 生命周期策略
    ├─ 版本控制
    └─ 跨区域复制

第五阶段:运维和优化(第7-9章)

7. 监控和日志系统

即将上线,内容包括:
├─ Prometheus 监控
├─ Grafana 仪表盘
├─ Alertmanager 告警
├─ ELK 日志聚合
├─ Jaeger 分布式追踪
└─ 业务指标监控

8. 自动扩展和容灾

即将上线,内容包括:
├─ Horizontal Pod Autoscaler
├─ Vertical Pod Autoscaler
├─ Cluster Autoscaler
├─ KEDA(事件驱动扩展)
├─ 跨区域容灾
└─ 灾难恢复演练

9. 成本优化和最佳实践

即将上线,内容包括:
├─ Spot 实例策略
├─ Reserved Instances
├─ Savings Plans
├─ 资源利用率优化
├─ 成本分析和归因
└─ FinOps 最佳实践

项目亮点

1. 真实企业场景

✓ 完整的业务背景和需求分析
✓ 100万+ 用户规模的实际考量
✓ 99.95% 可用性目标
✓ 真实的成本预算和优化
✓ 符合企业合规要求

2. 全栈技术覆盖

✓ 网络:VPC、子网、路由、安全组
✓ 计算:EKS、EC2、Fargate、Lambda
✓ 存储:RDS、Redis、DynamoDB、S3、EBS
✓ 监控:CloudWatch、Prometheus、Grafana
✓ 安全:IAM、KMS、Secrets Manager、WAF
✓ CI/CD:GitOps、ArgoCD、Helm

3. 生产级最佳实践

✓ 多可用区高可用架构
✓ 点对点安全组策略
✓ IRSA(Pod 级别 IAM 权限)
✓ 自动扩展和自动恢复
✓ 完整的可观测性体系
✓ 成本优化策略

4. 可执行的脚本

✓ 所有操作都有完整的 Bash 脚本
✓ 幂等性设计(可重复执行)
✓ 错误处理和验证
✓ 详细的注释和说明
✓ 易于自动化集成

5. 分步实施计划

✓ 14周详细实施计划
✓ 每个阶段的交付物明确
✓ 验收标准清晰
✓ 风险识别和应对措施
✓ 可追溯的里程碑

技术要求

必需技能

基础知识:
├─ Linux 命令行
├─ 网络基础(TCP/IP、DNS、HTTP)
├─ Docker 容器
└─ 基本的 Kubernetes 概念

AWS 服务:
├─ VPC、EC2、IAM(基础)
├─ 了解 AWS 控制台
└─ AWS CLI 基本使用

开发技能:
├─ Bash 脚本
├─ YAML 配置
└─ 基本的故障排查

推荐技能

进阶知识:
├─ Kubernetes 深入理解
├─ 网络安全原理
├─ 分布式系统设计
└─ DevOps 最佳实践

工具链:
├─ Terraform / CloudFormation
├─ Helm / Kustomize
├─ Git / GitOps
└─ 监控工具(Prometheus、Grafana)

成本预估

月度运行成本(生产环境)

计算资源:
├─ EKS 控制平面:$73/月
├─ 6x t3.large(On-Demand):$356/月
├─ 3x t3.large(Spot):~$53/月
└─ 小计:$482/月

网络:
├─ 3x NAT Gateway:$108/月
├─ VPC Endpoints(ECR、Logs):$44/月
├─ Transit Gateway:$144/月
├─ 数据传输:~$100/月
└─ 小计:$396/月

数据库和缓存:
├─ RDS PostgreSQL(Multi-AZ):~$280/月
├─ ElastiCache Redis:~$150/月
├─ DynamoDB(On-Demand):~$50/月
└─ 小计:$480/月

存储:
├─ EBS 卷:~$100/月
├─ S3 存储:~$50/月
└─ 小计:$150/月

监控和日志:
├─ CloudWatch Logs:~$30/月
├─ Container Insights:~$20/月
└─ 小计:$50/月

负载均衡器:
├─ ALB:~$25/月
├─ NLB:~$20/月
└─ 小计:$45/月

总计:约 $1,600/月

优化后成本:
├─ 使用 Spot 实例:节省 40%
├─ 预留实例(1年):节省 30%
├─ 优化资源配置:节省 20%
└─ 预计优化后:约 $1,000/月

快速开始

环境准备

# 1. 安装 AWS CLI
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

# 2. 配置 AWS 凭证
aws configure

# 3. 安装 kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

# 4. 安装 Helm
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

# 5. 克隆项目脚本(示例)
git clone https://github.com/your-repo/eks-ha-project.git
cd eks-ha-project

部署流程

# 第一步:创建网络(约 15 分钟)
./scripts/01-create-vpc.sh

# 第二步:配置安全组(约 5 分钟)
./scripts/02-create-security-groups.sh

# 第三步:创建 EKS 集群(约 15 分钟)
./scripts/03-create-eks-cluster.sh

# 第四步:配置节点组(约 10 分钟)
./scripts/04-create-node-groups.sh

# 第五步:安装插件(约 5 分钟)
./scripts/05-install-addons.sh

# 第六步:验证部署
./scripts/06-verify-cluster.sh

学习建议

初学者路径

1. 从项目概述开始
   → 理解业务需求和技术目标

2. 学习网络架构规划
   → 动手创建 VPC 和子网

3. 配置安全组
   → 实践点对点安全组策略

4. 创建 EKS 集群
   → 完整体验集群创建流程

5. 逐步添加监控和日志
   → 建立可观测性体系

进阶学习路径

1. 深入理解每个组件的工作原理
2. 尝试故障注入和恢复演练
3. 优化资源配置和成本
4. 实施自动化 CI/CD 流程
5. 探索服务网格和高级特性

相关资源

官方文档:

参考架构:

社区资源:


准备好了吗? 让我们开始这个企业级高可用架构的实战之旅!点击上方的子章节开始学习。