內容簡介
本書是市場上第一本完整剖析、深入介紹亞馬遜
雲計算服務(Amazon Web Services,AWS)套用的圖書,作者林允溥是有多年 AWS操作經驗的專家,擅長構建社群網站和遊戲網站的雲計算套用系統,本書融入了作者大量的實踐經驗。
本書以目前最成功的 AWS(亞馬遜雲計算服務企業)為主題,詳細講解 AWS的實際套用經驗、遇到的各種問題與解決方法,並介紹企業利用 AWS架設自己的雲端資料庫、網路套用系統的方法,以及大型網路公司(如 Twitter、Zynga)利用 AWS的優勢,快速更新自己服務的做法。
本書適合雲計算架構師、雲計算開發人員、雲計算套用設計人員,以及想直接使用 AWS構建自己網站的企業用戶參考。
圖書目錄
第1 章 誰應該使用雲計算
11 適應網路未來的雲計算 2
網路=水、電等民生資源 2
雲計算就像把發電機交給專責發電廠 2
雲計算是因為有這樣的需求而誕生 2
流言終結者:雲計算其實不是什麼 3
12 雲計算的具體服務內容 4
如何定義雲計算 4
通過雲端服務讓系統運算升級 5
IaaS(Infrastructure as a Service) 5
PaaS(Platform as a Service) 6
SaaS(Software as a Service) 6
13 雲計算帶來的優勢競爭力 7
傳統運算架構的局限 7
雲計算更有可伸縮性 8
雲計算更節省成本 8
雲計算更可用、更持久 9
雲計算商業性優點快覽 10
14 使用雲計算的風險評估 10
廠商鎖定(vendor locks in)考慮 10
部署可用性考慮 10
網路穩定性考慮 11
數據安全性考慮 11
數據機密性考慮 11
15 適合使用雲計算的情境 12
雲計算技術性優點 12
新創公司(Startup companies) 12
高可擴展性的網路套用 12
大量的運算需求 12
備份與災害恢復 13
開發與測試 13
第2 章 雲計算領導者AWS
21 AWS是什麼 15
Amazon與AWS 15
AWS的組合式服務概念 15
AWS特色一覽 16
為什麼我們尚未善用AWS 17
22 案例:採用AWS創造更多利潤 17
新興網站偏愛使用EC2 17
Zynga用AWS應付用戶成長 18
PlayFish用AWS快速推出新遊戲 18
Twitter用AWS管理存儲空間 18
Reddit用AWS構建資料庫 19
MySpace用AWS測試新服務 19
Justintv用AWS節省單位成本 19
Smugmug用AWS省下設備費 19
Animoto用AWS應付瞬間超大流量 19
Newsweek用AWS開源節流 19
23 如何開始使用AWS 20
地區和所在地 20
申請AWS賬號 20
申請個別服務 23
24 AWS上使用的憑證和識別碼 26
訪問密鑰(Access Keys) 26
X509憑證 28
密鑰對(Key Pairs) 29
AWS賬號和密碼 29
AWS MFA(Multi-Factor Authentication) 30
AWS賬號識別碼和標準化用戶識別碼 31
第3 章 AWS上手必備工具
31 AWS服務快速比較 33
32 使用AWS的一般注意事項 34
網際網路傳輸收費節約要訣 34
失敗重試時的要訣 35
冪等函式避免數據不一致 35
注意伺服器時間校定 36
避免XML交換格式錯誤 36
免費使用層級(AWS Free Usage Tier) 36
AWS識別及訪問管理(Identify and Access Management) 37
AWS的訪問策略語言(Access Policy Language,APL) 37
33 AWS圖形接口工具 38
AWS Management Console 38
AWS Toolkit for Eclipse 39
S3fox 46
Elasticfox 46
jetS3t 46
AWS收費計算器 46
34 AWS應用程式接口 46
EC2 API Tools和EC2 AMI Tools 47
安裝 ec2-api-tools 47
安裝 ec2-ami-tools 49
35 AWS SDK(開發套件) 50
AWS已經針對手持設備推出SDK 50
AWS SDK for Java 50
AWS SDK for NET 51
AWS SDK for PHP 51
AWS SDK for Android 52
AWS SDK for iOS 52
AWS開發中心 52
s3sync 53
boto 54
jclouds 54
typica 54
cloud tools 55
s3tools 55
36 AWS的其他資源 55
alesticcom 55
AWS的blog 55
AWS的開發者檔案 56
其他資源的網址 56
第4 章 AWS基礎: S3與雲端存儲服務
41 AWS的存儲功能 58
42 一般性的存儲功能:S3 59
S3解決動態數據存儲問題 59
S3的特性 60
容器與對象 61
容器的地區(region) 63
低備份存儲(Reduced Redundancy Storage) 64
對象版本 65
標頭(headers)及其他數據 66
訪問控制列表(Access Control List) 67
對象名稱瀏覽(key listing) 67
多部分上傳(Multipart Upload) 68
日誌記錄(logging)和範圍讀取(Range) 68
用AWS Management Console開始操作S3 69
43 簡單資料庫:SimpleDB 77
NoSQL的潮流 77
SimpleDB的特性 79
SimpleDB的相關名詞 81
再回顧一致性 82
SimpleDB的查詢語言 83
數值數據 85
日期數據 86
排序 86
計數 87
引號(quoting)規則 87
保留字 87
查詢的調校 88
數據分割 89
使用AWS SDK for Java操作SimpleDB 89
建立Domain 91
列出Domain清單 91
查看Domain元數據 91
讀取數據 92
新增或更新數據 92
條件式新增(更新)數據 93
查詢數據 95
刪除數據 95
條件式刪除數據 96
批處理更新與刪除 96
刪除Domain 97
實際套用訣竅 97
44 資料庫的另一選擇:RDS 98
實際的存儲需求 99
RDS的概念:DB Instance 100
維護與備份 105
多所在地部署 106
安全組 107
設定資料庫安全組和資料庫參數組 109
建立DB Instance 111
使用與設定DB Instance 112
備份與恢復 114
建立讀取副本 116
從原本的MySQL移植到RDS 116
第5 章 AWS核心: EC2與其相關服務
51 什麼是EC2 118
EC2是AWS架構體系中的核心服務 118
從EC2服務特色看雲計算實質 119
使用EC2的優點 119
EC2開機?亞馬遜機器映像檔案 (AMI) 120
52 EC2虛擬機的基礎結構 120
EC2的AMI root device比較 121
EC2的機器類型比較 122
EC2機器收費標準比較 122
EC2新機器類型:集群運算虛擬機 123
EC2新機器類型:集群運算GPU虛擬機 124
32位或64位?這是個大問題 125
53 EC2虛擬機的延伸結構 125
Instance Storage(虛擬機存儲) 125
EBS(Elastic Blocking Store) 126
在EC2上使用微軟Windows系統 127
EC2雲端機器的地區與所在地 128
54 EC2的一些延伸問題與解決 129
EC2的IP位址及DNS名稱問題與解決 129
解決利用EC2傳送郵件的需求 131
EC2的防火牆安全組(security group) 131
元數據(metadata)及用戶數據(user-data) 132
EC2上怎么分配I/O資源 133
55 EC2開機操作實戰範例 133
登錄AWS Management Console 133
申請EC2的Key Pairs 135
管理安全組 137
開啟一台虛擬機 140
進入之前建立的機器 147
第6 章 AWS高級: 實現EC2部署策略
61 使用公開EBS-backed AMI 152
如何搜尋公開的AMI 152
用EBS root partition建立EBS-backed AMI 155
用掛載的EBS volume建立EBS-backed AMI 156
62 建立S3-backed AMI 160
用來源機器的root device建立S3-backed AMI 161
使用alestic的腳本建立S3-backed AMI 163
使用loopback檔案建立S3-backed AMI 164
63 AMI實現疑難問題解決 168
做出無法開機的AMI怎么辦 168
清理資源 169
虛擬機(EC2 instance)的屬性修改 169
AMI的屬性修改 174
64 AMI有效實戰策略分析 174
一般性AMI 175
特定性AMI 176
參考RightScale的實現流程 177
65 EC2自動初始化機制 177
EC2的user-data 178
使用ec2-run-user-data 178
使用runurl 179
管理EC2虛擬機常用的工具 181
卷標功能 182
第7 章 AWS架構關鍵1: 組建高可擴展性系統
71 高可擴展性和雲計算 184
什麼是可擴展性(scalability) 184
可擴展性為什麼重要 185
傳統模式:向上延展(scale up) 185
傳統模式:向外延展(scale out) 185
雲計算解決延展問題 186
追求高可擴展性 186
常見的高可擴展性架構模式 187
如何實現有效率同步在線上 188
72 實現負載平衡的做法 189
負載平衡的選擇 189
Round robin DNS 190
軟體的負載平衡 191
73 彈性負載平衡(ELB) 191
負載平衡器(Load Balancer)的概念 192
地區和所在地 193
安裝Elastic Load Balancing API Tools 193
建立一個HTTP負載平衡器 195
讓負載平衡器分配請求到多個所在地 197
暫停(disable)所在地 199
拆掉負載平衡器(tear down a Load Balancer) 201
建立定時的黏著在線上狀態(Sticky session) 201
建立自定義的黏著在線上狀態(Sticky session) 203
74 自動延展(Auto Scaling) 205
Auto Scaling的概念 205
自動延展組(Auto Scaling Group) 206
觸發器(trigger) 207
重新平衡(rebalancing) 208
安裝Auto Scaling API Tools 209
建立一個自動延展的EC2集群 210
建立多所在地自動延展的EC2集群 213
合併自動延展組 214
刪除自動延展組 215
停止使用自動延展組 215
第8 章 AWS架構關鍵2: 異步訊息構建策略
81 什麼是異步訊息傳遞 218
異步的好處 218
“訊息導向中間件”簡介 218
AWS中的訊息傳遞服務 220
82 AWS的簡單佇列服務(SQS) 220
使用SQS的優點 221
使用SQS要注意的地方 221
訊息佇列Queue 222
可讀取(Visibility)和讀取逾時(Visibility timeout) 223
SQS里的訊息的生命周期 224
SQS的訪問控制 224
在SQS使用訪問許可權策略語言的額外限制 225
使用AWS SDK for Java操作SQS 225
建立Queue 226
查看Queue 227
查看Queue的屬性 228
更改Queue的屬性 229
更改Queue的訪問許可權 230
從Queue收送訊息 232
更改讀取逾時以及刪除訊息 234
刪除Queue 235
83 AWS的簡單通知服務(SNS) 235
建立主題(Topic) 236
訂閱主題 238
發布訊息到主題 240
停止訂閱 242
刪除主題 242
在SNS使用訪問許可權策略語言的額外限制 243
第9 章 AWS架構關鍵3: 高可用性的雲計算
91 為何高可用性重要 246
改進系統架構以適用於雲計算 246
雲計算有新的策略方法 247
AWS與傳統成本的比較 247
92 實現高可用性的基本AWS套用 249
使用多重所在地(multiple availability zones) 249
使用EIP(Elastic IP Addresses)實現重定向 249
93 EC2 instances掛掉了如何處理 254
EC2虛擬機沒有回應的檢查步驟 254
快速恢復掛掉的EC2 虛擬機 257
94 CloudFront改進用戶體驗 261
提供用戶最快速的網站使用經驗 261
內容傳遞網路(CDN) 262
CloudFront的工作原理 263
檔案逾時(expiration)的處理策略 266
檔案移除(eviction)與主動清除 267
發布單位(distribution) 268
使用自定義來源伺服器(Custom Origins) 268
從S3改用CloudFront 270
用AWS Management Console操作CloudFront 272
檔案的URL 277
訪問日誌 278
服務流媒體(streaming media) 279
服務私有內容(private content) 279
使用EIP(彈性IP位址) 285
使用Hosts檔案 286
96 用Amazon CloudWatch監視系統健康 286
CloudWatch的概念 288
使用CloudWatch 291
安裝CloudWatch API Tools 293
用mon-list-metrics列出測量項目 295
用mon-get-stats讀取統計數據 295
第10 章 AWS活用策略: 企業雲端最佳化方案
101 保護雲端數據安全 297
數據傳輸的問題 297
數據存儲加密 298
善用EC2的安全組(security groups) 299
定期更新OS的安全性更新 300
102 如何善用花在AWS上的每塊錢 300
使用EC2 Reserved Instances 301
使用RDS Reserved虛擬機 305
使用Spot Instances處理大量數據 306
103 用分散式運算處理大量數據 312
MapReduce與Hadoop 312
雲端上的Hadoop:EMR(Elastic MapReduce) 313
數據安全性 315
Hadoop 315
工作流程(Job Flow) 317
JSON配置檔案(JSON Configuration Files) 321
用AWS Management Console操作EMR 322
使用Elastic MapReduce Ruby Client 328
使用初始程式 330
除錯流程 332
批處理執行工作流程 337
其他常見的操作 338
一般注意事項 339
104 用虛擬私有雲擴張既有系統 340
VPC的名詞 341
地區和所在地 341
VPC的特性 342
VPC收費 342
建立VPC的流程 343
用命令行工具建立VPC資源 343
建立VPC 344
建立子網段 345
建立客戶端網關 347
建立VPN在線上 349
建立VPN連線 351
在VPC裡面創建EC2虛擬機 352
使用特定的IP位址 352
使用DHCP功能 353
刪除VPC 355
更換VPC通道證書 356
附錄A AWS其他服務接口
Amazon Beanstalk 358
Amazon Simple Email Service 358
AWS CloudFormation 358
Amazon彈性付費服務(Amazon Flexible Payments Service) 358
Amazon開發者付費服務(Amazon DevPay) 359
Amazon商務實現服務(Amazon Fulfillment Web Service) 359
Amazon人力外包(Amazon Mechanical Turk) 359
AWS輸入/輸出(AWS Import/Export ) 359
AWS商業支持(AWS Premium Support ) 360
Alexa Top Sites與Alexa Web Information Service 360
Amazon Route 53 360
解決方案提供商(solution providers) 360
附錄B AWS競爭對手介紹
Google App Engine(PaaS) 362
Google App Engine和AWS如何取捨 362
Microsoft Windows Azure Platform(PaaS) 362
Rackspace Cloud 363
公有雲和私有雲 363