IaaS架构剖析、场景实践

一、什么是 IaaS

1.1 定义

Infrastructure as a Service(IaaS,基础设施即服务)是一种按需、弹性提供计算、存储、网络和安全等底层 IT 资源的云服务模式。用户通过 API、CLI 或 Web 控制台即可在几分钟内创建、扩容或释放资源,而无需购置和维护物理服务器、机房电力与网络等硬件设施。

关键词:虚拟机 / 裸金属、块存储 / 对象存储、虚拟私有云(VPC)、负载均衡、防火墙、按量计费。

1.2 与传统数据中心的差异

维度

传统自建机房

IaaS

资源获取周期

周到月(采购、上架、网络布线)

分钟级(API 即时开通)

容量规划

需超前采购,容易闲置或不足

弹性伸缩,按需使用

成本结构

CAPEX 为主,前期投入高

OPEX 为主,按量付费

运维工作量

机房运维、硬件故障、人力 7×24

由云厂商托管,聚焦业务

可靠性

单 IDC 容灾能力有限

跨 AZ/Region 高可用

1.3 与 PaaS、SaaS 的关系

IaaS 为 PaaS 和 SaaS 提供底座能力;

PaaS 抽象运行时(运行环境、数据库、中间件);

SaaS 封装完整应用(CRM、办公套件)。

选择层次取决于控制粒度 与运维投入:

控制粒度从低到高:SaaS → PaaS → IaaS → On‑Premises

运维责任从低到高:On‑Premises → IaaS → PaaS → SaaS

1.4 IaaS 的核心能力

弹性计算

按需创建虚拟机(VM)或裸金属服务器,支持水平/纵向扩缩容

多实例规格:通用型、计算优化型、内存优化型、GPU、FPGA

弹性存储

块存储(EBS/Cinder):低延迟、高 IOPS,可快照回滚

对象存储(S3/Swift):海量文件,高可用,跨区复制

软件定义网络(SDN)

虚拟私有云(VPC)、子网、路由表、NAT、弹性公网 IP

安全组、网络 ACL,实现微分段和零信任

安全与合规

IAM 身份与访问控制、KMS 密钥管理、WAF、DDoS 防护

支持 PCI‑DSS、ISO 27001、GDPR 等合规认证

自动化与可观测

基础设施即代码(IaC):Terraform/CloudFormation

监控、日志、审计:Prometheus、CloudWatch、ELK

1.5 典型交付形态

资源类型

常见名称

说明

计算

EC2、Azure VM、GCE

VM & 裸金属,多可用区部署

块存储

EBS、Persistent Disk

数据盘、系统盘,支持快照

对象存储

S3、Blob Storage

静态文件、备份、日志

网络

VPC、Virtual Network

私有网络、子网、路由

负载均衡

ELB、ALB、Azure LB

四层 / 七层流量分发

防火墙

Security Group、NSG

状态包过滤,细粒度控制

1.6 IaaS 为企业带来的价值

CapEx → OpEx:将一次性硬件投资转化为按需运营支出。

业务弹性:快速应对流量高峰或突发活动,提升用户体验。

全球覆盖:多 Region 部署,加速全球访问并提升容灾等级。

聚焦核心业务:基础设施运维外包给云厂商,团队专注产品创新。

技术创新加速:随取随用的 GPU/FPGA、AI 专用实例,加快原型迭代。

小结:IaaS 把"机房 + 服务器 + 网络"抽象成可编程的 API 服务,企业无需自建硬件即可获取与世界级数据中心同等的弹性与可靠性,为上层 PaaS/SaaS 和业务系统提供坚实基座。

二、IaaS 架构与核心组件

下面从五个层次拆解典型 IaaS 平台的技术栈与职责分工。理解这些层次有助于在选型、容量规划和故障排查时快速定位问题。

2.1 物理层(Physical Layer)

组成

关键要点

典型技术 / 设备

计算节点

‑ 机架式 / 刀片式服务器 ‑ 支持 NUMA、SR‑IOV、GPU、FPGA 等硬件直通

