Curve元数据节点高可用GetTimeout < ElectionTime 4.2.4.3 MDS1、MDS2、MDS3的租约全部过期 4.2.4.4 总结 4.2.5 异常情况四: Etcd集群与MDS1(当前leader)出现网络分区 4.2.5.1 事件一先发生 4.2.5.2 事件二先发生 4.2.6 异常情况4:Etcd集群的follower节点异常 4.2.7 各情况汇总 1. 需求 mds是元数据节点,负责 但同时只有一个mds节点提供服务,称该提供服务的mds节点为主,等待节点为备;主节点的服务挂掉之后,备节点能启动服务,尽量减小服务中断的时间。 需要解决的问题就是:如何确定主备节点。 2. 技术选型 提供配置共享和服务发现的系统比较多,其中最为大家熟知的就是zookeeper和etcd, 考虑当前系统中mds有两个外部依赖模块,一是mysql, 用于存储集群拓扑的相关信息;二是etcd,用于存储文件的元 GetTimeout ③使用Observe监控指定前缀的key的最小版本的变化情况。© XXX Page 19 of 30 1. 2. 1. 该部分涉及到的参数说明: 参数 说明 当前配置 ElectionTimeout etcd集群leader选举的超时时间 3s LeaseTime mds当选leader之后,与etcd集群维持租约的过期时间 租约的keepalive间隔为LeaseTime/30 码力 | 30 页 | 2.42 MB | 6 月前3
Curve质量监控与运维 - 网易数帆子模块之间是否会相互影响; 单个模块的误差积累是否会放大,从而 达到不可接受的程度。 功能测试 站在使用者的角度,对模块提供的功能进行完备 的测试。 异常测试 制造或模拟系统异常(磁盘错误、网络错误、资源 冲突等)、依赖服务异常、应用本身异常等非正常 情况,测试软件的性能和稳定性是否符合预期。 规模测试 测试模块在一定规模下是否能够正常工作,是否 会出现异常或者崩溃, 14/33系统测试 支持python关键字,灵活定义测试 完善的测试报告 完美兼容Jenkins ci 丰富的第三方库(ssh, paramiko, request等) 用例设计原则 无需绑定特定环境,“随意拉起” 配置化(测试环境、测试负载定义) 控制用例时间(考虑一些折中方案) Case独立性 Case通用性(兼顾curve、ceph等) Tag规范(优先级、版本、运行时间) 最大化覆盖率(打乱操作顺序、随机 Curve使用开源的监控工具Prometheus采集监控指标,大致 流程为: 1. 部署监控时,Curve根据集群信息生成配置文件, 指定了 Prometheus的监控目标(包括Client、MDS、 ChunkServer、Etcd、物理节点等)。 2. Prometheus依据上述配置文件,发现相应服务。 3. Prometheus server以pull的方式,定期从Curve集群中 MDS0 码力 | 33 页 | 2.64 MB | 6 月前3
BRPC与UCX集成指南e EndPoint ●Accept的Socket可以获得Remote EndPoint10 BRPC Socket对象 ●brpc最终的网络通讯都集中在socket对象里面 ●读socket通过EventDispatcher触发 ●上层发送网络数据通过写socket完成,不能立刻完成的,则去启动后台bthread去完成。11 BRPC SocketMap ●根据EndPoint作为 so或lib的方式,可以集成到应用程序里 ●有完善的配置功能,ucx_info可以dump配置信息 ●有性能测试工具 ●比较详细的文档2223 UCS ●是一些工具代码,例如 –链表 –hash table –epoll event loop – memory register cache –config file24 UCT ●特点是比较原始,开销小,但是没有很强的功能 ●是网络接口层,主要功能是网卡 worker和逻辑。 ●是整个ucp实现RDMA的核心。 ●系统可以有多个worker,共享使用一个UcpContext。 ●不同的连接分配到不同的worker,一般情况下只需要一个worker足够应付网络通讯。 ●worker逻辑在一个pthread中运行。41 1个 UcpContext: N个 UcpWorker42 连接管理器UcpCm ●连接管理类 –全局唯一对象 –通过UcpCm0 码力 | 66 页 | 16.29 MB | 6 月前3
Curve核心组件之mds – 网易数帆hunkserver上的负载信息、 copyset信息等。 • Scheduler: 调度模块。用于自动容错和负载均衡。TOPOLOGY topology用于管理和组织机器,利用底层机器的放置、网络的规划以面向业务提供如下功能和非功能需求。 1. 故障域的隔离:比如副本的放置分布在不同机器,不同机架,或是不同的交换机下面。 2. 隔离和共享:不同用户的数据可以实现固定物理资源的隔离和共享。 多个pool,可以选择一个logicalPool独享一个pool。 通过结合curve的用户系统,LogicalPool可以通过配置限定特定user使用的方式,实现多个租户数据物理 隔离(待开发)。TOPOLOGY Topology的实际例子,右侧是topo配置文件: 集群有一个物理pool,由3个zone组成,每个zone有1台server。 在物理pool上,还创建了一个逻辑pool,逻辑pool使用3个zone,采用 间的通信将会非常复杂,例如复制组内Primary给Secondary定期发送心跳进行探活,在256K个复制组的情况 下,心跳的流量将会非常大;而引入CopySet的概念之后,可以以CopySet的粒度进行探活、配置变更,降低 开销。 3. 提高数据可靠性:在数据复制组过度打散的情况下,在发生多个节点同时故障的情况下,数据的可靠性会受 到影响。引入CopySet,可提高分布式存储系统中的数据持久性,降低数据丢失的概率。COPYSET0 码力 | 23 页 | 1.74 MB | 6 月前3
新一代云原生分布式存储场景介绍 | 使用中的问题 Curve 架构简介 | 数据对比 | 应用情况 FAQ 答疑存储的发展 互联网时代,数据大爆炸 大型主机 成本高 单点问题 扩容困难 各存储设备通过网络互联 大规模 弹性扩容 底层构建在分布式存储之上 云的概念 成本:共用基础设施 弹性:随意扩缩容 速度:更快的构建发布业务 底层构建在分布式存储之上 云原生的概念: 易用性:跨平台,超融合,弹性 •提供大容量的块设备 •可以在指定地址空间内随机读写 write(offset, len) •服务质量要求:数据不能丢、服务随时可用、弹性扩缩容 要什么 •成百上千台存储节点 •磁盘故障、机器故障、网络故障概率性发生 有什么 分布式存储系统需要满足接口需求,并且有持续监控、错误检测、容错与自动恢复的能力 以达到高可靠、高可用、高可扩分布式存储的要素 要 素 拆 解 数据分布 —— 无中心节点/中心节点 为物理机提供块设备 Linux IO栈 应用程序 -> 文件系统 -> 块设备层 -> 不同协议/驱动使用中的问题 • io抖动(一致性协议): 异常场景(比如阵列卡一致性巡检,坏盘,慢盘,网络异常),服务升级 • 性能差(一致性协议):在通用硬件下,无法支撑数据库、kafka等中间件对存储性能和稳定性要求 • 容量不均衡(数据放置):集群各节点容量不均衡需要人为干预 • 上述问题和0 码力 | 29 页 | 2.46 MB | 6 月前3
PFS SPDK: Storage Performance Development Kit●根据阿里《When Cloud Storage Meets RDMA》的说法 ●在100Gbps网络带宽时,内存带宽成为瓶颈 ●Intel Memory Latency Checker (MLC)测试得到的CPU内存带宽是 61Gbps10/17/22 3 RDMA可以减轻CPU负担 ●可以减少CPU操作网络通讯的开销 ●读写内存都由网卡进行offload ●应用程序不再通过系统调用在内核和用户态来回切换10/17/22 x内存分配,使用dpdk内 存,才可以完成DMA写NVME10/17/22 16 PFS DMA 总体架构10/17/22 17 TCP也可以部分零copy ●读写盘的部分是零copy的 ●网络部分依赖内核tcp,不是零copy10/17/22 18 进展 ●还在测试CurveBS ●布置、监控等工具需要更新10/17/22 19 性能测试 ●使用pfs daemon测试 ●估0 码力 | 23 页 | 4.21 MB | 6 月前3
Curve核心组件之chunkserverChunkServer是数据节点, 对外提供数据读写和节点管理功 能,底层基于ext4文件系统,操 作实际的磁盘。 ChunkServer架构ChunkServer通过RPC网络层与client, MDS,其他ChunkServer通信。RPC 网络层是由brpc框架去完成的。包 括读写socket,rpc协议解析等。 ChunkServer架构RPC Service层是对外提供的一些RPC服 务的接口。包含的RPC服务有:0 码力 | 29 页 | 1.61 MB | 6 月前3
Raft在Curve存储中的工程实践点初始状态一致的时候,保证节点之间状态一致。 raft日志复制RAFT协议简介 raft配置变更 • 配置:加入一致性算法的服务器集合。 • 集群的配置不可避免会发生变更,比如替换宕机的机器。 直接配置变更可能出现双主问题 • 共同一致(joint consensus) • 集群先切换到一个过渡的配置(old + new),一旦共同一 致已经被提交,系统切换到新的配置(new)。RAFT协议简介 日志压缩 • 日志会不断增长,占用空间 metaserver有两套存储引擎,基于memory和基于rocksdb。 Curve文件系统与Curve块存储的实现区别CURVE的RAFT配置变更 心跳 • 通过心跳维持mds和chunkserver/metaserve的 数据交互 • mds发起配置变更,copyset复制组执行 • 在curve自动容错和负载均衡时,需要进行raft配 置变更。 • 自动容错保证常见异常(如坏盘、机器宕机)导 存等资源的利用率最大化。 Curve块存储和文件存储的配置变更实现基本一致CURVE的RAFT配置变更 异常场景下配置变更 • ReplicaSchedule • RecoverSchedule 均衡场景下配置变更 • CopySetSchedule • LeaderSchedule • RapidLeaderSchedulerCURVE的RAFT配置变更 异常场景下配置变更 • ReplicaSchedule0 码力 | 29 页 | 2.20 MB | 6 月前3
CurveFS Copyset与FS对应关系t的能力*copyset的个数 = 这个metanode的的处理能力。通过合理的配置copyset的能力的,应该的可以避免一个机器上,有太多的copyset。 结论:coypset由fs共用。具体的使用上,每一个copyset上,有一个可以由多少fs共用的限制。这个限制通过配置文件进行配置。用户挂载时可以通过参数配置是否独占copyset。原因是,为了避免fs独占copyset 带来的copyset数量过多影响性能的问题。 node。 client在系统初始化的时候, 还需要起来一个后台线程,定期的检查每一个fs的copyset的状态,如果某一个fs的可以提供分配inode能力的copyset的个数小于规定的值(来自配置文件,默认3个), 就为这个fs创 建一个新的copyset。© XXX Page 12 of 19© XXX Page 13 of 19 6.4、open流程© XXX Page 14 of 19© 4、实现出现异常场景下的数据恢复,副本修复的调度。 7.3 metaserver端 1、需要提供copyset的创建功能 2、由copyset负责inode和dentry的管理 3、定期向mds上报心跳,并根据心跳结果执行配置变更 metaserver 子模块拆分 metaserver service:接受rpc请求 copyset:负责对元数据的持久化,主要是一致性协议raft的处理© XXX Page 18 of0 码力 | 19 页 | 383.29 KB | 6 月前3
CurveFs 用户权限系统调研com/cw123/curve/tree/fs_s3_joint_debugging 环境:test2 1. 启动curvefs 手动创建curve卷,/etc/curve/client.conf中配置卷所在集群信息。 启动服务&client挂载卷:bash startfs.sh start volume (挂载目录为/tmp/fsmount)© XXX Page 3 of 33 # wa allow-other'以允许相应用户有权访问该文件系统,如果挂载者不是root还需要在/etc/fuse.conf(/usr/local/etc/fuse.conf)中增加配置项“user_allow_other”(该配置项是无值的)。详见libfuse官方文 档:https://github.com/libfuse/libfuse#security-implications # The file 1:前期可以先不自己实现权限管理,使用‘default_permissions’ 和 ‘allow_other’的mount option(如果是非root用户进行挂载还需要在/etc/fuse.conf中增加配置项‘user_allow_other’)启用内核基于mode的权限控制。 2:新建rootinode mode = 1777(原因是设置STICKY,避免普通用户对非自己所属文件的删除) 3:这0 码力 | 33 页 | 732.13 KB | 6 月前3
共 21 条
- 1
- 2
- 3













