《UNIX/Linux系统管理技术手册-读书笔记-第九章

云计算

1. 云计算概述

1.1 什么是云计算

概念 说明 能做什么
云计算 从共享资源池中租借计算资源,按需获取、按使用量付费 无需采购硬件,按需伸缩,降低资本支出
效用计算 像用水用电一样使用计算资源(John McCarthy,1961年提出) 计算资源成为公共服务,弹性获取
促成技术 虚拟化、安全隔离、标准化硬件、全球网络 使云服务规模化、可靠、可编程

1.2 为什么采用云

优势 说明
成本优势 云供应商规模经济 + 定制硬件 + 高能效数据中心 → 低于自建成本
自动化/基础设施即代码 通过API和工具实现整个生命周期的自动化配置
弹性(Elasticity) 高峰增加资源,低谷释放资源,只为实际使用付费
全球覆盖 多地部署,进入新市场,简化灾难恢复
与DevOps契合 敏捷、可重复,不再受制于缓慢的采购流程

心态转变:宠物 vs 家畜

  • 宠物:有名字、精心照料、病了就治 → 传统物理服务器
  • 家畜:批量养殖、病了就淘汰 → 云服务器
  • 云服务器是短暂的(ephemeral),随时可能故障,应为此做计划

直接“平移”(lift-and-shift)现有应用上云通常不会成功。云原生应用需针对不可靠的短暂环境设计。

2. 云平台选择

2.1 公有云 / 私有云 / 混合云

类型 说明 适用场景
公有云 厂商管理硬件,多租户,通过Internet访问 绝大多数场景(成本最低、管理最简单)
私有云 组织自有数据中心或厂商代管,单租户 已投入大量硬件资本,要求全面控制
混合云 公有云 + 私有云结合 本地数据中心 + 云突发负载

私有云≠更安全:公有云有多层软硬件隔离,私有云并无实质安全优势。私有云运维复杂且昂贵,仅推荐公有云(除非有强制合规要求)。

2.2 主流公有云平台对比

平台 特点 适用场景
AWS(Amazon Web Services) 业界龙头,创新最快,服务最全,价格较贵,使用复杂 大型企业、创业公司、需要丰富服务的场景
GCP(Google Cloud Platform) 技术先进,全球网络,价格优惠,持续使用自动折扣 大数据、性能敏感、对价格敏感的场景
DigitalOcean 简单可靠,API易用,启动快,性价比高 开发测试、小型项目、概念验证
Azure Microsoft生态,规模第二 Windows商店、已有AD投资的企业
OpenStack 开源私有云DIY平台,与AWS API兼容 有专门团队建设私有云的大型组织

3. 云服务基础(核心概念层)

3.1 服务模型(IaaS / PaaS / SaaS)

模型 用户管理 供应商管理 示例
IaaS OS、网络、存储、应用 硬件、虚拟化、电源 EC2、GCE、DigitalOcean Droplet
PaaS 应用代码 OS、运行时、网络、硬件 Google App Engine、Heroku
SaaS 使用软件 全部(包括应用) Gmail、Salesforce、WordPress托管

系统管理员最关心IaaS——虚拟服务器、网络、存储。

3.2 地域(Region)与可用区(Availability Zone)

概念 说明 用途
地域 云供应商数据中心的地理位置(如us-east-1) 选择靠近用户的地域降低延迟
可用区(AZ) 地域内独立的数据中心集合(电力/冷却独立) 跨AZ部署实现高可用(<1ms延迟)
多地域部署 跨多个地域部署服务 全球用户 + 灾难恢复(延迟更高)

只有AWS和Azure在中国有直属地域。

3.3 虚拟私有服务器(VPS / 实例)

概念 说明
实例类型 预设配置(CPU/内存/磁盘/网络),范围从512MB到数TiB
镜像(AMI/Image) 操作系统+引导程序+预设配置的快照
创建方式 Web控制台或命令行API

关键操作

  • 创建实例 → 选择镜像 + 实例类型 + 网络配置 + 密钥对
  • 停止(Stop)→ 关机保留,重启后恢复
  • 终止(Terminate)→ 彻底删除,不可恢复(根磁盘同时释放)

3.4 云网络

能力 说明
虚拟网络(VPC) 自定义拓扑、地址范围、子网、路由、防火墙
公共IP 从供应商地址池租借,用于Internet访问
私有IP(RFC1918) 仅内网可见,更安全
堡垒主机 / VPN 管理私有IP资源的跳板

对虚拟网络的控制权取决于供应商——AWS VPC功能强大但复杂,GCP更简洁。

3.5 云存储

存储类型 特点 示例
对象存储 平面命名空间,无限容量,高可靠,低性能,HTTPS访问 AWS S3、GCP Cloud Storage
块存储 虚拟硬盘,可挂载到实例,可移动 AWS EBS、GCP Persistent Disk
临时存储 本地SSD,速度快,实例删除数据丢失 AWS Instance Store、GCP Local SSD
托管数据库 MySQL/PostgreSQL/Oracle等,内建冗余+加密 AWS RDS
分析数据库 分布式数据仓库 AWS Redshift、GCP BigQuery

3.6 身份与访问管理(IAM)

平台 服务 特点
AWS IAM 用户+组+角色+策略 最成熟,支持自动密钥轮替、细粒度权限
GCP IAM 类似AWS但较粗糙 持续改进中
Azure 基于Active Directory 与已有Windows AD集成良好

最小权限原则:每个用户/服务只能访问其所需的资源。

3.7 自动化基础设施(IaC)

工具 功能
AWS CloudFormation JSON/YAML模板描述资源,自动解决依赖,创建/更新云配置
Terraform(HashiCorp) 云无关,支持多云,模板驱动基础设施配置
Troposphere(Python库) 编程生成CloudFormation模板(避免手写YAML)