Dell PowerEdge、HPE ProLiant、Supermicro

存储节点

‑ 高密度盘柜,统一抽象为分布式块/对象存储 ‑ NVMe SSD + SAS HDD 分层

Ceph OSD、NVMe‑all‑flash、Erasure Coding

网络交换

‑ Spine‑Leaf 架构,保证东西向流量 <2 μs RTT ‑ 25/100/200 GbE

Broadcom Tomahawk、Arista 7280、M‑LAG

机房基础

2N 供电、N+1 制冷、热通道 / 冷通道隔离

Tier III+/IV 数据中心规范

最佳实践:超融合(HCI)可将计算与存储节点合并,简化管理并提高资源利用率;但对极致性能场景,仍建议计算‑存储分离。

2.2 虚拟化与管理层(Virtualization & Management)

Hypervisor 与容器运行时

类型

优势

典型方案

虚拟机(VM)

安全隔离强,支持热迁移

KVM、Xen、VMware ESXi

容器(轻量虚拟化)

启动快,资源开销小

containerd、CRI‑O、Kata Containers

无虚拟化(裸金属)

极致性能、I/O 直通

Intel VT‑d、PCIe Passthrough

资源编排与调度

Nova Scheduler / AWS Placement:根据 CPU、内存、NUMA 拓扑做最优放置

调度插件:GPU 亲和 / 网络带宽感知 / 能耗感知(Green Scheduling)

灾难迁移:冷迁移、实时热迁移(Live Migration)与存储迁移(Storage vMotion)

镜像与模板

镜像仓库:QCOW2、RAW、AMI、VHD

Cloud‑Init / Ignition:首启注入元数据,实现无状态配置

2.3 服务接口层(Service Interface)

维度

功能点

说明

API Gateway

统一鉴权、限流、审计

OpenStack Keystone、AWS SigV4

控制面板

Web Console、管理后台

React + Go、Vue + Python Flask

CLI / SDK

自动化脚本、CI/CD 集成

Terraform Provider、AWS CLI、Boto3

Billing & Metering

多租户计量、账单拆分、成本中心

Prom‑QL 采集 + 推送到计费系统

设计要点:API 必须幂等;结合 OpenAPI / Swagger 自动生成 SDK 与文档,降低接入门槛。

2.4 网络与安全层(Networking & Security)

软件定义网络(SDN)

Overlay 网络:VxLAN、Geneve;使用 OVS‑DPDK / eBPF Datapath

Underlay 网络:BGP‑EVPN,自动路由发布,支持 ECMP

安全组件

组件

职责

VPC / 子网

二层隔离、CIDR 划分

安全组 / ACL

五元组状态包过滤,支持动态规则

分布式防火墙 (DFW)

East‑West 流量微分段

KMS / HSM

加密密钥托管,与卷加密、TLS 证书解耦

WAF / Anti‑DDoS

L3‑L7 攻击检测与清洗

2.5 运维与监控层(Operations & Monitoring)

分类

工具 / 方法

价值

可观测性

Prometheus + Grafana CloudWatch / Azure Monitor

多维度指标 (CPU、I/O、网络)、自定义业务指标

集中日志

Loki、Elastic Stack、Fluent Bit

日志检索、告警、溯源

分布式追踪

Jaeger、Zipkin、OpenTelemetry

API 级延迟分析,定位跨服务瓶颈

CMDB / 资产管理

NetBox、ServiceNow

配置审计,防漂移

自动化运维

Terraform、Ansible、Argo CD

IaC + GitOps,减少手工变更

容量 & 成本

Kubecost、AWS Cost Explorer

右置化成本分析、购买 RI / SP 优化

SRE 流程

SLIs / SLOs、Error Budget、Incident Postmortem

系统可靠性闭环改进

落地建议:

三板斧:监控 → 日志 → 告警;先覆盖基础指标,再逐步沉淀业务指标。

自动修复:结合监控告警触发 Runbook / Lamb‑function,缩短 MTTR。

混沌工程:定期注入故障(网络延迟、磁盘熔断),验证容灾与报警链路有效性。

