Amazon Web Services云計算實戰(zhàn)(第2版)
定 價:129.8 元
- 作者:[德] 邁克爾·威蒂格(Michael Wittig) [德]安德烈亞斯·威蒂格(Andreas Wittig)
- 出版時間:2023/5/1
- ISBN:9787115609298
- 出 版 社:人民郵電出版社
- 中圖法分類:F713.36
- 頁碼:434
- 紙張:
- 版次:02
- 開本:16開
Amazon Web Services(AWS)是Amazon公司的云計算平臺,它提供了一整套基礎(chǔ)設(shè)施和應用服務(wù),可以幫助用戶在云中運行幾乎一切應用。本書介紹AWS云平臺的核心服務(wù),如計算、存儲網(wǎng)絡(luò)等內(nèi)容。讀者可以從本書了解在云上實現(xiàn)自動化,保證安全,實現(xiàn)高可用、容錯和海量擴展的系統(tǒng)架構(gòu)的best實踐。
本書分為4部分,共17章。本書從介紹AWS的基本概念開始,引入具體的應用示例,讓讀者對云計算和AWS平臺有整體的了解;然后講解如何搭建包含虛擬機和網(wǎng)絡(luò)的基礎(chǔ)設(shè)施;在此基礎(chǔ)上,深入介紹如何在云上存取數(shù)據(jù),讓讀者熟悉存儲數(shù)據(jù)的方法和技術(shù);最后展開討論在AWS上如何設(shè)計架構(gòu),讓讀者了解實現(xiàn)高可用性、高容錯和高擴展性的best實踐。
本書第2版全面修訂了第1版中的各章內(nèi)容,并涵蓋AWS的新添加的服務(wù),包括使用AWS Lambda的無服務(wù)器基礎(chǔ)設(shè)施,與EFS共享數(shù)據(jù)以及使用Amazon ElastiCache的內(nèi)存數(shù)據(jù)存儲等。
1.AWS云計算平臺的實戰(zhàn)指南:涵蓋了AWS云平臺的核心服務(wù)、best實踐以及如何在云上構(gòu)建系統(tǒng)架構(gòu)等內(nèi)容。是一本適合開發(fā)人員、IT運維工程師和企業(yè)用戶使用AWS的實戰(zhàn)指南。
2.作者經(jīng)驗豐富:邁克爾·威蒂格和安德烈亞斯·威蒂格是AWS認證的專業(yè)級AWS解決方案架構(gòu)師和DevOps工程師,擁有豐富的AWS遷移和運行工作負載的顧問經(jīng)驗
3.新版重磅升級:第2版修訂了第1版中的各章內(nèi)容,并涵蓋了AWS新添加的服務(wù),如使用AWS Lambda的無服務(wù)器基礎(chǔ)設(shè)施,與EFS共享數(shù)據(jù)等。讀者可以了解到新的AWS技術(shù)發(fā)展狀況,掌握新的AWS技能。
4.理論結(jié)合實踐:通過具體應用示例,讓讀者深入了解云計算和AWS平臺,同時注重講解如何搭建包含虛擬機和網(wǎng)絡(luò)的基礎(chǔ)設(shè)施,讓讀者了解實現(xiàn)高可用性、高容錯和高擴展性的best實踐。
6.適合不同讀者群體:開發(fā)人員、IT運維工程師和企業(yè)用戶使用AWS的實戰(zhàn)指南。無論你是初學者還是有經(jīng)驗的AWS用戶,本書都可以幫助你快速了解AWS的核心服務(wù)和best實踐,提高工作效率和質(zhì)量。
邁克爾·威蒂格(Michael Wittig)和安德烈亞斯·威蒂格(Andreas Wittig)是專注于Amazon Web Services(AWS)的軟件工程師和DevOps工程師。2013年,這對兄弟將一家德國銀行的整個IT基礎(chǔ)設(shè)施遷移到了AWS上。這在德國銀行界算是首例。自2015年以來,他們一直擔任顧問,幫助客戶在AWS上遷移和運行工作負載。他們專注于基礎(chǔ)設(shè)施即代碼、持續(xù)部署、無服務(wù)器、Docker和安全等領(lǐng)域,也在Amazon云上構(gòu)建SaaS產(chǎn)品。兩人都是AWS認證的專業(yè)級AWS解決方案架構(gòu)師(AWS Certified Solutions Architect-Professional)以及AWS認證的專業(yè)級DevOps工程師(AWS Certified DevOps Engineer-Professional)。此外,他們還喜歡通過本書、博客以及在線和現(xiàn)場培訓(如AWS in Motion)與他人分享知識,教授他人如何使用AWS。
第 一部分 AWS 云計算起步
第 1 章 什么是 AWS 3
1.1 什么是云計算 4
1.2 AWS 可以做什么 4
1.2.1 托管一家網(wǎng)店 5
1.2.2 在專用網(wǎng)絡(luò)內(nèi)運行 Java EE 應用 6
1.2.3 實施高可用的系統(tǒng) 7
1.2.4 從批量處理基礎(chǔ)設(shè)施的低成本中獲益 8
1.3 如何從使用 AWS 上獲益 9
1.3.1 創(chuàng)新和快速發(fā)展的平臺 9
1.3.2 解決常見問題的服務(wù) 9
1.3.3 啟用自動化 9
1.3.4 靈活的容量(可擴展性) 10
1.3.5 為失效而構(gòu)建(可靠性) 10
1.3.6 縮短上市的時間 10
1.3.7 從規(guī)模經(jīng)濟中受益 11
1.3.8 全球基礎(chǔ)設(shè)施 11
1.3.9 專業(yè)的合作伙伴 11
1.4 費用是多少 11
1.4.1 免費套餐 12
1.4.2 賬單樣例 12
1.4.3 按使用付費的機遇 13
1.5 同類對比 14
1.6 探索 AWS 服務(wù) 14
1.7 與 AWS 交互 17
1.7.1 管理控制臺 18
1.7.2 CLI 18
1.7.3 SDK 19
1.7.4 藍圖 20
1.8 創(chuàng)建一個 AWS 賬戶 20
1.8.1 注冊 21
1.8.2 登錄 25
1.8.3 創(chuàng)建一個密鑰對 26
1.9 創(chuàng)建賬單警報跟蹤 AWS 賬單 29
1.10 小結(jié) 32
第 2 章 一個簡單示例:5 分鐘搭建WordPress 站點 33
2.1 創(chuàng)建基礎(chǔ)設(shè)施 34
2.2 探索基礎(chǔ)設(shè)施 40
2.2.1 資源組 40
2.2.2 虛擬機 41
2.2.3 負載均衡器 43
2.2.4 MySQL 數(shù)據(jù)庫 44
2.2.5 網(wǎng)絡(luò)文件系統(tǒng) 46
2.3 成本是多少 47
2.4 刪除基礎(chǔ)設(shè)施 48
2.5 小結(jié) 49
第二部分 搭建由計算機和網(wǎng)絡(luò)組成的虛擬基礎(chǔ)設(shè)施
第 3 章 使用虛擬機:EC2 53
3.1 探索虛擬機 53
3.1.1 啟動虛擬機 54
3.1.2 連接到虛擬機 65
3.1.3 手動安裝和運行軟件 68
3.2 監(jiān)控和調(diào)試虛擬機 69
3.2.1 顯示虛擬機的日志 69
3.2.2 監(jiān)控虛擬機的負載 70
3.3 關(guān)閉虛擬機 71
3.4 更改虛擬機的大小 72
3.5 在另一個數(shù)據(jù)中心啟動虛擬機 75
3.6 分配一個公有 IP 地址 78
3.7 向虛擬機添加額外的網(wǎng)絡(luò)接口 80
3.8 優(yōu)化虛擬機的開銷 84
3.8.1 預留虛擬機 85
3.8.2 對未用虛擬機出價 87
3.9 小結(jié) 91
第 4 章 編寫基礎(chǔ)設(shè)施: 命令行、SDK 和 CloudFormation 92
4.1 基礎(chǔ)設(shè)施即代碼 94
4.1.1 自動化和 DevOps 遷移 94
4.1.2 開發(fā)一種基礎(chǔ)設(shè)施語言:JIML 94
4.2 使用 CLI 98
4.2.1 為什么要自動化 98
4.2.2 安裝 CLI 98
4.2.3 配置 CLI 99
4.2.4 使用 CLI 102
4.3 使用 SDK 編程 106
4.3.1 使用 SDK 控制虛擬機:nodecc 106
4.3.2 nodecc 如何創(chuàng)建一臺虛擬機 107
4.3.3 nodecc 如何列出虛擬機并顯示虛擬機的詳細信息 108
4.3.4 nodecc 如何終止一臺虛擬機 109
4.4 使用藍圖來啟動一臺虛擬機 110
4.4.1 CloudFormation 模板解析 111
4.4.2 創(chuàng)建第 一個模板 114
4.5 小結(jié) 120
第 5 章 自動化部署: CloudFormation、 Elastic Beanstalk 和 OpsWorks 121
5.1 在靈活的云環(huán)境中部署應用 122
5.2 比較部署工具 123
5.2.1 對部署工具進行分類 123
5.2.2 比較部署服務(wù) 123
5.3 使用 AWS CloudFormation 創(chuàng)建虛擬機并在啟動時運行部署腳本 124
5.3.1 在服務(wù)器啟動時用用戶數(shù)據(jù)來運行腳本 125
5.3.2 將 VPN 服務(wù)器 OpenSwan 部署到虛擬機 125
5.3.3 從零開始而不是更新 129
5.4 使用 AWS Elastic Beanstalk 部署簡單的 Web 應用 130
5.4.1 Elastic Beanstalk 組件 130
5.4.2 使用 Elastic Beanstalk 部署一個 Node.js 應用Etherpad 131
5.5 使用 AWS OpsWorks Stacks 部署多層應用 135
5.5.1 AWS OpsWorks Stacks 的組件 136
5.5.2 使用 AWS OpsWorks Stacks 部署 IRC 聊天應用 138
5.6 小結(jié) 147
第 6 章 保護系統(tǒng)安全:IAM、 安全組和 VPC 148
6.1 誰該對安全負責 149
6.2 使軟件保持最新 150
6.2.1 檢查安全更新 150
6.2.2 在虛擬機啟動時安裝安全更新 151
6.2.3 在正在運行的虛擬機上安裝安全更新 152
6.3 保護 AWS 賬戶安全 153
6.3.1 保護 AWS 賬戶的 root 用戶安全 154
6.3.2 AWS 身份和訪問管理 155
6.3.3 使用 IAM 策略定義權(quán)限 156
6.3.4 用戶用于身份認證,組用于組織用戶 158
6.3.5 使用角色認證AWS資源 159
6.4 控制進出虛擬機的網(wǎng)絡(luò)流量 161
6.4.1 使用安全組控制虛擬機的流量 162
6.4.2 允許 ICMP 流量 163
6.4.3 允許 SSH 流量 164
6.4.4 允許來自源 IP 地址的SSH 流量 165
6.4.5 允許來自源安全組的SSH 流量 166
6.5 在云中創(chuàng)建一個專用網(wǎng)絡(luò):亞馬遜虛擬私有云 170
6.5.1 創(chuàng)建VPC和互聯(lián)網(wǎng)網(wǎng)關(guān) 171
6.5.2 定義公有堡壘主機子網(wǎng) 172
6.5.3 添加私有 Apache Web 服務(wù)器子網(wǎng) 174
6.5.4 在子網(wǎng)中啟動虛擬機 175
6.5.5 通過 NAT 網(wǎng)關(guān)從私有子網(wǎng)訪問互聯(lián)網(wǎng) 176
6.6 小結(jié) 178
第 7 章 用 Lambda 自動化 操作任務(wù) 179
7.1 用 AWS Lambda 運行代碼 180
7.1.1 什么是無服務(wù)器 180
7.1.2 在 AWS Lambda 上運行代碼 180
7.1.3 比較 AWS Lambda 與虛擬機(Amazon EC2) 181
7.2 用 AWS Lambda 構(gòu)建網(wǎng)站健康狀況檢查 182
7.2.1 創(chuàng)建 Lambda 函數(shù) 183
7.2.2 用 CloudWatch 搜索 Lambda 函數(shù)的日志 188
7.2.3 用 CloudWatch 指標和警報監(jiān)視 Lambda 函數(shù) 190
7.2.4 訪問 VPC 中的端點 194
7.3 自動添加包含 EC2 實例所有者的標簽 196
7.3.1 事件驅(qū)動:訂閱 CloudWatch 事件 196
7.3.2 在 Python 中實現(xiàn) Lambda 函數(shù) 199
7.3.3 用無服務(wù)器應用模型設(shè)置Lambda 函數(shù) 200
7.3.4 授權(quán) Lambda 函數(shù)用具有IAM 角色的其他 AWS 服務(wù) 201
7.3.5 用 SAM 部署 Lambda 函數(shù) 202
7.4 用 AWS Lambda 還能做什么 203
7.4.1 AWS Lambda 有哪些限制 203
7.4.2 無服務(wù)器定價模式的影響 203
7.4.3 使用場景:Web 應用 204
7.4.4 使用場景:數(shù)據(jù)處理 205
7.4.5 使用場景:物聯(lián)網(wǎng)后端 206
7.5 小結(jié) 206
第三部分 在云中存儲數(shù)據(jù)
第 8 章 存儲對象:S3 和 Glacier 211
8.1 什么是對象存儲 212
8.2 Amazon S3 212
8.3 使用 AWS CLI 在 S3 上備份數(shù)據(jù) 214
8.4 歸檔對象以優(yōu)化成本 216
8.4.1 創(chuàng)建 S3 存儲桶來配合Glacier 使用 217
8.4.2 添加生命周期規(guī)則到存儲桶 218
8.4.3 實驗 Glacier 和生命周期規(guī)則 220
8.5 以編程的方式存儲對象 222
8.5.1 設(shè)置 S3 存儲桶 224
8.5.2 安裝使用 S3 的Web 應用 224
8.5.3 檢查使用 SDK 訪問 S3 的代碼 224
8.6 使用 S3 來實現(xiàn)靜態(tài)網(wǎng)站托管 226
8.6.1 創(chuàng)建存儲桶并上傳一個靜態(tài)網(wǎng)站 227
8.6.2 配置存儲桶來實現(xiàn)靜態(tài)網(wǎng)站托管 227
8.6.3 訪問 S3 上托管的網(wǎng)站 228
8.7 使用 S3 的最佳實踐 229
8.7.1 確保數(shù)據(jù)一致性 229
8.7.2 選擇正確的鍵 230
8.8 小結(jié) 231
第 9 章 在硬盤上存儲數(shù)據(jù): EBS 和實例存儲 232
9.1 彈性塊存儲:通過網(wǎng)絡(luò)附加的持久的塊級別存儲 233
9.1.1 創(chuàng)建 EBS 卷并將其附加到EC2 實例 234
9.1.2 使用 EBS 234
9.1.3 調(diào)整性能 236
9.1.4 使用 EBS 快照備份數(shù)據(jù) 238
9.2 實例存儲:臨時塊存儲 240
9.2.1 使用實例存儲 243
9.2.2 測試性能 244
9.2.3 備份數(shù)據(jù) 244
9.3 小結(jié) 245
第 10 章 在機器之間共享數(shù)據(jù)卷:EFS 246
10.1 創(chuàng)建文件系統(tǒng) 248
10.1.1 用 CloudFormation 描述文件系統(tǒng) 248
10.1.2 定價 249
10.2 創(chuàng)建安裝目標 249
10.3 在 EC2 實例上安裝EFS 共享 251
10.4 在 EC2 實例之間共享文件 254
10.5 調(diào)整性能 255
10.5.1 性能模式 255
10.5.2 預期吞吐量 256
10.6 監(jiān)視文件系統(tǒng) 256
10.6.1 是否應使用最大 I/O 性能模式 257
10.6.2 監(jiān)控你的允許吞吐量 258
10.6.3 監(jiān)控你的使用情況 259
10.7 備份數(shù)據(jù) 259
10.7.1 使用 CloudFormation 描述EBS 卷 260
10.7.2 使用 EBS 卷 260
10.8 小結(jié) 262
第 11 章 使用關(guān)系數(shù)據(jù)庫服務(wù): RDS 263
11.1 開始使用 MySQL 數(shù)據(jù)庫 265
11.1.1 用 RDS 數(shù)據(jù)庫啟動WordPress 平臺 265
11.1.2 探索帶有 MySQL 引擎的RDS 數(shù)據(jù)庫實例 268
11.1.3 Amazon RDS 的定價 268
11.2 將數(shù)據(jù)導入數(shù)據(jù)庫 268
11.3 備份和還原數(shù)據(jù)庫 271
11.3.1 配置自動快照 271
11.3.2 手動創(chuàng)建快照 272
11.3.3 還原數(shù)據(jù)庫 273
11.3.4 復制數(shù)據(jù)庫到另一個區(qū)域 274
11.3.5 計算快照費用 275
11.4 控制對數(shù)據(jù)庫的訪問 275
11.4.1 控制對 RDS 數(shù)據(jù)庫配置的訪問 276
11.4.2 控制對 RDS 數(shù)據(jù)庫的網(wǎng)絡(luò)訪問 277
11.4.3 控制對數(shù)據(jù)的訪問 277
11.5 依賴高可用數(shù)據(jù)庫 278
11.6 調(diào)整數(shù)據(jù)庫的性能 280
11.6.1 增加數(shù)據(jù)庫資源 281
11.6.2 使用讀復制來提高讀性能 282
11.7 監(jiān)控數(shù)據(jù)庫 284
11.8 小結(jié) 286
第 12 章 使用內(nèi)存緩存數(shù)據(jù):Amazon ElastiCache 287
12.1 創(chuàng)建緩存集群 291
12.1.1 最小 CloudFormation 模板 292
12.1.2 測試 Redis 集群 293
12.2 緩存部署選項 294
12.2.1 Memcached 集群 295
12.2.2 Redis 單節(jié)點集群 295
12.2.3 Redis 禁用集群模式的集群 296
12.2.4 Redis 啟用集群模式的集群 297
12.3 控制緩存訪問 298
12.3.1 控制訪問配置選項 298
12.3.2 控制網(wǎng)絡(luò)訪問 299
12.3.3 控制集群和數(shù)據(jù)訪問 299
12.4 使用 CloudFormation 安裝示例 Discourse 應用 300
12.4.1 VPC—網(wǎng)絡(luò)配置 301
12.4.2 緩存—安全組、子網(wǎng)組、緩存集群 302
12.4.3 數(shù)據(jù)庫—安全組、子網(wǎng)組、數(shù)據(jù)庫實例 303
12.4.4 虛擬機—安全組、EC2 實例 304
12.4.5 測試 Discourse 的CloudFormation 模板 306
12.5 監(jiān)控緩存 307
12.5.1 監(jiān)控主機相關(guān)指標 308
12.5.2 內(nèi)存是否足夠? 309
12.5.3 Redis 只讀副本是否保持最新 309
12.6 優(yōu)化緩存性能 309
12.6.1 選擇合適的節(jié)點類型 310
12.6.2 選擇正確的部署選項 311
12.6.3 壓縮數(shù)據(jù) 311
12.7 小結(jié) 311
第 13章 面向NoSQL數(shù)據(jù)庫服務(wù)的編程:DynamoDB 312
13.1 操作 DynamoDB 314
13.1.1 管理 314
13.1.2 定價 314
13.1.3 網(wǎng)絡(luò) 315
13.1.4 與 RDS 對比 315
13.1.5 與其他 NoSQL 數(shù)據(jù)庫對比 316
13.2 開發(fā)人員需要了解的DynamoDB 316
13.2.1 表、項目和屬性 316
13.2.2 主鍵 317
13.2.3 本地 DynamoDB 318
13.3 編寫待辦事項應用 318
13.4 創(chuàng)建表 320
13.4.1 通過分區(qū)鍵標識用戶 320
13.4.2 通過分區(qū)鍵和排序鍵標識任務(wù) 321
13.5 添加數(shù)據(jù) 323
13.5.1 添加用戶 324
13.5.2 添加任務(wù) 325
13.6 檢索數(shù)據(jù) 325
13.6.1 通過鍵來獲取項目 326
13.6.2 通過鍵和過濾器查詢項目 327
13.6.3 使用全局輔助索引進行更靈活的查詢 329
13.6.4 掃描和過濾表中的所有數(shù)據(jù) 332
13.6.5 最終一致的數(shù)據(jù)檢索 333
13.7 刪除數(shù)據(jù) 333
13.8 修改數(shù)據(jù) 334
13.9 擴展容量 335
13.9.1 容量單元 336
13.9.2 自動擴展 337
13.10 小結(jié) 339
第四部分 在 AWS 上搭架構(gòu)
第 14 章 實現(xiàn)高可用性: 可用區(qū)、自動擴展以及 CloudWatch 343
14.1 用CloudWatch從EC2實例故障中恢復 344
14.1.1 創(chuàng)建 CloudWatch 警報來在狀態(tài)檢查失敗時觸發(fā)恢復 345
14.1.2 根據(jù)CloudWatch警報監(jiān)控和恢復虛擬機 347
14.2 從數(shù)據(jù)中心中斷中恢復 350
14.2.1 可用區(qū):一組獨立的數(shù)據(jù)中心 351
14.2.2 用自動擴展確保 EC2 實例一直運行 354
14.2.3 借助自動擴展將出現(xiàn)故障的虛擬機恢復到另一個可用區(qū) 356
14.2.4 隱患:網(wǎng)絡(luò)附加存儲恢復 359
14.2.5 隱患:網(wǎng)絡(luò)接口恢復 363
14.3 分析災難恢復的必要條件 367
14.4 小結(jié) 368
第 15 章 基礎(chǔ)設(shè)施解耦: ELB 與 SQS 369
15.1 利用負載均衡器進行同步解耦 370
15.2 利用消息隊列進行異步解耦 375
15.2.1 將同步過程轉(zhuǎn)換成異步過程 376
15.2.2 URL2PNG 應用的架構(gòu) 377
15.2.3 創(chuàng)建消息隊列 377
15.2.4 以編程方式生產(chǎn)消息 378
15.2.5 以編程方式消費消息 379
15.2.6 使用 SQS 傳遞消息的局限性 383
15.3 小結(jié) 384
第 16 章 容錯設(shè)計 385
16.1 使用冗余 EC2 實例提高可用性 387
16.1.1 冗余可以消除單點故障 387
16.1.2 冗余需要解耦 389
16.2 使代碼容錯的注意事項 390
16.2.1 讓其崩潰,而且重試 390
16.2.2 冪等重試使容錯成為可能 391
16.3 構(gòu)建容錯 Web 應用:Imagery 393
16.3.1 冪等狀態(tài)機 396
16.3.2 實現(xiàn)容錯的 Web 服務(wù) 397
16.3.3 實現(xiàn)容錯的工作進程來消費 SQS 消息 404
16.3.4 部署應用 407
16.4 小結(jié) 413
第 17 章 向上或向下擴展:自動擴展和CloudWatch 414
17.1 管理動態(tài)EC2實例池 416
17.2 使用指標或計劃觸發(fā)擴展 419
17.2.1 根據(jù)計劃進行擴展 420
17.2.2 根據(jù) CloudWatch 指標進行擴展 421
17.3 解耦動態(tài)EC2實例池 423
17.3.1 通過負載均衡器同步解耦擴展動態(tài) EC2 實例池 424
17.3.2 通過隊列異步解耦擴展動態(tài)EC2 實例池 428
17.4 小結(jié) 432
附錄 A 術(shù)語及縮寫 433