基础设施即代码(Infrastructure as Code)是云环境管理的核心实践。

3.8 无服务器函数(Serverless / FaaS)

概念 说明
云函数 事件驱动的执行模型(HTTP请求→执行函数→终止)
计费方式 仅为函数执行时间付费,无需维护服务器
示例 AWS Lambda、GCP Cloud Functions
优势 极简运维,自动扩展,低成本

4. 云平台命令行快速入门

4.1 AWS(awscli)

安装

1
2
pip install awscli
aws configure   # 设置Access Key、Secret Key、默认地域

创建EC2实例

1
2
3
4
5
aws ec2 run-instances \
    --image-id ami-d440a6e7 \
    --instance-type t2.nano \
    --associate-public-ip-address \
    --key-name admin-key

查看控制台日志(调试启动故障):

1
aws ec2 get-console-output --instance-id i-c4f60303

停止/终止实例

1
2
aws ec2 stop-instances --instance-id i-c4f60303    # 停止(保留)
aws ec2 terminate-instances --instance-id i-c4f60303  # 终止(删除,不可恢复)

密钥对需提前生成(ssh-keygen)并上传到AWS控制台。默认安全组不允许SSH,需调整规则。

4.2 GCP(gcloud)

安装与初始化

1
gcloud init   # 浏览器认证 + 选择项目/区域

创建实例

1
gcloud compute instances create ulsah --image debian-8

SSH登录(gcloud包装):

1
gcloud compute ssh ulsah

可抢占实例(低价格,最多24小时,可被终止):

1
gcloud compute instances create ulsah --preemptible

4.3 DigitalOcean(tugboat)

安装

1
2
gem install tugboat
tugboat authorize   # 输入API Token

创建Droplet

1
2
3
4
5
6
# 先查镜像名和密钥ID
tugboat images | grep ubuntu
tugboat keys

tugboat create -i ubuntu-16-04-x64 -k 1587367 ulsah-ubuntu
tugboat ssh ulsah-ubuntu   # 登录

DigitalOcean启动最快(约55秒),价格最低($5/月起)。

5. 成本控制(关键)

5.1 云账单构成

费用项 计费方式 常见陷阱
计算资源(VPS/负载均衡) 每小时(AWS/DO)或每分钟(GCP) 闲置实例忘记关闭
网络流量(入站+出站、区间/地域间) 每GiB 跨AZ/跨地域复制数据(数据库集群)
存储(块存储/对象存储/快照) 每月每GiB + IOPS EBS Provisioned IOPS 昂贵
托管服务(RDS等) 按实例规格+存储 未使用的数据库实例

5.2 省钱策略

策略 说明
预留实例(AWS) 预付长期费用(1年/3年),折扣巨大,但绑定实例族,灵活性差
持续使用折扣(GCP) 自动应用,无需预付,月底最大折扣60%,灵活性高
现货实例(AWS Spot) 拍卖闲置资源,折扣大,但可被随时终止,适合批处理
可抢占实例(GCP Preemptible) 最多运行24小时,价格低,适合容错工作
自动伸缩 低峰期释放资源,节省成本
限制AZ数量 跨AZ复制数据会产生费用,2个AZ比3个便宜
使用CDN 分发大文件(视频/图片),减少直接出站流量费用
监控与标签 使用Cloudability/CloudHealth分析账单,按标签/服务/地域分类

5.3 费用控制检查清单

  • 关闭未使用的实例和负载均衡器
  • 删除未挂载的EBS卷和未使用的快照
  • 检查跨AZ/跨地域数据传输量
  • 避免过度配置IOPS(EBS Provisioned IOPS昂贵)
  • 使用预算警报(AWS Budgets、GCP Budget Alert)
  • 使用成本标签进行归因分析

6. 本章核心命令速查表

命令 功能 平台
aws configure 设置AWS凭证和默认地域 AWS
aws ec2 run-instances 创建EC2实例 AWS
aws ec2 describe-instances 列出实例 AWS
aws ec2 get-console-output 查看控制台日志 AWS
aws ec2 stop/terminate-instances 停止/终止实例 AWS
gcloud init 初始化GCP环境 GCP
gcloud compute instances create 创建GCE实例 GCP
gcloud compute ssh SSH登录GCE实例 GCP
gcloud compute images list 列出可用镜像 GCP
tugboat authorize 配置DigitalOcean API DO
tugboat create -i image -k key 创建Droplet DO
tugboat ssh droplet-name SSH登录Droplet DO
tugboat destroy droplet-name 删除Droplet DO
terraform apply 应用IaC模板 多云
aws cloudformation create-stack 创建CloudFormation堆栈 AWS

DBA视角补充

  • 数据库上云首选托管服务:AWS RDS、GCP Cloud SQL等托管数据库服务大幅减轻DBA运维负担(备份、补丁、高可用由供应商负责),但成本较高,适合核心生产库。
  • 自建数据库在云上:如需要在EC2上自建MySQL/PostgreSQL,务必使用EBS卷持久化数据(避免Instance Store重启丢数据),并定期创建快照。
  • 跨AZ部署数据库集群:如使用Galera/PostgreSQL同步复制跨AZ,区间流量费用可能超过计算费用,需仔细评估RPO/RTO与成本。
  • 无服务器数据库:AWS Aurora Serverless、GCP Firestore等按请求计费,适合不稳定的工作负载。
  • 成本监控:数据库实例通常是云账单中的最大单项支出,务必设置预算警报,避免意外超支(如被DDoS攻击导致出站流量暴增)。
  • 备份策略:数据库快照存储在S3/GCS中,有存储费用。制定合理的快照保留策略(如保留最近7天,每月保留一份),及时删除过期快照。