小结

物理层决定上限,网络拓扑与供电冗余是底线保障;

虚拟化与管理层掌管资源效率与隔离性;

服务接口层决定易用性与生态能力;

网络与安全层护航多租户隔离、合规与防御;

运维与监控层让 IaaS 从"能跑"走向"可持续运行且可优化"。

三、主要 IaaS 提供商对比

3.1 快速一览

维度

AWS

Microsoft Azure

Google Cloud Platform (GCP)

Alibaba Cloud

全球覆盖

36 Region / 114 AZ,另有4 Region在建

60 + Region / 300 + DC,全球最多

40 Region 已投产,9 在建(总 49)

29 Region / 87 AZ(中国区 56 AZ)

自研计算芯片

Graviton4 (Arm) 已 GA,I8g /I7ie 实例首发

Cobalt 100 (Arm) & Maia 100 AI 加速器

Axion (Arm),首发 C4A 实例

Shenlong CIPU + 异构加速 (Elastic GPU)

AI/ML 专用

Trainium v2、Inferentia v2、NVIDIA H200

NVIDIA H100 / H200、Maia 100

TPU v5p、Axion CPU+GPU 组合

PAI-Basic/PAI-EAS、飞天智算集群

计费优化

Savings Plans / RI,最高 72 % 折扣

Reserved VM / Savings Plan,最高 72 % 折扣

Committed Use Discount (CUD) 55 %+ 折扣

预付费包年包月 + 弹性计费,企业专属账单

混合 / 边缘

Outposts、Local Zones、Wavelength

Azure Stack HCI / Arc、Edge Zones

Anthos、Google Distributed Cloud

Apsara Stack、Local Region

突出优势

产品最丰富、生态最大、自动化成熟

本地化和 Office / AD 集成、政务/机密云完备

大数据 & AI 创新快、价格透明

APAC 布局深、超大规模 e‑commerce 经验

常见劣势

成本模型复杂、学习曲线陡峭

定价规则繁多,控制台体验不一

Region 数少于 Azure,若干服务区域受限

海外 Region 相对有限,生态主要集中在华语市场

阅读技巧:上表展示了可量化指标(Region / AZ、成本折扣)和差异化特征(自研芯片、混合能力)。若需求聚焦 AI 训练,可优先考察"AI/ML 专用"一栏;若关注全球多活,则对比 "全球覆盖"。

3.2 深度解析

3.2.1 计算与自研芯片

AWS ------ 第四代 Graviton4 CPU 相比上一代性能提升 30 % 且功耗更低;配合 I8g 实例在 I/O‑密集场景(如 MySQL、Redis)具备最高 65 % 实际存储吞吐提升。citeturn0search4turn0search0

Azure ------ Cobalt 100 CPU 面向通用算力,Maia 100 AI 加速器垂直整合至 Azure OpenAI Service,提供端到端一站式训练 / 推理平台。citeturn0search9turn0search13

GCP ------ Axion CPU(Neoverse V2 内核)领衔 C4A 系列 VM,官方宣称较同类 Arm 实例性价比提升 ≥ 10 %。citeturn0search10

Alibaba Cloud ------ 第四代 Shenlong CIPU + RDMA 800 Gb 架构,将网络 / 存储卸载到智能网卡,GPU 实例 P‑xFG 单机带宽高达 64 Gbps。citeturn0search7

3.2.2 网络与可用区

超大规模 Spine‑Leaf 架构已成标配,但 AWS 在 Local Zone 与 Wavelength Zone 布点最多,适合边缘低时延场景。

Azure 以 60 + Region 遥遥领先,并提供国家级主权云(Azure Government / Secret)以满足合规需求。

GCP 在海底光缆自建上投入巨大(Dunant、Pacific Light Cable),对延迟敏感的实时分析业务具备优势。

3.2.3 成本与采购模式

模式

AWS

Azure

GCP

按需 / Spot

秒级计费,Spot 最高 90 % off

分钟计费,Spot 最大 90 % off

秒级计费,Preemptible/Spot 60--91 % off

