AWS 雲計算實戰 (Amazon Web Services in Action)
內容描述
物理數據中心需要很多設備,並且需要投入大量的時間和資源來管理。如果用戶需要數據中心,又不希望自己搭建,Amazon Web Services(AWS)可能是一個不錯的解決方案。無論用戶是想分析實時數據,搭建軟件即服務架構,還是運行一個電子商務的網站,AWS都可以為其提供可靠的基於雲平臺的可擴展服務。
本書為讀者介紹AWS雲平臺的計算、存儲和網絡服務。讀者將從雲計算的概覽開始,然後學習如何創建自己的賬戶,學習如何通過調用AWS API以編程的方式控制AWS的每個組件,以實現基礎設施的自動化,學習存儲數據的選項和相關技巧,學習如何使用私有網絡隔離自己的系統來增強安全性。最後,本書還會教讀者如何針對高可用性和容錯進行設計。
本書主要內容
●雲計算概念和模式的概述。
●在AWS上部署應用程序。
●集成亞馬遜的預構建服務。
●管理EC2服務器來降低成本。
本書面向將分佈式應用遷移到AWS平臺的開發者和DevOps工程師。
目錄大綱
第一部分AWS雲計算起步
第1章什麼是Amazon Web Services 3
1.1什麼是雲計算4
1.2 AWS可以做什麼4
1.2.1託管一家網店5
1.2.2在專有網絡內運行一個Java EE應用6
1.2 .3滿足法律和業務數據歸檔的需求7
1.2.4實現容錯的系統架構8
1.3如何從使用AWS上獲益9
1.3.1創新和快速發展的平台9
1.3.2解決常見問題的服務9
1.3. 3啟用自動化10
1.3.4靈活的容量(可擴展性) 10
1.3.5為失效而構建(可靠性) 11
1.3.6縮短上市的時間11
1.3.7從規模經濟中受益11
1.3.8全球化11
1.3.9專業的合作夥伴12
1.4費用是多少12
1.4.1免費套餐12
1.4.2賬單樣例13
1.4.3按使用付費的機遇14
1.5同類對比14
1.6探索AWS服務16
1.7與AWS交互18
1.7.1管理控制台19
1.7.2命令行接口20
1.7.3 SDK 20
1.7.4藍圖21
1.8創建一個AWS賬戶22
1.8.1註冊22
1.8.2登錄26
1.8.3創建一個密鑰對28
1.8.4創建計費告警31
1.9小結31
第2章一個簡單示例:5分鐘搭建WordPress站點33
2.1創建基礎設施33
2.2探索基礎設施39
2.2.1資源組40
2.2.2 Web服務器41
2.2.3負載均衡器42
2.2.4 MySQL數據庫44
2.3成本是多少45
2.4刪除基礎設施46
2.5小結48
第二部分搭建包含服務器和網絡的虛擬基礎設施
第3章使用虛擬服務器:
EC2 51
3.1探索虛擬服務器51
3.1.1啟動虛擬服務器52
3.1.2連接到虛擬服務器60
3.1.3手動安裝和運行軟件63
3.2監控和調試虛擬服務器64
3.2.1顯示虛擬服務器的日誌64
3.2.2監控虛擬服務器的負載65
3.3關閉虛擬服務器66
3.4更改虛擬服務器的容量67
3.5在另一個數據中心開啟虛擬服務器69
3.6分配一個公有IP地址72
3.7向虛擬服務器添加額外的網絡接口74
3.8優化虛擬服務器的開銷77
3.8.1預留虛擬服務器78
3.8.2對未使用的虛擬服務器競價79
3.9小結82
第4章編寫基礎架構:命令行、SDK和CloudFormation 83
4.1基礎架構即代碼84
4.1.1自動化和DevOps運作85
4.1.2開發一種基礎架構語言:JIML 85
4.2使用命令行接口88
4.2.1安裝CLI 88
4.2. 2配置CLI 89
4.2.3使用CLI 94
4.3使用SDK編程98
4.3.1使用SDK控制虛擬服務器:nodecc 98
4.3.2 nodecc如何創建一台服務器99
4.3.3 nodecc是如何列出服務器並顯示服務器的詳細信息101
4.3.4 nodecc如何終止一台服務器102
4.4使用藍圖來啟動一台虛擬服務器102
4.4.1 CloudFormation模板解析103
4.4.2創建第一個模板107
4.5小結113
第5章自動化部署:CloudFormation、Elastic Beanstalk和OpsWorks 114
5.1在靈活的雲環境中部署應用程序115
5.2使用CloudFormation在服務器啟動時運行腳本116
5.2.1在服務器啟動時使用用戶數據來運行腳本116
5.2.2在虛擬服務器上部署OpenSwan作為VPN服務器116
5.2.3從零開始,而不是更新已有的服務器121
5.3使用Elastic Beanstalk部署一個簡單的網站應用121
5.3.1 Elastic Beanstalk的組成部分121
5.3.2使用Elastic Beanstalk部署一個Node.js應用Etherpad 122
5.4使用OpsWorks部署多層架構應用126
5.4.1 OpsWorks的組成部分127
5.4.2使用OpsWorks部署一個IRC聊天應用128
5.5比較部署工具137
5.5.1對部署工具分類138
5.5.2比較部署服務138
5.6小結139
第6章保護系統安全:IAM、安全組和VPC 140
6.1誰該對安全負責141
6.2使軟件保持最新142
6.2.1檢查安全更新142
6.2.2在服務器啟動時安裝安全更新143
6.2.3在服務器運行時安裝安全更新144
6.3保護AWS賬戶安全145
6.3 .1保護AWS賬戶的root用戶安全146
6.3.2 IAM服務146
6.3.3用於授權的策略147
6.3.4用於身份認證的用戶和用於組織用戶的組149
6.3.5用於認證AWS的角色150
6.4控制進出虛擬服務器的網絡流量152
6.4.1使用安全組控制虛擬服務器的流量153
6.4.2允許ICMP流量154
6.4.3允許SSH流量155
6.4.4允許來自源IP地址的SSH流量156
6.4.5允許來自源安全組的SSH流量157
6.4.6用PuTTY進行代理轉發159
6.5在雲中創建一個私有網絡:虛擬私有云160
6.5.1創建VPC和IGW 162
6.5.2定義公有堡壘主機子網162
6.5.3添加私有Apache網站服務器子網164
6.5.4在子網中啟動服務器165
6.5.5通過NAT服務器從私有子網訪問互聯網166
6.6小結168
第三部分在雲上保存數據
第7章存儲對象:S3和Glacierr 171
7.1對象存儲的概念171
7.2 Amazon S3 172
7.3備份用戶的數據173
7.4歸檔對像以優化成本175
7.4.1創建S3存儲桶配合Glacier使用175
7.4.2添加生命週期規則到存儲桶176
7.4.3測試Glacier和生命週期規則179
7.5程序的方式存儲對象181
7.5.1設置S3存儲桶181
7.5.2安裝使用S3的互聯網應用182
7.5.3檢查使用SDK訪問S3的代碼182
7.6使用S3來實現靜態網站託管184
7.6.1創建存儲桶並上傳一個靜態網站185
7.6.2配置存儲桶來實現靜態網站託管185
7.6.3訪問S3上託管的靜態網站186
7.7對象存儲的內部機制187
7.7.1確保數據一致性187
7.7.2選擇合適的鍵188
7.8小結189
第8章在硬盤上存儲數據:EBS和實例存儲190
8.1網絡附加存儲191
8.1.1創建EBS卷並掛載到服務器191
8.1.2使用彈性數據塊存儲192
8.1.3玩轉性能194
8.1.4備份數據195
8.2實例存儲197
8.2.1使用實例存儲200
8.2.2性能測試200
8.2.3備份數據201
8.3比較塊存儲解決方案201
8.4使用實例存儲和EBS卷提供共享文件系統202
8.4.1 NFS的安全組203
8.4.2 NFS服務器和卷204
8.4.3 NFS服務器安裝和配置腳本206
8.4.4 NFS客戶端207
8.4.5通過NFS共享文件208
8.5小結209
第9章使用關係數據庫服務:RDS 210
9.1啟動一個MySQL數據庫212
9.1.1用Amazon RDS數據庫啟動WordPress平台212
9.1.2探索使用MySQL引擎的RDS數據庫實例215
9.1.3 Amazon RDS的定價217
9.2將數據導入數據庫218
9.3備份和恢復數據庫220
9.3.1配置自動快照220
9.3.2手動創建快照221
9.3.3恢復數據庫222
9.3.4複製數據庫到其他的區域223
9.3.5計算快照的成本224
9.4控制對數據庫的訪問224
9.4.1控制對RDS數據庫的配置的訪問控制225
9.4.2控制對RDS數據庫的網絡訪問226
9.4.3控制數據訪問226
9.5可以依賴的高可用的數據庫227
9.6調整數據庫的性能229
9.6.1增加數據庫資源229
9.6.2使用讀副本來增加讀性能231
9.7監控數據庫232
9.8小結234
第10章面向NoSQL數據庫服務的編程:DynamoDB 235
10.1操作DynamoDB 236
10.1.1管理236
10.1.2價格237
10.1.3與RDS對比237
10.2開發者需要了解的DynamoDB內容238
10.2.1表、項目和屬性238
10.2.2主鍵238
10.2.3與其他NoSQL數據庫的對比239
10.2.4 DynamoDB本地版239
10.3編寫任務管理應用程序239
10.4創建表241
10.4.1使用分區鍵的用戶表242
10.4.2使用分區鍵和排序鍵的任務表243
10.5添加數據245
10.5.1添加一個用戶246
10.5.2添加一個任務247
10.6獲取數據247
10.6.1提供鍵來獲取數據248
10.6.2使用鍵和過濾來查詢249
10.6. 3更靈活地使用二級索引查詢數據251
10.6.4掃描和過濾表數據253
10.6.5最終一致地數據提取254
10.7刪除數據255
10.8修改數據256
10.9擴展容量256
10.10小結258
第四部分在AWS上搭架構
第11章實現高可用性:可用區、自動擴展以及
CloudWatch 263
11.1使用CloudWatch恢復失效的服務器264
11.1.1建立一個CloudWatch告警266
11.1.2基於CloudWatch對虛擬服務器監控與恢復267
11.2從數據中心故障中恢復270
11.2.1可用區:每個區域有多個數據中心271
11.2.2使用自動擴展確保虛擬服務器一直運行275
11.2.3在另一個可用區中通過自動擴展恢復失效的虛擬服務器277
11.2.4陷阱:網絡附加存儲恢復280
11.2.5陷阱:網絡接口恢復283
11.3分析災難恢復的需求287
11.4小結288
第12章基礎設施解耦:ELB與SQS 289
12.1利用負載均衡器實現同步解耦290
12.1.1使用虛擬服務器設置負載均衡器291
12.1.2陷阱:過早地連接到服務器293
12.1.3更多使用場景294
12.2利用消息隊列實現異步解耦300
12.2.1將同步過程轉換成異步過程300
12.2.2 URL2PNG應用的架構301
12.2.3創建消息隊列302
12 .2.4以程序化的方法處理消息302
12.2.5程序化地消費消息303
12.2.6 SQS消息傳遞的局限性306
12.3小結307
第13章容錯設計308
13.1使用冗餘EC2實例提高可用性310
13.1.1冗餘可以去除單點故障310
13.1. 2冗餘需要解耦312
13.2使代碼容錯的注意事項313
13.2.1讓其崩潰,但也重試313
13.2.2冪等重試使得容錯成為可能314
13.3構建容錯Web應用:Imagery 316
13.3.1冪等圖片狀態機318
13.3.2實現容錯Web服務320
13.3.3實現容錯的工作進程來消費SQS消息326
13.3.4部署應用329
13.4小結336
第14章向上或向下擴展:自動擴展和CloudWatch 337
14.1管理動態服務池339
14.2使用監控指標和時間計劃觸發擴展342
14.2.1基於時間計劃的擴展343
14.2.2基於CloudWatch參數的擴展344
14.3解耦動態服務器池347
14.3.1由負載均衡器同步解耦擴展動態服務器池349
14.3.2隊列異步解耦擴展動態服務器池354
14.4 小結356
作者介紹
作者:[德]安德烈亞斯·威蒂格(Andreas Wittig)邁克爾·威蒂格(Michael Wittig)
譯者:費良宏、張波、黃濤
安德烈亞斯·威蒂格(Andreas Wittig)和邁克爾·威蒂格(Michael Wittig)都是軟件工程師,也是專注於AWS和Web開發的顧問專家。