狠狠撸

狠狠撸Share a Scribd company logo
Swift 架构与原理详解
? Swift架构及组件介绍
? Swift背后的原理
? Swift的部署模式
? Swift 手动安装
? Swift 使用及常见错误的排查
对于存储
类型 协议 应用
块存储 SATA, SCSI, iSCSI SAN, NAS, EBS
文件存储 Ext3/4, XFS, NTFS PC, Servers, NFS
对象存储 HTTP, REST Amazon S3,
Google Cloud Storage,
Rackspace Cloud Files
对象存储系统(Object-Based Storage System)是综合了NAS和SAN
的优点,同时具有SAN的高速直接访问和NAS的数据共享等优势,提供了高
可靠性、跨平台性以及安全的数据共享的存储体系结构。
?Swift 是什么?
?Swift 不是什么?
?Swift用来干什么?
?Swift适用于什么场景?
?有什么比较成功的案例?
对于Swift
Swift的特点
?极高的数据持久性
?完全对称的系统架构
?无限的可扩展性
?无单点故障
厂飞颈蹿迟的物理架构
厂飞颈蹿迟的逻辑架构
? Swift proxy node
? swift-proxy server
? Swift storage node
? swift-account server
? Swift-container server
? Swift-object server
Proxy Server
account
DB
container
DB
object DB
account container object
proxy
Proxy Server向用户提供了一套操
作Swift的API接口。
对于每个Swift请求,Proxy
Server首先会通过Ring查找被操作
实体的物理位置,随后会将请求发
送过去。
Proxy Server中也做了大量的异常
处理,如:当某个服务器因为某个
原因无法添加对象时,Proxy
Server会通过Ring获取一个可用的
服务器,并将对该请求的处理切换
至该服务器。
Account Server
account
DB
container
DB
object DB
account container object
proxy
Account Server是存储节点中负责
处理对Account的GET、HEAD、
PUT、DELETE、RELICATION请
求的服务进程,Account Server使
用SQLite的数据库文件保存
Account的相关信息。
Container Server
account
DB
container
DB
object DB
account container object
proxy
Container Server是存储节点中负
责处理Container的GET、
HEAD、PUT、DELETE、
RELICATION请求的服务进程,
Container Server使用SQLite的数
据库文件保存Container的相关信
息。
Object Server
account
DB
container
DB
object DB
account container object
proxy
Object Server就是一个简单的BLOB
存储服务器,可以存储、检索和删除
保存在本地设备上的对象。在Object
Server中,对象以二进制的形式保存
在文件系统上,元数据(metadata)
以XATTR的形式保存在文件扩展属性
上,所以要求底层的文件系统支持
XATTR特性。
Swift的操作流程
假设:一个对象在Swift集群中保存3个副本(Replica)
修改一个Swift对象 :
1. Proxy Server会根据 /account/container/object查询Ring文件,得到存储该对象
的节点列表(长度为3) ;
2. Proxy Server会将请求转发到这三个节点执行修改操作。如果只有两个节点写入成
功,就认为这次PUT操作成功 ;
3. 写入失败的节点在一段时间后将会得到写入成功的节点Object Replicator进程推送
过来的数据。
从Swift中获取一个对象 :
1. Proxy Server会根据 /account/container/object查询Ring文件,得到存储该对象
的节点列表(长度为3) ;
2. Proxy Server和上述3个节点交互,如果有两个节点确认对象状态OK,则转步骤3,
否则返回失败 ;
3. Proxy Server随机选取一个健康的节点获取数据并返回给用户。
? Swift架构及组件介绍
? Swift背后的原理
? Swift的部署模式
? Swift 手动安装
? Swift 使用及常见错误的排查
Swift的原理
Swift使用的算法,存储理论主要是以下的几个:
? 一致性哈希算法
? Partition
? Replica
? Zone
? Weight
? Ring
一致性hash
http://www.cnblogs.com/yuxc/archive/2012/06/22/2558312.html
Partition
Replica
?需要有冗余的副本来保证数据安全
?理论依据主要来源于NWR策略(也叫Quorum协议)
? NWR是一种在分布式存储系统中用于控制一致性级别的策略
? N代表同一份数据的Replica的份数
? W是更新一个数据对象时需要确保成功更新的份数
? R代表读取一个数据需要读取的Replica的份数
? 公式W+R>N,保证某个数据不被两个不同的事务同时读和写
? 公式W>N/2保证两个事务不能并发写某一个数据
Zone
?所有的Node都在一个机架或一个机房中
?断电、网络故障等
?对机器的物理位置进行隔离,以满足分区容忍性。
?引入了Zone的概念,把集群的Node分配到每个Zone中
?Zone的大小可以根据业务需求和硬件条件自定义
Weight
?分配到更多的Partition。
?更好的利用已有的存储空间
?避免由于存储空间不同带来的问题。
Ring
? Swift架构及组件介绍
? Swift背后的原理
? Swift的部署模式
? Swift 手动安装
? Swift 使用及常见错误的排查
测试用部署模式
Account Server
Container
Server
Object Server
User Application
Account Server
Container
Server
Object Server
Account Server
Container
Server
Object Server
Proxy Server
常用部署模式
? Swift架构及组件介绍
? Swift背后的原理
? Swift的部署模式
? Swift 手动安装
? Swift 使用及常见错误的排查
? 步骤
? 公共安装配置
? Storage 节点安装
? Proxy 节点安装
? 安装验证
controller0
eth1:172.16.0.10/24
network0 compute0
Net0 10.20.0.0/24
Net2 192.168.4.0/24
eth2:
192.168.4.20/24
eth2:
192.168.4.30/24
eth0:10.20.0.30/24eth0:10.20.0.20/24eth0:10.20.0.10/24
Net1172.16.0.0/24
swift0
eth0: 10.20.0.50/24
eth2:
192.168.4.50/24
? github
? Swift架构及组件介绍
? Swift背后的原理
? Swift的部署模式
? Swift 手动安装
? Swift 使用及常见错误的排查
Swift的使用
列出所有container
swift list
列出container中的文件
swift list <container name>
创建container
swift post <container name>
上传文件
swift upload <container name> <file_or_directory>
删除文件
swift delete <container name> <object name>
支持Swift的工具
存储网关:
–TwinStrata CloudArray
–Panzura Global Cloud Storage System
–StorSimple – Cloud Integrated Enterprise
Storage
–Riverbed Whitewater Cloud Storage
Gateway
–Maldivica Storage Connector for OpenStack
Swift
–CTERA Portal
–SMEStorage Cloud File Server
文件管理:
–CloudBerry Explorer
–ExpanDrive
–Cyberduck
备份:
–Commvault Simpana
–Gladinet
–Zmanda
Filesystem adapters:
–FUSE file system for OpenStack Swift
–ftp-cloudfs - FTP interface for
OpenStack Swift
–Caimito - WebDav interface for
OpenStack Swift
常见错误排查
401认证错误
? 检查用户名密码以及tenant是否正确
? 检查认证配置是否正确
503错误
? 检查/srv/node/sdb1是否存在
? 检查是否是xfs文件系统
? 检查读写权限
? Email:yongluo2013@gmail.com
? Blog : http://yongluo2013.github.com
? WeiXin:@嗨皮
? WeiBo :@warrior_罗勇

More Related Content

Open stack swift