1/3 年承诺

Savings Plans / RI ≤ 72 % off citeturn3search0

Reserved VM ≤ 72 % off citeturn3search2

CUD ≤ 55 % off (部分内存型 70 %) citeturn3search1

提示:如果负载稳定,优先购买 3 年承诺或混合使用 Savings Plan(AWS)、Flexible CUD (GCP) 以锁定折扣;若工作负载突发且可中断,则 Spot/Preemptible 能显著节省预算。

3.2.4 混合云与边缘策略

AWS Outposts 将原生 AWS API 下沉到本地机柜;

Azure Arc + Stack HCI 支持 K8s / VM 统一治理,并可将 Azure PaaS 服务投射到本地;

Anthos (GCP) 强调多云一致性,支持在 AWS、Azure、裸机上托管;

Alibaba Apsara Stack 定位政企私有云,向上兼容飞天公有云生态。

3.2.5 特色与适用场景

需求场景

首选云(建议)

说明

泛互联网 / 电商高并发

AWS / Alibaba

自动扩缩容完善、对象存储生态成熟 S3 / OSS

微软生态 (AD、Office)

Azure

AAD、Exchange Online、Teams 深度集成

大数据 / AI 原生

GCP

BigQuery、TPU、Vertex AI、Axion C4A

APAC 本地服务

Alibaba

中国大陆与东南亚节点密集、价格友好

高合规 / 主权云

Azure Government、AWS GovCloud

地理隔离、FedRAMP / DoD 级别认证

3.3 选择建议

先需求、后云厂 :将需求拆为 地理 、性能 、成本 、合规 四象限,逐一打分再决定。

多云不是目的:除非必须规避锁定或做跨境合规,单一云 + DR 更容易控制成本与复杂度。

关注自研芯片路线图:Arm‑based 实例已成为主流降本手段;提前验证兼容性(指令集、驱动、容器基础镜像)。

善用 FinOps:上线即打标签、接入账单 API,配合 IaC 做到"谁用谁付";季度审计 RI/Plan 利用率。

边缘计算要看生态:若重视 5G/MEC,AWS Wavelength 或 Azure Edge Zone 会比自建 POP 更简单。

四、IaaS 的使用场景与优势

4.1 弹性伸缩的 Web 应用

业务痛点

访问流量呈 "早晚高峰 + 节假日激增" 的长尾分布

传统机房必须按峰值采购,导致低谷时服务器闲置

IaaS 解决方案

Auto Scaling Group (ASG) 按 CPU、QPS 或自定义指标自动增减实例

弹性负载均衡 (ELB/ALB) 实时探活、跨可用区流量分发

无状态化 + 镜像/容器 启动脚本 + AMI 或 Docker Image 秒级扩容

Global Accelerator / CDN 就近接入,降低首字节时延

优势总结

成本随流量线性变化:空闲时仅保留最小实例池

秒级扩容:应对秒杀 / 抢票等突发洪峰

高可用:多 AZ 或多 Region 部署,单点故障自动隔离

4.2 批量计算与高性能计算 (HPC)

典型场景

生物制药分子动力学模拟、基因测序比对

金融蒙特卡洛、量化回测

影视渲染、CFD 流体力学

IaaS 能力点

组件

价值

大规模并行队列 (Slurm、AWS Batch、GCP Batch)

数万核作业调度,支持 Spot/Preemptible 降本

RDMA 25--800 Gb

低于 5 µs 延迟,跨节点超高速互连

GPU / FPGA 裸金属

H200 / MI300X / Gaudi2 按需租用,峰值 > 2 PFLOPS

弹性文件系统 (Lustre、FSx for Lustre)

TB/s 级吞吐,秒级挂载到数千节点

优势总结

零前置 CAPEX:不必购买昂贵 InfiniBand 交换和 GPU 集群

作业结束即释放:批量计算结束后自动关机,节省 90 %+

快速试错:可同时启动多组超参实验,加速科研迭代

4.3 灾备与容灾 (DR)

风险场景

机房火灾、断电、光缆中断

