You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Control Script或Ignite REST API获取集群运行服务器节点数?

获取Ignite集群运行服务器节点数量的方法

以下是几种无需查看日志即可获取Ignite集群运行服务器节点数的方案,优先覆盖你提到的control script和REST API方式:

1. 使用Control Script获取拓扑节点数

Ignite的control.sh脚本提供了--topology参数,可直接输出集群拓扑快照,从中提取当前运行的服务器节点数量。在K8s环境下的命令示例:

runningServerNodes=$(kubectl --kubeconfig config.conf exec <ignite-node> -n {client_name} -- /opt/ignite/apache-ignite/bin/control.sh --topology | grep "Servers" | cut -d ':' -f2 | sed 's/^ *//g')

该命令会返回拓扑中所有处于运行状态的服务器节点总数(包含基线内和基线外的节点)。如果仅需基线内的运行节点,可结合--baseline命令过滤状态为ONLINE的节点:

onlineBaselineNodes=$(kubectl --kubeconfig config.conf exec <ignite-node> -n {client_name} -- /opt/ignite/apache-ignite/bin/control.sh --baseline | grep -A10 "Baseline nodes" | grep "ONLINE" | wc -l)

2. 使用Ignite REST API获取节点数

Ignite REST API的/ignite?cmd=topology接口可返回集群拓扑的JSON数据,通过解析该数据即可统计服务器节点数量。假设REST服务端口为默认的8080,示例请求及解析命令:

# 发送请求并解析服务器节点数
runningServerNodes=$(curl -s http://<ignite-rest-node-ip>:8080/ignite?cmd=topology | jq '[.topologyNodes[] | select(.isClient == false)] | length')

返回的JSON中,topologyNodes数组包含所有节点信息,通过isClient: false筛选出服务器节点,再统计数量即可。

3. 客户端代码直接获取

如果是Ignite客户端应用,可直接通过Ignite SDK提供的API获取集群拓扑信息,无需依赖外部脚本或REST请求。以Java客户端为例:

Ignite ignite = Ignition.start();
// 获取当前运行的服务器节点数量
int serverNodeCount = ignite.cluster().forServers().nodes().size();

关于你的临时方案

你当前的命令仅获取基线节点总数,但基线节点可能包含已下线的节点,若需要的是当前正在运行的服务器节点数,上述前两种方案会更准确。

内容的提问来源于stack exchange,提问作者curious_soul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 02:35:21