UNIX/Linux系统管理技术手册-读书笔记-第九章
《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)
安装:
创建EC2实例:
查看控制台日志(调试启动故障):
|
|
停止/终止实例:
密钥对需提前生成(
ssh-keygen)并上传到AWS控制台。默认安全组不允许SSH,需调整规则。
4.2 GCP(gcloud)
安装与初始化:
|
|
创建实例:
|
|
SSH登录(gcloud包装):
|
|
可抢占实例(低价格,最多24小时,可被终止):
|
|
4.3 DigitalOcean(tugboat)
安装:
创建Droplet:
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天,每月保留一份),及时删除过期快照。
文章作者 会写代码的小郎中
上次更新 2011-06-19
许可协议 CC BY-NC-ND 4.0