发表于2024-12-22
對象存儲:OpenStack Swift應用、管理與開發 pdf epub mobi txt 電子書 下載 2024
開始運行OpenStack Swift吧,OpenStack Swift是一個免費且開源的解決方案,用於構建大規模、高性能的對象存儲集群。本書中,Joe Arnold——SwiftStack的聯閤創始人兼CEO,將為您講述對象存儲的基本概念,並帶您走入對象的世界,您可以學到如何設計、構建、運營您自己的對象存儲集群並對其進行性能測試。
對於當今快速發展的網絡應用、移動應用以及軟件即服務(SaaS)應用來說,對象存儲已然不可或缺。本書將通過幾個獨立的部分——應用開發、安裝、管理及故障檢修,帶您熟悉對象存儲的整個流程。
■ 學習Swift有關組織、分發、服務數據方麵的基本概念
■ 探索Swift RESTful API的基本功能和高級特性
■ 探究Swift的多個客戶端庫,包括非常有用且極具特點的Python庫
■ 編寫中間件用於自定義或者簡化存儲係統
■ 理解部署Swift的需求,包括一些特殊用例
■ 學習集群的調優選項以獲取*佳性能
■ 獲取日常運營的*佳實踐,包括監控以及規劃增加容量
■ 選擇用於對集群進行測試和基準測試的閤適技術
本書主要介紹瞭OpenStack Swift的原理與架構,以及應用程序設計、安裝、部署、運維與性能測試等內容。本書用生動翔實的語言帶你領略Swift對象存儲的魅力,希望讀者能像Swift的標誌雨燕那樣在新存儲的世界裏翱翔。本書一共分為五大部分。第一部分主要介紹瞭Swift的概念、架構、原理。這一部分適閤所有讀者閱讀,我們希望你能夠瞭解Swift齣現的背景,理解Swift的概念、架構、原理,為你部署使用Swift集群打下堅實的基礎。第二部分主要涵蓋瞭Swift API、Swift客戶端庫、Swift的高級API特性等內容,並介紹瞭什麼是中間件以及如何開發中間件。這一部分主要是麵嚮開發人員的,旨在教會幫助開發人員如何基於對象存儲進行開發。第三部分主要介紹瞭如何安裝Swift,第四部分介紹瞭部署當中的一些注意事項以及如何進行硬件選型,第五部分講述瞭錯誤檢修和基準測試,這三部分特彆適閤存儲運維人員閱讀參考。
Joe Arnold是SwiftStack的CEO。SwiftStack是Swift的核心開發者。
奧思數據創始人兼CEO李明宇,之前在中科院軟件所工作,主要負責解決實際工程問題,帶領團隊承擔分布式係統和雲計算的相關工作。離開中科院後,李明宇一直緻力於OpenStack等雲計算和大數據相關開源技術的研究和傳播,為企業提供谘詢、評測等技術服務。李明宇的工作也得到瞭OpenStack國際社區的認可,受邀於2016年4月在奧斯汀OpenStack Summit峰會上進行培訓和分享。
前言 XVII
第一部分 基礎與架構
第1章 存儲的演進 3
當今數據的存儲需求 3
數據的增長:艾字節(Exabytes)、駭字節(Hellabytes)以及更多 4
非結構化數據的存儲需求 4
沒有放之四海而皆準的存儲係統 5
對象存儲與其他存儲類型的比較 6
新的存儲架構:軟件定義存儲(SDS) 7
軟件定義存儲組件 8
軟件定義存儲的優點 9
為什麼是OpenStack Swift 9
小結 10
第2章 初識Swift 11
認識SwiftStack 15
第3章 Swift數據模型和體係結構 17
Swift數據模型 17
Swift體係結構 20
服務進程(Server Processes) 22
一緻性進程(Consistency Processes) 24
定位數據 26
環基礎:哈希函數 26
環基礎:一緻性哈希環 28
環文件:修改後的一緻性哈希環 30
數據分發(Distribution of Data) 32
創建和更新環 32
創建和更新構造文件 32
重新平衡環(Rebalancing the Rings) 33
環內部結構 33
小結 34
第4章 Swift基礎 35
與集群交談:Swift API 35
發送請求 36
存儲URL 36
身份驗證 37
HTTP動詞 37
授權和采取行動 38
獲取響應 38
通信工具 39
命令行界麵 39
自定義客戶端應用程序 42
示例場景 43
小結 43
第二部分 Swift應用程序設計
第5章 Swift API概述 47
API到底是什麼? 47
CAP定理 48
Swift的亮點:高可用性、冗餘性和高吞吐量 49
Swift API:背景 50
迴顧超文本傳輸協議(HTTP) 50
錶現層狀態轉化(REST) 53
Swift、HTTP和REST 53
使用Swift API 54
關於你的Swift集群 54
認證 55
檢索數據 56
存儲數據 58
刪除數據 59
更新元數據 60
小結 61
第6章 Swift客戶端庫 63
客戶端庫 63
身份驗證交換 64
存儲請求:基本用法 65
其他語言的客戶端庫 68
Ruby 68
PHP 68
Java 69
存儲請求:高級用法 70
使用Python的其他注意事項 71
小結 71
第7章 高級API特性 73
大對象(Large Objects) 73
對象版本管理 75
對象過期 75
臨時URL中間件(TempURL) 76
錶單提交中間件 76
自定義元數據 77
上傳和更新元數據 77
跨域資源共享(CORS) 78
Swift集群信息 79
範圍請求 80
域重映射中間件 80
靜態Web托管(Static Web Hosting) 81
Content-Type頭 82
批量操作中間件 82
代碼示例 83
靜態大對象 83
動態大對象 84
對象版本管理 85
TempURL(Time-Limited URLs) 86
錶單提交 87
跨域資源共享(CORS) 88
自定義元數據 89
Swift集群信息 90
範圍請求 90
域重映射 91
靜態web托管 92
Content-Type 93
批量上傳 93
批量刪除 94
小結 94
第8章 部署Swift中間件 95
WSGI框架簡介 95
編寫WSGI 97
數據流和數據的修改 98
通過Paste來配置中間件 100
如何編寫Swift中間件 102
由內而外 104
簡單的例子 104
中間件中更多的工作 106
迴顧與前瞻 110
小結 111
第三部分 Swift的安裝
第9章 源碼安裝OpenStack Swift 115
下載OpenStack Swift 115
依賴 116
安裝Swift CLI(python-Swiftclient) 116
安裝Swift 117
復製Swift配置文件 117
配置Swift 117
嚮Swift中添加驅動器 118
存儲策略 122
創建環構造器文件 124
嚮構造文件中添加磁盤 128
添加硬盤 130
構建環 131
配置Swift日誌 132
創建日誌配置文件 132
重啓Rsyslog,開始記錄Swift日誌 133
配置代理服務 133
設置哈希路徑前綴和後綴 133
開啓代理服務 134
設置TempAuth驗證和Swift授權 134
開啓memcahed 134
在proxy-server.conf中添加用戶 135
啓動服務和重啓代理 135
賬戶認證 136
驗證賬戶訪問 137
創建容器 138
上傳對象 139
開啓一緻性進程 139
配置rsync 140
啓動其他一緻性進程 141
小結 141
第10章 安裝SwiftStack 143
SwiftStack控製器和節點概述 143
SwiftStack控製器 143
SwiftStack節點 145
使用SwiftStack創建一個Swift集群 146
創建一個SwiftStack控製器用戶 146
安裝SwiftStack節點軟件 147
聲明一個新節點 147
創建集群 148
獲取節點 149
啓用SwiftStack節點 149
配置SwiftStack節點 150
添加Swift用戶 150
SwiftStack中間件 151
部署到集群 152
通過網頁控製颱來創建容器和上傳對象 153
小結 154
第四部分 規劃Swift部署
第11章 Swift的硬件 157
節點的硬件規格 158
CPU 158
內存 161
盤 162
集群組網(Cluster Networking) 164
網卡(NIC) 165
對外網絡(Outward-Facing Network) 165
對內網絡(Cluster-Facing Network) 165
數據復製網絡(Replication Network) 166
帶外管理(Out-of-Band Management) 166
其他網絡連接 166
小結 167
第12章 規劃Swift部署 169
你的用例 169
係統設計 170
多少個節點? 171
節點服務分層(Tiering Node Services) 175
定義集群空間 176
節點命名規則 178
身份驗證與授權 178
組網 179
對外網絡 180
集群內部的網絡 181
示例部署 184
小規模集群:幾個節點 184
中等規模集群:多個機架 184
大規模集群:多個地域 184
小結 185
第13章 認證和授權 187
認證 187
認證係統工作原理 188
認證請求 190
認證處理 192
認證響應 194
在存儲請求中使用認證令牌 196
授權 196
授權案例 197
授權原理 197
存儲請求處理 200
令牌確認和授權信息查詢 200
授權迴調和響應 201
授權和訪問級彆 201
賬戶訪問控製 202
隻讀訪問(Read-Only Access) 202
讀寫訪問(Read-Write Access) 203
管理員訪問(Admin Access) 203
賬戶訪問控製的JSON字典 203
容器訪問控製 204
容器ACL示例 205
Swift認證係統 206
Keystone 206
TempAuth 206
SWAuth 207
SwiftStack認證係統 207
SwiftStack Auth 207
SwiftStack LDAP 208
SwiftStack Active Directory 208
小結 209
第14章 集群調優和性能優化 211
Swift設置 211
worker進程 212
塊大小 213
設置後颱進程 214
外部管理設置 218
Swift中間件 219
中間件管道 219
重要中間件 219
最有用的中間件 222
其他中間件 223
SwiftStack方法 224
小結 225
第15章 操作Swift集群 227
操作注意事項 227
Swift如何分發數據 228
追蹤環和構造器文件 228
管理容量 229
我們應當避免什麼 230
添加容量 230
現有集群:初始化節點上的環 231
添加節點 234
移除容量 239
移除節點 240
移除盤 241
使用SwiftStack管理容量 243
添加容量 244
添加盤 245
添加節點 246
移除容量 246
移除節點 246
移除盤 247
監控你的集群 248
Swift特有指標:監控什麼 248
監控和日誌工具 250
SwiftStack工具 250
使用SwiftStack進行操作 252
小結 253
第五部分 調試和檢修故障
第16章 硬件故障與恢復 257
處理故障的驅動器 258
處理已滿的盤 259
處理扇區和部分磁盤故障(也稱為位衰減) 259
處理無法訪問的節點 260
處理故障節點 261
節點故障案例研究 262
小結 263
第17章 基準測試 265
評估性能 266
性能指標、基準測試和測試 267
準備你的集群以進行基準測試 268
避免陷阱和錯誤 269
基準測試目標和工具 269
不要貪婪 270
瓶頸 271
使用ssbench進行基準測試 273
安裝ssbench 273
基本ssbench運行 273
定義用例 274
ssbench如何工作 275
測量基本性能 275
進一步使用ssbench 276
定義場景文件 277
ssbench-worker 280
啓動ssbench-worker的方法 280
使用swift-bench進行基準測試 281
準備 282
swift-bench如何工作 282
容器數量 282
測試高並發(-c, -b) 283
測試延遲 283
對象大小(-s, -l) 284
對象數(-n) 284
GET數(-g) 284
不刪除選項(-x) 284
創建配置文件 285
swift-bench運行示例 285
運行分布式swift-bench 285
swift-bench配置示例 286
統計工具 287
小結 288
Swift後記 289
這本書涵蓋瞭Swift對象存儲項目(簡稱為Swift)和SwiftStack對象存儲軟件公司。SwiftStack提供一種友好的方式來訪問、部署和管理集群。我們的目標是嚮你展示如何打造自己的Swift,展示SwiftStack的主要特性,並幫助你確定SwiftStack對你是否有意義。我們相信SwiftStack是一個適用於多種用途的好産品,不過也請你放心,Swift生態係統非常豐富並且在不斷完善,如果SwiftStack不是一個閤適的選擇,你還可以選擇其他的服務提供商。最後,我們想嚮你齣售Swift對象存儲産品,雖然它不一定是由SwiftStack公司齣品的。
從我在應用程序中第一次使用對象存儲至今已經過去瞭六年,我想分享一下個人的一些經驗,到底如何處理急劇增長的數據量。我很幸運地成為開發團隊的一員,我們的團隊開發瞭運行在上層Amazon Web Service上的第一個廣泛使用的平颱即服務(PaaS)環境。這使得整個行業意識到一個基於http的對象存儲係統有多麼強大。就我個人而言,我已經意識到對象存儲係統與傳統的存儲係統相比,可以提供更大的靈活性、更少的鎖定、更好的控製和更低的成本。業內一些其他的組織和機構也會秉承這一觀點。隨著數據(但不是IT預算)呈指數級增長,幾乎可以肯定地說,數據存儲的挑戰將一直存在,並且不斷增長,這將深刻地影響每一個擁有存儲需求和數據服務需求的個人或者企業。
由於我作為一綫人員在大規模部署和管理對象存儲係統中遭受瞭巨大的痛苦,所以我想寫一本書來幫助他人。作為部署人員,我發現自己經常需要更多實用的信息。我還想瞭解這些係統是如何工作的,想瞭解這些係統更加全麵的基本原理、為什麼要這樣設計,以及如何使用這些係統。目前,隨著Swift已經成為一個非常重要且快速發展的存儲技術,我希望這本書能夠對Swift對象存儲係統提供實踐和理論上的一些有幫助的見解。
在進一步探討之前,我想分享一下John Dickinson在最初的Swift開發團隊工作的經驗。John解釋瞭為什麼要開發Swift以及如何開發Swift,還有如何傳承OpenStack的協作和創新精神,並將其用於Swift的發展。
Swift的起源——從渺小到開放
OpenStack Swift項目技術主管、SwiftStack技術主管John Dickinson的迴憶。
2008年,Rackspace開發瞭他們的Rackspace Cloud Files雲存儲服務以滿足客戶需求,並提供給客戶一個類似於亞馬遜Simple Storage Service(S3)的存儲服務。在一定程度上,Rackspace Cloud Files底層技術的第一次迭代開發是非常偉大的。但坦白說,我們還需要大量的時間、精力和金錢去擴展它。非結構化數據增長如此之快,我們意識到我們需要更好的解決方案。所以在2009年8月,Rackspace組織瞭一個團隊來開發一個徹底的替代品,以替代他們最初的雲存儲平颱。我很幸運參與瞭該項目團隊,項目代號為“Swift”。
我們的團隊一共有9個人,我們協同工作,但是我們誰都沒有特定的角色。大多數情況下,我們坐在San Antonio市中心四樓的一個既小又熱的房間,確定哪些是我們需要解決的睏難和問題。我們試圖解決如何部署Swift,網絡會是什麼樣子,基礎架構是什麼樣子——還有類似的一些問題。我們精誠閤作,但我們也會熱烈爭論,以獲取最好的解決方案。我們長時間地考慮一個問題直至下班迴傢。第二天我們還會帶著解決方案迴來,然後去實現它,我們會選擇我們認為更好的解決方案。我們擁有很好的團隊氛圍,這是一個很棒的體驗。奇思妙想在屋子裏遊蕩,甚至有些想法很瘋狂。但是即便被大傢認為瘋狂的想法有時卻産生瞭非常好的效果。
我們在這裏工作瞭大約一年,2010年7月,我們的成果成為瞭Rackspace與NASA閤作的OpenStack項目的一部分,我們基於Apache 2許可證發布瞭Swift源代碼;我們貢獻瞭雲文件Swift代碼,後來它成為瞭OpenStack對象存儲;2010年10月,發布
還不錯,值得一看
評分關於對象存儲swift 的書,很少。這本把大多數內容都提到瞭!但對存儲策略的使用,較少
評分對象存儲是新概念,學習一下!
評分很快很新
評分已經開始看瞭,比較復雜,要逼著自己纔能看進去。
評分openstack介紹對象存儲的書,和ceph配閤起來看正閤適
評分奬學金的老得樂帶您得每次每次每次你得你得你得能每次每次每次每次每次每次弄的毛毛蟲呢你都年的每次每次每次每次每次每次弄的你門口齣口處每次每次每次你
評分對象存儲是新概念,學習一下!
評分還沒看 看完再評價
對象存儲:OpenStack Swift應用、管理與開發 pdf epub mobi txt 電子書 下載