Swift架构和原理详解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chengqiuming/article/details/79343920
一 关于存储
对象存储系统是综合了NAS和SAN的优点,同时具有SAN的高速直接访问和NAS的数据共享等优势,提供了高可靠行,跨平台性以及安全的数据共享的存储体系结构。

二 Swift特点
极高的数据持久性
完全对称的系统架构
无限的可扩展性
无单点故障

三 Swift的物理架构

四 Swift的逻辑架构

五 Swift各组件
1 Swift proxy node
Swift-proxy server
2 Swift storage node
swift-account server
swift-container server
swift-object server

六 Proxy Server

七 Account Server

八 Container Server

九 Object Server

十 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使用的算法,存储理论主要有以下几个:
一致性哈希算法
Partition
Replica
Zone
Weight
Ring

十二 一致性hash

十三 Partition

十四 Replica
1 需要有冗余的副本来保证数据安全
2 理论依据主要来源NWR策略(也叫Quorum协议)
NWR是一种在分布式存储系统中用于控制一致性级别的策略
N代表同一份数据的Replica的份数
W是更新一个数据对象时需要确保成功更新的份数
R代表读取一个数据需要读取的Replica的份数
公式W+R>N,保证某个数据不被两个不同的事务同时读和写
公式W>N/2保证两个事务并发写某一个数据

十五 Zone
所有的Node都在一个机架或一个机房中
断电,网络故障等
对机器的物理位置进行隔离,以满足分区容忍性
引入了Zone的概念,把集群的Node分配到每个Zone中
Zone的大小可以根据业务需求和硬件条件自定义

十六 Weight
分配到更多的partition
更好的利用已有的存储空间
避免由于存储空间不同带来的问题

十七 Ring

十八 测试用部署模式

十九 常用部署模式

二十 Swift手动安装步骤
公共安装配置
Storage节点安装
Proxy节点安装
安装验证

二十一 网络拓扑

二十二 Swift的使用
1 列出所有container
swift list
2 列出container中的文件
swift list <container name>
3 创建container
swift post <container name>
4 上传文件
swift upload <container name> <file_or_directory>
5 删除文件
swift delete <container name> <object name>

二十三 支持Swift的工具

二十四 常见错误排查
1 401认证错误
检查用户名密码以及tenant是否正确
检查认证配置是否正确
2 503错误
检查/srv/node/sdb1是否存在
检查是否是xfs文件系统
检查读写权限
展开阅读全文

没有更多推荐了,返回首页