Curve元数据节点高可用
Observe的流程 4. MDS使用election模块的功能进行选主 4.1 Curve中MDS的选举过程 4.2 图示说明选举流程 4.2.1 正常流程 4.2.2 异常情况1:MDS1退出,可以正常处理 4.2.3 异常情况2:Etcd集群的leader发生重新选举,MDS1未受影响,可以正常处理 4.2.4 异常情况3:Etcd的leader发生重新选举,MDS1受到影响退出,不一定可以正常处理。 2 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有两个外部依赖模块,一是mysql, 用于存储集群拓扑的相关信息;二是etcd,用于存储文件的元数据信息。而etcd可以用于实现mds高可用,没必要引入其他组件。 使用etcd实现元数据节点的leader主要依赖于它的两个核心机制: TTL和CAS。TTL(time to live)指的是给一个key设置一个有效期,到期后key会被自动删掉。这在很多分布式锁的实现上都会用到,可以保证锁的实时性和有效性。CAS(Atomic0 码力 | 30 页 | 2.42 MB | 5 月前3Cilium v1.10 Documentation
cilium status KVStore: Ok etcd: 1/1 connected: http://127.0.0.1:31079 - 3.3.2 (Leader) [...] Check for level=warning and level=error messages in the Cilium log files If there is a warning KVStore: Ok etcd: 1/1 connected, has-quorum=true: https://192.168.33.11:2379 - 3.3.12 (Leader) [...] IPAM: IPv4: 2/4 allocated, Allocated addresses: 192.168.1.1 (router) KVStore: Ok etcd: 1/1 connected, has-quorum=true: https://192.168.33.11:2379 - 3.3.12 (Leader) [...] IPAM: IPv4: 2/256 allocated, Allocated addresses: 10.0.0.1 (router) 100 码力 | 1307 页 | 19.26 MB | 1 年前3Cilium v1.11 Documentation
KVStore: Ok etcd: 1/1 connected, has-quorum=true: https://192.168.60.11:2379 - 3.3.12 (Leader) [...] IPAM: IPv4: 2/4 allocated, Allocated addresses: 192.168.1.1 (router) KVStore: Ok etcd: 1/1 connected, has-quorum=true: https://192.168.60.11:2379 - 3.3.12 (Leader) [...] IPAM: IPv4: 2/256 allocated, Allocated addresses: 10.0.0.1 (router) 10 lease-ID=7c02748328e75f59, has-quorum=true: https://clustermesh- apiserver.cilium.io:32379 - 3.4.13 (Leader) Kubernetes: Disabled ... Check that cluster DNS works: nslookup -norecurse clustermesh-apiserver0 码力 | 1373 页 | 19.37 MB | 1 年前3Cilium v1.8 Documentation
cilium status KVStore: Ok etcd: 1/1 connected: http://127.0.0.1:31079 - 3.3.2 (Leader) [...] Check for level=warning and level=error messages in the Cilium log files Run a bash in a KVStore: Ok etcd: 1/1 connected, has-quorum=true: https://192.168.33.11:2379 - 3.3.12 (Leader) [...] IPAM: IPv4: 2/4 allocated, Allocated addresses: 192.168.1.1 (router) KVStore: Ok etcd: 1/1 connected, has-quorum=true: https://192.168.33.11:2379 - 3.3.12 (Leader) [...] IPAM: IPv4: 2/256 allocated, Allocated addresses: 10.0.0.1 (router) 100 码力 | 1124 页 | 21.33 MB | 1 年前3Cilium v1.9 Documentation
lease-ID=7c02748328e75f57, lock lease- ID=7c02748328e75f59, has-quorum=true: 192.168.36.11:32379 - 3.4.13 (Leader) ... Check that cluster DNS works: nslookup clustermesh-apiserver.kube-system.svc.cluster.local cilium status KVStore: Ok etcd: 1/1 connected: http://127.0.0.1:31079 - 3.3.2 (Leader) [...] Check for level=warning and level=error messages in the Cilium log files If there is a warning KVStore: Ok etcd: 1/1 connected, has-quorum=true: https://192.168.33.11:2379 - 3.3.12 (Leader) [...] IPAM: IPv4: 2/4 allocated, Allocated addresses: 192.168.1.1 (router)0 码力 | 1263 页 | 18.62 MB | 1 年前3Cilium v1.7 Documentation
cilium status KVStore: Ok etcd: 1/1 connected: http://127.0.0.1:31079 - 3.3.2 (Leader) [...] Check for level=warning and level=error messages in the Cilium log files Run a bash in a KVStore: Ok etcd: 1/1 connected, has-quorum=true: https://192.168.33.11:2379 - 3.3.12 (Leader) [...] IPAM: IPv4: 2/4 allocated, Allocated addresses: 192.168.1.1 (router) etcd: 1/1 connected: http://demo-etcd-lab- -a.etcd.tgraf.test1.lab.corp.covalent.link:2379 - 3.2.5 (Leader) ContainerRuntime: Ok docker daemon: OK Kubernetes: Ok OK Kubernetes APIs:0 码力 | 885 页 | 12.41 MB | 1 年前3Raft在Curve存储中的工程实践
Algorithm(Extended Version)》 • raft 是一种Leader-Based的Multi-Paxos变种,提供了更完整更清晰的协议描述,更容易理解和实现。 • raft可以解决分布式理论中的CP,即一致性和分区容忍性 • 大多数副本成功即可返回成功 • 速度取决于写的较快的大多数RAFT协议简介 • Leader:负责从客户端接受日志,把日志复制到其 他服务器,当保证安全性的时候告诉其他服务器应用 选举成功,领导⼈会管理整个集群直到任期结束。 • 选举失败,这个任期就会没有领导⼈⽽结束。 raft选举leader raft任期RAFT协议简介 raft复制状态机 1. leader收到客户端的请求。 2. leader把请求指令记录下来,写入日志,然后并⾏发 给其他的服务器,让他们复制这条⽇志。 3. 当这条⽇志条⽬被安全的复制,leader会应⽤这条⽇ 志条⽬到它的状态机中。 4. 然后把执⾏的结果返回给客户端。 writer, Closure* done); int on_snapshot_load(SnapshotReader* reader); void on_leader_start(int64_t term); void on_leader_stop(const butil::Status& status); void on_error(const Error& e); braft 接口 什么是braftCurve介绍0 码力 | 29 页 | 2.20 MB | 5 月前3Curve核心组件之mds – 网易数帆
cs11, cs3) copyset-4: (cs6, cs9, cs12)COPYSET client MDS leader Chunk server 1、发起请求 2、查询元数据 5、返回结果 5、返回结果 user 3、查询leader节点 4、向leader cs发起请求 1. 用户发起请求(fd, offset, length) ; 2. Client 向 mds 查询请求的元数据, offset in chunk, length in chunk); 3. Client 向 chunkserver 查询 chunk 所在的 copyset的leader Chunkserver节点; 4. Client 向 leader 发送读写请求client (IP, port, CopysetId, chunkId, offset in chunk, length in chunk) LeaderScheduler 是leader均衡调度器,根据集 群中leader的分布情况生成leader变更任务; • ReplicaScheduler 是副本数量调度器,根据当 前copyset的副本数生成副本增删任务; • RecoverScheduler 是恢复调度器,根据当前 copyset副本的存活状态生成迁移任务。 触发任务: • RapidLeaderScheduler 是快速leader均衡器,0 码力 | 23 页 | 1.74 MB | 5 月前3Curve核心组件之Client - 网易数帆
IOSplitor:IO转换拆分 ChunkClient、CliClient:与Chunkserver进行通信 前者负责IO请求 后者负责获取复制组(copyset)的leader MDSClient:负责与MDS交互,挂卸载卷、获取元数据信息 CLIENT整体架构QEMU: 实现了QEMU block与Client的对接层 向cinder/glance提供了Python IO处理:转换、拆分、合并 元数据获取及缓存 逻辑chunk与物理chunk映射关系 物理chunk所属的复制组(copyset) 复制组所在的chunkserver列表 复制组的leader信息 Failover支持 MDS:只有主MDS才会监听端口 ChunkServer:通过raft维护复制组内的主-从关系CLIENT IO流程 用户下发一个写请求 off: 子请求由哪个chunkserver处理,依赖以 下信息: 逻辑chunk与物理chunk映射关系 物理chunk所属的复制组(copyset) 复制组所在的chunkserver列表 复制组的leader信息CLIENT IO流程 逻辑chunk与物理chunk映射关系 物理chunk所属的复制组(copyset) 由MDS分配并持久化,client拆分用户请 求时会获取并进行缓存0 码力 | 27 页 | 1.57 MB | 5 月前3Curve设计要点
软件单元:chunkserver • 物理机:server • 故障域:zone • 物理池:poolIO流程 client MDS leader Chunk server 1、发起请求 2、查询元数据 5、返回结果 5、返回结果 user 3、查询leader节点 4、向leader cs发起请求 1. 用户发起请求; 2. Client 向 mds 查询请求的元数据, 并缓存到本地,请求转换为对 并缓存到本地,请求转换为对 chunk 的请求 3. Client 向 chunkserver 查询 chunk 所在的 copyset的leader Chunkserver节点; 4. Client 向 leader 发送读写请求, Chunkserver 完成后通知client; 5. Client通知用户请求完成。背景 01 02 03 04 总体设计 系统特性 近期规划单卷4K随机读写IOPS chunkserver 使用raft,2N + 1 个副本允许 N 副本异常自治 • 自动故障恢复 • 多对多,恢复时间短 • 精确的流量控制,对io几乎无影响自治 • 集群负载和资源均衡 • leader copyset scatter-width • 无需人工干预 • 对io影响几乎无影响易运维 • 升级秒级影响 • 客户端采用CS架构 • NEBD Client: 对接上层业务 •0 码力 | 35 页 | 2.03 MB | 5 月前3
共 40 条
- 1
- 2
- 3
- 4