逻辑误删 / 勒索软件攻击

典型架构

IaaS 特性

跨 AZ 复制 :块存储/数据库双活或半同步复制

云快照 & Lifecycle :版本化 + 备份保留策略,7--365 天合规归档

Pilot‑Light / Warm‑Standby :异地仅保留最小核心服务,故障时自动扩容

DNS / Global Load Balancer :健康探测 + 30 s 级切流

优势总结

分钟级 RTO / RPO 避免重大营收损失

按需付费 的 Warm‑Standby 仅需 10--15 % 持续成本

合规得分:满足 ISO 22301、金融监管的异地容灾要求

4.4 开发与测试环境

痛点

多项目并行,版本冲突;测试集群长期闲置

开发‑UAT‑生产环境配置漂移导致"Works on my machine"

IaaS 打法

Infrastructure as Code (IaC) :Terraform/CloudFormation 一键部署完整堆栈

按环境隔离的 VPC / Namespace :避免相互污染,自动释放公网 IP

自助式 Sandbox :开发者通过 Service Catalog 或 Backstage 自助申请/销毁

Spot + 小规格实例 :跑 CI/CD、集成测试,成本 ≤ 25 %

优势总结

加快上线:新分支触发 CI,动态起容器/VM 进行 E2E 测试

零配置漂移:同一模板用于 Staging 与 Production

精细计费:成本归集到代码分支 / 项目标签,助力 FinOps

总体价值 :IaaS 通过"弹性 + 自动化 + 广域基础设施" 让企业能 按需获取全球级算力、存储与网络,在成本、性能与可靠性之间获得最优平衡,并加速创新与业务迭代。

五、IaaS 的挑战与最佳实践

理解常见"坑",才能真正跑好 IaaS。以下按 5 大挑战拆解成 成因 → 风险 → best practice,并给出可落地的工具 / 策略。

5.1 成本不可控 (Cost Overrun)

成因

风险

• 按需实例长期运行但无人使用 • "先上再优化",随手开 ≥ XL/高配实例 • 孤儿快照 / 异地流量杂费

预算爆表、ROI 下滑,项目被 CFO "问责"

最佳实践

FinOps 三步:可见 (Visibility) → 优化 (Optimization) → 运营 (Operation)。

账单标签策略 :要求每个 VPC / VM / S3 Bucket 在 Terraform 中强制打 CostCenter, Project, Env;匿名资源直接在 CI 阻断。

自动关停策略:无流量 ASG 夜间缩到零;非生产实例利用 Instance Scheduler / Lambda 定时关机。

Commit+Spot 拼单 :

- 稳定基线 70 % → 3 年 RI / Savings Plan / CUD

- 突发容量 30 % → Spot / Preemptible

月度 RI 利用率审计:< 95 % 自动在采购系统触发工单调整或转卖(AWS RI Marketplace)。

5.2 安全隔离 (Segmentation & Zero Trust)

成因

风险

• 多租户混布,缺乏网络微分段 • IAM 权限宽松 (Wildcard *) • 默认开启公网 SSH / RDP

数据外泄、横向移动、合规罚款

最佳实践

多层隔离模型

租户级:独立 VPC 或专属 Account / Project;

服务级:安全组 + NACL;

进程级:容器 sandbox / SELinux / AppArmor。

零信任网络 (ZTNA)

全流量走 mTLS;

每条南北向 / 东西向流量经 Policy Engine 实时 RBAC 检查。

IAM 最小权限

生产账户拒绝 Console 登录,强制 SAML + MFA;

权限评审 (Policy Analyzer) 每季度轮动。

合规映射:将 ISO 27001 / PCI‑DSS 控制条款映射到具体云服务 (KMS, CloudTrail, Config) 并自动检测漂移。

5.3 配置漂移 (Configuration Drift)

成因

风险

• 运维人员直接在控制台手改安全组 • 脚本 vs IaC 模板不一致

"昨天还能访问,今天 500" 追溯困难,发布回滚成本高

最佳实践

