发表于2024-11-05
开始运行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月,发布
对象存储:OpenStack Swift应用、管理与开发 下载 mobi pdf epub txt 电子书 格式 2024
对象存储:OpenStack Swift应用、管理与开发 下载 mobi epub pdf 电子书确定是新版的吗?上面的例子都是几年前的,
评分现在就用这个,买本书好好研究下公司的云
评分学习学习,学无止境!
评分openstack介绍对象存储的书,和ceph配合起来看正合适
评分现在就用这个,买本书好好研究下公司的云
评分奖学金的老得乐带您得每次每次每次你得你得你得能每次每次每次每次每次每次弄的毛毛虫呢你都年的每次每次每次每次每次每次弄的你门口出口处每次每次每次你
评分奖学金的老得乐带您得每次每次每次你得你得你得能每次每次每次每次每次每次弄的毛毛虫呢你都年的每次每次每次每次每次每次弄的你门口出口处每次每次每次你
评分活动买的优惠力度很大。质量也不错。
评分还没看,不知道好不好,openstack的书全了
对象存储:OpenStack Swift应用、管理与开发 mobi epub pdf txt 电子书 格式下载 2024