企业级高可用架构实战
项目概述
这是一个完整的企业级高可用架构实战项目,涵盖从需求分析、网络规划、安全设计到 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. 探索服务网格和高级特性
相关资源
官方文档:
参考架构:
社区资源:
准备好了吗? 让我们开始这个企业级高可用架构的实战之旅!点击上方的子章节开始学习。