IaC 一切皆代码:Terraform / Pulumi / CloudFormation 为唯一真源;禁用手工改动(通过 IAM Deny 或 AWS Service Control Policies)。

GitOps 工作流:Merge Request = 基础设施变更;PR 模板强制关联工单 & 风险评估。

资源漂移检测 :

terraform plan 在 CI 每日跑一次 dry‑run;

AWS Config / GCP Config Sync 持续比对并标红偏差。

自动修正:检测到漂移 → 触发 Pipeline 回滚到基准 Commit(或生成 PR 修正)。

5.4 监控与告警漏报 (Observability Gaps)

成因

风险

• 只监控 CPU,不监控饱和度 (Saturation) • 告警阈值硬编码,噪声大 → SRE 靠忽略求生

SLA 下降、错误蔓延未及时止血

最佳实践

四个黄金信号 + RED:Latency / Traffic / Errors / Saturation + (Rate‑Error‑Duration) for API。

多层监控

基础设施:CloudWatch / Stackdriver + Node Exporter;

平台:K8s Metrics Server、Vertical Pod Autoscaler;

业务:OpenTelemetry 自动埋点。

动态阈值 :利用 Prometheus predict_linear 或 AWS CloudWatch Anomaly Detection。

告警分级 (P1‑P4):结合 SLO + Error Budget;P1 要求 5 min 确认,P4 仅汇总日报。

事件驱动自动修复:告警→ Lambda/Runbook 自动伸缩、热迁移或重启容器,降低 MTTR。

5.5 数据一致性与备份 (Data Consistency & Backup)

场景

风险

• 分布式存储跨 AZ 异步复制 • 备份脚本与真实业务 RPO 偏差

脏读、数据丢失、勒索恢复失败

最佳实践

三层备份 :

热备:主从或多副本,秒级 RPO;

快照:EBS / PD 快照 + 生命周期管理 (7‑30 天);

冷归档:Glacier / Deep Archive ≥ 半年。

一致性协议:关键业务选择强一致 (Paxos/Raft) 数据库;跨可用区同步复制 (Aurora Global DB) RPO< 1 s。

"备份即代码":备份策略 (周期、加密、保留) 以 HCL / YAML 管理,并纳入 CI 审核。

定期演练

Table‑top:流程走查;

Black‑Start:全 Region 故障 + 恢复;

结果输出 Postmortem + 改进清单。

勒索防护:开启对象锁定 (S3 Object Lock / OSS WORM),备份仓库隔离在只写账户。

小结

IaaS 成熟度 = 「技术栈」 × 「治理体系」

通过 FinOps、Zero Trust、IaC/GitOps、可观测性与韧性设计 五条主线持续演进,才能避免"上云省 CapEx → 运维更复杂 → 成本反涨"的悖论,实现 高弹性、可审计、低成本、合规可靠 的现代基础设施。

六、实战示例:使用 Terraform 部署 IaaS 资源

目标 :在 AWS 创建"一键可复用"的 VPC + 公私子网 + NAT 网关 + Auto Scaling Web 集群。同一思路可平移到 Azure、GCP。

6.1 目录结构

复制代码

terraform-iaas-demo/

├── modules/

│ ├── vpc/

│ │ ├── main.tf # VPC + 子网 + 网关

│ │ ├── variables.tf

│ │ └── outputs.tf

│ ├── asg/

│ │ ├── main.tf # Launch Template + ASG + ALB

│ │ ├── variables.tf

│ │ └── outputs.tf

│ └── sg/

│ └── main.tf # 通用安全组

├── envs/

│ ├── dev/

│ │ ├── main.tf # 调用模块

│ │ └── terraform.tfvars

│ └── prod/

│ └── ...

└── versions.tf # Terraform & Provider 版本锁

6.2 versions.tf

hcl

复制代码

terraform {

required_version = ">= 1.7.0"

required_providers {

aws = {

source = "hashicorp/aws"

version = "~> 5.50"

}

}

}

provider "aws" {

region = var.aws_region

}

6.3 VPC 模块(modules/vpc/main.tf)

hcl

复制代码

