资讯详情

CubeFS 集群管理 API 实战:Master 节点运维接口全解析

📅 2026/10/4 14:26:45 | 华诺云谱 👁 阅读
CubeFS 集群管理 API 实战:Master 节点运维接口全解析
存储分布式文件系统对象存储云原生【免费下载链接】cubefscloud-native distributed storage项目地址https://gitcode.com/gh_mirrors/cu/cubefs点击查看免费下载本篇技术指南聚焦 CubeFS 分布式存储系统中资源管理节点 Master 提供的集群管理类 HTTP API涵盖集群信息查询、冻结/解冻、空间与拓扑统计、可用区管理以及运行参数动态调优等核心运维操作。读完本文你将掌握全部集群级管理命令的请求格式、参数含义、响应字段解读方式并能结合 Master 源码master/http_server.go、master/api_service.go理解每个接口背后的实现机制从而在日常集群运维中熟练运用。概述如何调用 Master 集群管理 APICubeFS 的所有集群管理功能都由资源管理节点 Master 对外暴露的 HTTP 接口承载。调用方式统一为curl请求其中IP 和端口分别取自 Master 配置文件中的ip与listen配置项默认端口为17010。例如curl -v http://10.196.59.198:17010/admin/getCluster | python -m json.tool命令中的-v用于输出完整请求/响应报文便于排查问题管道后的python -m json.tool则对返回的 JSON 进行格式化排版提升可读性。从源码角度看这些接口的路由注册集中在 master/http_server.go 的registerRouter中例如proto.AdminGetCluster路由绑定m.getCluster见 master/http_server.go#L284-L286、proto.AdminClusterFreeze绑定m.setupAutoAllocation见 master/http_server.go#L304-L306、proto.AdminClusterStat绑定m.clusterStat见 master/http_server.go#L325。下文逐一讲解各接口。获取集群基本信息GET /admin/getClustercurl -v http://10.196.59.198:17010/admin/getCluster | python -m json.tool该接口返回集群的整体快照包括数据节点DataNode、元数据节点MetaNode、卷Volume的概况以及集群当前的核心运行指标。响应示例如下{ code:0, data:{ Applied:886268, BadMetaPartitionIDs:[ ], BadPartitionIDs:[ ], DataNodeStatInfo:{ }, DataNodes:[ ], DisableAutoAlloc:false, LeaderAddr:127.0.0.1:17010, MaxDataPartitionID:735, MaxMetaNodeID:57, MaxMetaPartitionID:59, MetaNodeStatInfo:{ }, MetaNodeThreshold:0.75, MetaNodes:[ ], Name:cluster, VolStatInfo:[ ] }, msg:success }关键字段含义如下字段说明AppliedMaster Raft 状态机已应用的日志序号raft index反映 Master 元数据同步进度Name集群名称对应 Master 配置中的集群名LeaderAddr当前 Master 集群的 Leader 地址格式为ip:portDisableAutoAlloc是否关闭自动分配数据分片即集群是否被冻结MetaNodeThreshold元数据节点容量阈值比例默认 0.75超过该阈值将触发元数据分片均衡MaxDataPartitionID当前已分配的最大数据分片 IDMaxMetaNodeID当前已注册的最大元数据节点 IDMaxMetaPartitionID当前已分配的最大元数据分片 IDDataNodes/MetaNodes集群内全部数据节点 / 元数据节点列表BadPartitionIDs/BadMetaPartitionIDs异常数据分片 / 元数据分片 ID 列表用于健康检查DataNodeStatInfo/MetaNodeStatInfo数据节点 / 元数据节点的统计信息VolStatInfo集群中所有卷的统计信息列表从实现上看master/api_service.go#L908 的getCluster处理器会组装proto.ClusterView结构体DisableAutoAlloc直接取自m.cluster.DisableAutoAllocateApplied取自 Master 状态机的m.fsm.appliedMaxDataPartitionID等 ID 取自集群 ID 分配器idAllocVolStatInfo则遍历m.cluster.allVolNames()从内存缓存中逐卷拉取统计信息见 master/api_service.go#L977-L991。此外该接口还支持可选的volStorageClass参数布尔值传入true时可额外返回混合云存储场景下各卷按存储介质类别StorageClass的用量与迁移统计。冻结与解冻集群GET /cluster/freezecurl -v http://10.196.59.198:17010/cluster/freeze?enabletrue当集群被冻结enabletrue后卷将不再自动创建数据分片也不能手动创建分片。该能力常用于集群维护窗口期如扩缩容、硬件检修、容量规划调整或故障场景下的流量管控。参数列表参数类型描述enablebooltrue表示冻结集群关闭自动分配false表示解冻源码层面master/api_service.go#L263 的setupAutoAllocation处理器解析enable参数后调用m.cluster.setDisableAutoAllocate(status)最终将集群的DisableAutoAllocate标志置位或复位并写入 Raft 状态机持久化你可以在/admin/getCluster的返回结果中通过DisableAutoAllocate字段核实冻结是否生效。获取集群空间信息GET /cluster/statcurl -v http://10.196.59.198:17010/cluster/stat该接口按区域Zone维度展示集群的空间使用情况是容量规划与区域负载评估的首选入口。响应示例{ DataNodeStatInfo: { TotalGB: 1, UsedGB: 0, IncreasedGB: -2, UsedRatio: 0.0 }, MetaNodeStatInfo: { TotalGB: 1, UsedGB: 0, IncreasedGB: -8, UsedRatio: 0.0 }, ZoneStatInfo: { zone1: { DataNodeStat: { TotalGB: 1, UsedGB: 0, AvailGB: 0, UsedRatio: 0, TotalNodes: 0, WritableNodes: 0 }, MetaNodeStat: { TotalGB: 1, UsedGB: 0, AvailGB: 0, UsedRatio: 0, TotalNodes: 0, WritableNodes: 0 } } } }字段解读字段说明TotalGB/UsedGB/AvailGB该维度下的总容量 / 已用容量 / 可用容量单位 GBIncreasedGB容量变化增量用于观察近期空间增长趋势UsedRatio使用率已用/总容量TotalNodes节点总数WritableNodes可写节点数即仍接受写入的节点用于判断区域是否接近写满实现上master/api_service.go#L675 的clusterStat处理器组装proto.ClusterStatInfo其中全局统计取自m.cluster.dataNodeStatInfo/m.cluster.metaNodeStatInfo区域统计取自m.cluster.zoneStatInfos映射区域统计由 master/cluster_stat.go 中的updateZoneStatInfo周期性刷新因此该接口反映的是近期的统计快照而非实时值。获取集群拓扑信息GET /topo/getcurl -v http://10.196.59.198:17010/topo/get该接口按区域Zone→ 节点集NodeSet→ 节点的层次结构返回集群拓扑。响应示例[ { Name: zone1, Status: available, NodeSet: { 700: { DataNodeLen: 0, MetaNodeLen: 0, MetaNodes: [], DataNodes: [] } } }, { Name: zone2, Status: available, NodeSet: { 800: { DataNodeLen: 0, MetaNodeLen: 0, MetaNodes: [], DataNodes: [] } } } ]字段解读字段说明Name区域名称如zone1、zone2Status区域可用状态available表示可用unavailable表示已被禁用NodeSet该区域下的节点集键为 NodeSet ID每个节点集内包含数据节点与元数据节点DataNodeLen/MetaNodeLen节点集内数据节点 / 元数据节点的数量DataNodes/MetaNodes节点集内数据节点 / 元数据节点的视图列表该接口由 master/http_server.go#L437-L439 注册的GetTopologyView路由对应 master/api_service.go#L410 的getTopology处理器实现其数据来自 Master 的拓扑管理模块m.cluster.t与下文可用区管理接口共享同一数据源。更新可用区状态GET /zone/updatecurl -v http://10.196.59.198:17010/zone/update?namezone1enablefalse将指定可用区的状态更新为可用或不可用。禁用某个可用区后Master 在分配新分片时将跳过该区域可用于区域级维护或故障隔离。参数列表参数类型描述namestring可用区名称enablebooltrue表示可用false表示不可用源码层面master/api_service.go#L454 的updateZone处理器首先从请求中提取name与enable通过m.cluster.t.getZone(name)找到目标区域enabletrue时调用zone.setStatus(normalZone)否则调用zone.setStatus(unavailableZone)见 master/api_service.go#L485-L489。此外该接口还支持额外的节点选择器dataNodeSelector、metaNodeSelector、dataNodesetSelector、metaNodesetSelector参数可在更新区域状态的同时调整节点/节点集选择策略便于精细化管理节点归属。获取所有可用区信息GET /zone/listcurl -v http://10.196.59.198:17010/zone/list返回集群中所有可用区的名称与可用状态适合在变更可用区前后做一致性核对。响应示例[ { Name: zone1, Status: available, NodeSet: {} }, { Name: zone2, Status: available, NodeSet: {} } ]其中NodeSet字段在部分版本中仅列出节点集 ID 到节点集视图的映射空对象表示当前区域下尚未创建节点集或节点集为空。实现上master/api_service.go#L503 的listZone处理器遍历m.cluster.t.getAllZones()为每个区域构造ZoneView并填充Statuszone.getStatusToString()与节点集选择器信息见 master/api_service.go#L509-L518。获取集群运行参数GET /admin/getNodeInfocurl -v http://192.168.0.11:17010/admin/getNodeInfo返回集群当前生效的运行参数便于运维确认各限速与修复参数的实际取值。响应示例{ code: 0, data: { autoRepairRate: 0, batchCount: 0, deleteWorkerSleepMs: 0, loadFactor: 0, maxDpCntLimit:0, markDeleteRate: 0 }, msg: success }该接口与下面的setNodeInfo配套使用实现集群运行参数的在线查询与热更新无需重启 Master 或相关节点。设置集群运行参数GET /admin/setNodeInfocurl -v http://192.168.0.11:17010/admin/setNodeInfo?batchCount100markDeleteRate100通过 URL 查询参数动态设置集群级运行参数参数均为可选只需携带本次要修改的项。参数列表参数类型描述batchCountuint64metanode 删除批量大小元数据节点批量删除条目数markDeleteRateuint64datanode 批量删除限速设置0 代表未做限速设置autoRepairRateuint64datanode 上同时修复的 extent 个数deleteWorkerSleepMsuint64删除间隔时间毫秒loadFactoruint64集群超卖比默认 0不限制maxDpCntLimituint64每个节点上 dp 最大数量默认 30000 代表默认值各参数的实际影响batchCount控制元数据节点metanode在删除目录树/文件时单批处理的条目数批量越大删除吞吐越高但对内存与 Raft 日志的瞬时压力也越大适合在批量清理场景下临时调大。markDeleteRate数据节点datanode执行标记删除的速率限制0表示不限速限速可避免大批量删除导致的数据节点 IO 抖动。autoRepairRate单台 datanode 上同时进行修复repair的 extent 个数上限调大可加快故障分片修复但会占用更多 IO 带宽。deleteWorkerSleepMs删除工作线程的休眠间隔间接控制删除任务的节流节奏。loadFactor集群超卖比允许数据节点承载的分片容量总和超过物理容量默认0表示不限制。maxDpCntLimit单个节点上允许承载的数据分片dp最大数量用于防止单节点分片过载默认 3000传0表示采用默认值。从实现看master/api_service.go#L3676 的setNodeInfoHandler通过parseAndExtractSetNodeInfoParams统一解析参数随后按参数键逐一生效例如batchCount调用m.cluster.setMetaNodeDeleteBatchCount(bc)、markDeleteRate调用m.cluster.setDataNodeDeleteLimitRate(v)、loadFactor调用m.cluster.setClusterLoadFactor(factor)见 master/api_service.go#L3692-L3717。这些参数会经 Raft 同步到所有 Master 副本并持久化因此通过/admin/getNodeInfo即可核对设置结果。小结集群管理 API 一览API作用关键参数GET /admin/getCluster查看集群整体快照节点、卷、分片 ID、冻结状态volStorageClass可选GET /cluster/freeze冻结/解冻集群禁止自动与手动创建数据分片enableGET /cluster/stat按区域查看集群空间使用统计无GET /topo/get查看 Zone→NodeSet→Node 层次拓扑无GET /zone/update更新可用区可用/不可用状态name、enableGET /zone/list列出所有可用区及状态无GET /admin/getNodeInfo查询集群运行参数无GET /admin/setNodeInfo热更新集群运行参数batchCount、markDeleteRate、autoRepairRate、deleteWorkerSleepMs、loadFactor、maxDpCntLimit实战建议日常巡检可组合getCluster健康概览cluster/stat容量水位topo/get区域分布进入维护窗口时先cluster/freeze?enabletrue冻结分配完成后再以enablefalse解冻节点负载不均时可临时调整autoRepairRate与maxDpCntLimit控制修复与分片密度。所有接口的返回均以code/msg包裹code0表示成功且 Master 在 master/api_service.go 中统一通过AuditLog记录每次管理操作便于事后审计追溯。赞分享存储分布式文件系统对象存储云原生【免费下载链接】cubefscloud-native distributed storage项目地址https://gitcode.com/gh_mirrors/cu/cubefs点击查看免费下载相关推荐CubeFS BlobStore Clustermgr 管理 API 实战指南节点、磁盘、卷与后台任务运维CubeFS BlobStore Clustermgr 管理 API 实战指南节点、磁盘、卷与后台任务运维 Clustermgr 是 CubeFS BlobS存储分布式文件系统对象存储云原生RustFS MadAdmin 管理接口深入解析集群管理、自愈运维与 IAM 治理实战RustFS MadAdmin 管理接口深入解析集群管理、自愈运维与 IAM 治理实战 导读 RustFS MadAdmincrate 名为 rustfs后端对象存储分布式存储视频号视频、音乐、m3u8 保存到本地res-downloader 资源下载完整指南视频号视频、音乐、m3u8 保存到本地res downloader 资源下载完整指南 想把看过的内容和买过的音乐存到本地res downloader 是一款桌面应用网络音视频上一篇5分钟搞定Windows风扇控制FanControl完全指南下一篇FanControl终极实战指南5分钟精通Windows风扇控制与温度管理创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