Curve元数据节点高可用© XXX Page 1 of 30 Curve元数据节点高可用© XXX Page 2 of 30 1. 需求 2. 技术选型 3. etcd clientv3的concurrency介绍 3.1 etcd clientV3的concurrency模块构成 3.2 Campaign的流程 3.2.1 代码流程说明 3.2.2 举例说明Campagin流程 3.3 Observe的流程 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受到影响退出,不一定可以正常处理。 4.2.4.1 LeaseTIme < ElectionTime的情况 4 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是元数据节点,负责空间分配,集群状态监控,集群0 码力 | 30 页 | 2.42 MB | 6 月前3
36-云原生监控体系建设-秦晓辉监控难度加大 从 Kubernetes 架构来 看要监控的组件 Kubernetes架构 l 服务端组件,控制面:API Server、Scheduler、 Controller-Manager、ETCD l 工作负载节点,最核心就是监控Pod容器和节点本 身,也要关注 kubelet 和 kube-proxy l 业务程序,即部署在容器中的业务程序的监控,这 个其实是最重要的 随着 Kubernetes “unschedulable” 表示 无法调度,“error” 表示调度器内部错误 Kubernetes控制面 etcd 的监控 • ETCD 也是直接暴露 /metrics 接口,可以直接抓取 • ETCD 可以考虑使用 sidecar 模式来抓,对于运维比较简 单一些,不需要先部署 ETCD 再去配置抓取规则 • ETCD 强依赖硬盘做持久化,所以要特别关注硬盘相关的 指标,尽量用 SSD 或 NVME 的盘 • prometheus 插件即可,大盘可以参考 k8s/etcd-dash.json • etcd_server_has_leader etcd 是否有 leader • etcd_server_leader_changes_seen_total 偶尔切主问题不大,频繁切主就要关注了 • etcd_server_proposals_failed_total 提案失败次数 • etcd_disk_backend_commit_duration_seconds0 码力 | 32 页 | 3.27 MB | 6 月前3
Curve核心组件之snapshotcloneclient的接口层)与S3交互,存取s3 中的对象。 SnapshotDataStore: • SnapshotCloneMetaStore负责管理快照和克隆任务等元数据, 通过调用etcdclient,与etcd存储交互,存取etcd中的快照和克隆 元数据。 SnapshotCloneMetaStore: • CurveClient封装了Client接口,负责与MDS和ChunkServer交互。 CurveClient: 负责管理快照和克隆源卷的引用计数。 SnapshotRef & CloneRef:快照总体流程 • 1.用户发起快照,生成快照任务,并持久化到 etcd,开始执行快照任务。 • 2.在curve中创建内部快照,并返回快照信息, 然后将快照信息更新到etcd。此时,即返回用 户快照成功,可以进行读写。 • 3.向mds查询快照的元数据,转储快照元数据 块metaObject。 • 4.根据快照元数据信息,转储快照数据块 数据 快照流程: chunk chunk chunk chunkserver meta object data object data object S3 Snap Task etcd mds client 3.获取快照元数据 datastore metastore http service clone Task user 快照元数据 2.创建内部快照 5.删除内部快照0 码力 | 23 页 | 1.32 MB | 6 月前3
CurveFS ChunkID持久化1. 1. 1. 2. 1. 2. 3. 4. 3. 2. 背景 将原有的获取chunkid的方法从space迁入mds中,并持久化写入etcd中; 只考虑单 mds 工作的情况; chunkid全局递增。 实现 proto/space.proto 中的 message AllocateS3ChunkRequest、message A KVStorageClient 申请新的chunkid Bundle (etcd中记录的已使用chunkID增加一个chunkID Bundle 的大小); 申请失败 storeKey_不存在,从现在已使用的 ChunkID 继续申请新的 Bundle 首次连接 etcd etcd 环境切换 storeKey_ 被删除 其他 storeKey_ 在etcd上的Value不可解码 返回一个新的chunkid 返回一个新的chunkid 方案 class ChunkIDGenerator { client_; // etcd chunkIdStoreKey_; // chunkid 存储在etcd上的 key nextId_; // 下一个可分配的 chunkID lastId_; // 当前chunkID bundle 内最后一个可分配的chunkID bundleSize_;// chunkId池子的大小0 码力 | 3 页 | 79.38 KB | 6 月前3
Nacos架构&原理
189 > Nacos 最佳实践 高级监控 根据 Nacos 监控手册,结合 Prometheus 和 Grafana 监控 Nacos 指标。 Nacos Eureka Sync Etcd 监控 从如下界面可以监控到,业务服务列表是否在同步服务的集群上呈现⼀致性 Hash 均衡分布。 Nacos 最佳实践 < 190 Nacos 日志 日志合并及 JSON 格式化 将 现也不 如⼀致性 Hash 优雅,最后没采用。 Sync ⾼可⽤⼀致性 Hash + Etcd 方案 折腾了这么几次后,发现同步业务服务列表是持久化在数据库,同步服务器挂掉后 reHash 通知机 制是由 Zookeeper 来负责,两者能否可以合并到⼀个中间件上以降低成本?于是我们想到了 Etcd 方案,即通过它实现同步业务服务列表持久化 + 业务服务列表增减的通知 + 同步服务器挂掉后 同步服务器挂掉后 reHash 通知。至此方案最终确定,即两个注册中心( Eureka 和 Nacos )的双向同步方案,通过 第三个注册中心( Etcd )来做桥梁。 Sync 业务服务名列表定时更新优化方案 解决了⼀致性 Hash 的问题后,还有⼀个潜在风险,即官方方案每次定时同步业务服务的时候,都 会去读取全量业务服务名列表,对于业务服务数较少的场景应该没问题,但对于我们这种场景下, 这么频繁的全量去拉业务服务列表,会不会对0 码力 | 326 页 | 12.83 MB | 9 月前3
逐灵&木苏-阿里巴巴 K8S 超大规模实践经验Kube-APIServer Webhook ETCD 数据构建 压测场景 压测环境 压测报告 压测平台 监控&大盘• APIServer & ETCD & Webhook Load balance ETCD Webhook Client Kubelets APIServer Http2 -> http1.1 Upgrade Etcd client v3.3.15 周期性重建连接 周期性重建连接 slb slb 直连 设置maxSurge• 客户端和服务端的同步机制 List & Watch优化 ETCD Cache Pod A V1 Pod A V2 Pod A V3 Reflector APIServer Watch Cache List & Watch Informer Reflector Store List & Watch• 网络抖动造成informer重新List APIServer Client List / Get ETCD rv=nil Page read Filter by condition• APIServer 缓存一致性读 • 索引支持动态新增 • Cache Ready Cache Read & Index APIServer Client list/get @t0 ETCD rv=nil 1. Get rv@t0 Cache0 码力 | 33 页 | 8.67 MB | 6 月前3
Best practices for building Kubernetes Operatorsjust after reading the data from ETCD ● Defaulting happens on the object ○ in the request to the API server using the request version defaults, ○ when reading from etcd using the storage version defaults “Defaults applied when reading data from etcd are not automatically written back to etcd. An update request via the API is required to persist those defaults back into etcd”FinalizersFinalizers ● “Finalizers0 码力 | 36 页 | 2.19 MB | 6 月前3
03-基于Apache APISIX的全流量API网关-温铭的所有变量作为条件,并且支持自定义函数;其他网关都是 内置的几个条件; • Apache APISIX 使用 etcd 作为配置中心,没有单点,任意宕掉一台机 器,网关集群还能正常运行。其他基于 mysql,postgres 的网关都会有单点 问题 • Apache APISIX 的配置下发只要 1 毫秒就能达到所有网关节点,使用的是 etcd 的 watch;其他网关是 定期轮询数据库,一般需要 5 秒才能获取到最新配置 • 租车:大搜车、租租车、优信二手车 • 金融:泰康、同程金服、空中云汇 • 在线教育:好未来、作业帮、腾讯教育、网易有道 APISIX 和 Kong 的对比 对⽐比项 APISIX Kong 技术架构 Nginx + etcd Nginx + postgres ⾼高可⽤用 ⾮非常可靠,没有单点 ⼀一般,有数据库 的单点 精细化路路由 ⽀支持 Nginx 变量量和⾃自 定义函数 固定的⼏几个条件 配置⽣生效时间 事件驱动,⼩小于 案例:Apache APISIX dashboard 的重构,社区对于 MySQL 的方案不满, “怨声载道”,然后来自 5 家公司的贡献者一起重构掉它 规划 • 2.0 版本(即将发布):使用 etcd v3 替代 v2 • 3.0 版本:废弃 admin API,分离 DP 和 CP • 2021 年的 flag:Apache APISIX 的贡献者超过 200 位 最后 记住我们的图标0 码力 | 11 页 | 6.56 MB | 6 月前3
TiDB v8.2 Documentationarchitecture As an incremental data replication tool for TiDB, TiCDC is highly available through PD’s etcd. TiCDC pulls data changes from TiKV nodes through multiple Capture pro- cesses, and then sorts and configuration item is successfully modified, the result is persisted in etcd instead of in the configuration file; the configuration in etcd will prevail in the subsequent operations. The names of some configuration ums • Alert rule: (sum(pd_cluster_status{type="store_down_count"})by (instance)> 0)and ( �→ sum(etcd_server_is_leader)by (instance)> 0) • Description: PD has not received a TiKV/TiFlash heartbeat for0 码力 | 6549 页 | 108.77 MB | 10 月前3
TiDB v8.3 Documentationarchitecture As an incremental data replication tool for TiDB, TiCDC is highly available through PD’s etcd. TiCDC pulls data changes from TiKV nodes through multiple Capture pro- cesses, and then sorts and configuration item is successfully modified, the result is persisted in etcd instead of in the configuration file; the configuration in etcd will prevail in the subsequent operations. The names of some configuration ums • Alert rule: (sum(pd_cluster_status{type="store_down_count"})by (instance)> 0)and ( �→ sum(etcd_server_is_leader)by (instance)> 0) • Description: PD has not received a TiKV/TiFlash heartbeat for0 码力 | 6606 页 | 109.48 MB | 10 月前3
共 41 条
- 1
- 2
- 3
- 4
- 5