resource "aws_vpc" "this" {

cidr_block = var.cidr

enable_dns_hostnames = true

tags = { Name = "${var.name}-vpc" }

}

resource "aws_subnet" "public" {

count = 2

vpc_id = aws_vpc.this.id

cidr_block = cidrsubnet(var.cidr, 4, count.index)

availability_zone = element(var.azs, count.index)

map_public_ip_on_launch = true

tags = { Name = "${var.name}-public-${count.index}" }

}

resource "aws_subnet" "private" {

count = 2

vpc_id = aws_vpc.this.id

cidr_block = cidrsubnet(var.cidr, 4, count.index + 2)

availability_zone = element(var.azs, count.index)

tags = { Name = "${var.name}-private-${count.index}" }

}

resource "aws_internet_gateway" "igw" {

vpc_id = aws_vpc.this.id

}

resource "aws_route_table" "public" {

vpc_id = aws_vpc.this.id

route {

cidr_block = "0.0.0.0/0"

gateway_id = aws_internet_gateway.igw.id

}

}

resource "aws_route_table_association" "public" {

count = 2

subnet_id = aws_subnet.public[count.index].id

route_table_id = aws_route_table.public.id

}

resource "aws_nat_gateway" "nat" {

allocation_id = aws_eip.nat.id

subnet_id = aws_subnet.public[0].id

}

resource "aws_eip" "nat" {

domain = "vpc"

}

resource "aws_route_table" "private" {

vpc_id = aws_vpc.this.id

route {

cidr_block = "0.0.0.0/0"

nat_gateway_id = aws_nat_gateway.nat.id

}

}

resource "aws_route_table_association" "private" {

count = 2

subnet_id = aws_subnet.private[count.index].id

route_table_id = aws_route_table.private.id

}

variables.tf

hcl

复制代码

variable "name" { type = string }

variable "cidr" { type = string }

variable "azs" { type = list(string) }

6.4 安全组模块(modules/sg/main.tf)

hcl

复制代码

resource "aws_security_group" "web_sg" {

name = "${var.name}-web"

description = "Allow HTTP & SSH"

vpc_id = var.vpc_id

ingress {

from_port = 80

to_port = 80

protocol = "tcp"

cidr_blocks = ["0.0.0.0/0"]

}

ingress {

from_port = 22

to_port = 22

protocol = "tcp"

cidr_blocks = [var.cidr_admin]

}

egress {

from_port = 0

to_port = 0

protocol = "-1"

cidr_blocks = ["0.0.0.0/0"]

}

tags = { Name = "${var.name}-web-sg" }

}

variable "name" { type = string }

variable "vpc_id" { type = string }

variable "cidr_admin" { type = string }

6.5 Auto Scaling 模块(modules/asg/main.tf)

hcl

复制代码

data "aws_ami" "al2" {

most_recent = true

owners = ["amazon"]

filter {

name = "name"

values = ["amzn2-ami-kernel-*-hvm-*-x86_64-gp2"]

}

}

resource "aws_launch_template" "lt" {

name_prefix = "${var.name}-lt-"

image_id = data.aws_ami.al2.id

instance_type = "t3.micro"

vpc_security_group_ids = [var.sg_id]

user_data = base64encode(<

#!/bin/bash

yum install -y httpd

echo "

Hello from $(hostname)

" > /var/www/html/index.html

systemctl enable httpd --now

EOF

)

}

resource "aws_autoscaling_group" "asg" {

name_prefix = "${var.name}-asg-"

desired_capacity = 2

min_size = 2

max_size = 4

vpc_zone_identifier = var.private_subnet_ids

launch_template {

id = aws_launch_template.lt.id

version = "$Latest"

}

target_group_arns = [aws_lb_target_group.tg.arn]

lifecycle {

create_before_destroy = true

}

}

resource "aws_lb" "alb" {

name = "${var.name}-alb"

load_balancer_type = "application"

subnets = var.public_subnet_ids

security_groups = [var.sg_id]

}

resource "aws_lb_target_group" "tg" {

name = "${var.name}-tg"

port = 80

protocol = "HTTP"

vpc_id = var.vpc_id

}

resource "aws_lb_listener" "listener" {

load_balancer_arn = aws_lb.alb.arn

port = 80

protocol = "HTTP"

default_action {

type = "forward"

target_group_arn = aws_lb_target_group.tg.arn

}

}

outputs = {

alb_dns = aws_lb.alb.dns_name

}

variables.tf

hcl

复制代码

variable "name" { type = string }

variable "vpc_id" { type = string }

variable "sg_id" { type = string }

variable "public_subnet_ids" { type = list(string) }

variable "private_subnet_ids" { type = list(string) }

6.6 环境目录(envs/dev/main.tf)

hcl

复制代码

module "vpc" {

source = "../../modules/vpc"

name = var.project

cidr = "10.0.0.0/16"

azs = ["us-east-1a", "us-east-1b"]

}

module "sg" {

source = "../../modules/sg"

name = var.project

vpc_id = module.vpc.vpc_id

cidr_admin = "203.0.113.0/24"

}

module "asg" {

source = "../../modules/asg"

name = var.project

vpc_id = module.vpc.vpc_id

sg_id = module.sg.web_sg_id

public_subnet_ids = module.vpc.public_subnet_ids

private_subnet_ids = module.vpc.private_subnet_ids

}

output "alb_dns" {

value = module.asg.alb_dns

}

terraform.tfvars

hcl

复制代码

project = "demo"

aws_region = "us-east-1"

6.7 执行流程

bash

复制代码

# 1. 初始化插件

terraform init

# 2. 查看计划,确保所有资源符合预期

terraform plan -out tf.plan

# 3. 应用变更

terraform apply tf.plan

# 4. 验证

curl http://$(terraform output -raw alb_dns)

6.8 最佳实践清单

类别

建议

状态文件

使用 remote backend "s3" + DynamoDB 加锁,避免多人写冲突

变量管理

敏感字段(DB 密码、API Key)放 terraform.tfvars + git‑crypt 或 SSM Parameter Store

模块化

将 VPC、SG、ASG 拆分成独立模块,支持多环境复用

策略管控

Sentinel / OPA 定义合规策略:强制标签、禁止公网 0.0.0.0/0 入站

CI/CD

GitHub Actions / GitLab CI:terraform fmt → validate → plan → OPA → apply

成本可见

每次 plan 用 infracost 预估费用,PR 评论自动展示变化

七、结语

IaaS 把传统机房的"机架、电力、网络"抽象成 可编程、可弹性、可计量 的云化资源,使企业能够:

按需获取 全球算力与存储,快速响应业务高峰;

用 IaC + GitOps 把基础设施纳入软件生命周期,减少人工配置与漂移;

借助 FinOps 与零信任 持续优化成本、强化安全与合规;

统一 Dev/Test→Prod 的环境与运维流程,加速创新交付。

然而"上云"只是起点------真正的价值来自 治理体系、自动化与文化。唯有持续迭代 FinOps、SRE、DevSecOps 等能力,才能让 IaaS 成为业务的稳健基座,而非新的技术债务。

八、延伸阅读

官方文档

AWS Well‑Architected Framework

Microsoft Azure Architecture Center

Google Cloud Architecture Framework

Alibaba Cloud Best Practices

开源与社区

Terraform Guides & Examples -- HashiCorp Learn

OpenStack Operations Guide -- O'Reilly (免费电子书)

FinOps Framework -- finops.org

CNCF Cloud Native Security Whitepaper

书籍推荐

《Cloud FinOps:Maximizing Your Cloud Investment》

《Site Reliability Engineering》

《Designing Data‑Intensive Applications》

《Infrastructure as Code, 2nd Edition》

实践博客 / 会议

re:Invent、Microsoft Ignite、Google Cloud Next

AWS Architecture Blog、Azure Updates、GCP Cloud Blog

阿里云栖社区、KubeCon & CloudNativeCon

友情链接:

Copyright © 2022 1998年世界杯主题曲_腾讯世界杯 - dg-zmt.com All Rights Reserved.