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

如何向Ignite集群添加新节点?节点加入失败问题排查

Ignite新节点无法加入集群问题排查

问题现象

当前服务器已运行1个Ignite(GridGain)实例,使用匹配的配置启动新节点后长时间无法加入集群。此前厚客户端连接服务端测试正常,相关配置与现象如下:

运行中服务端配置

<bean id="grid.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
        <property name="igniteInstanceName" value="rho-cache"/>
        <property name="consistentId" value="rho-cache"/>
        <property name="dataStorageConfiguration">
         <bean class="org.apache.ignite.configuration.DataStorageConfiguration">
            <!-- WAL段大小设置为128MB -->
            <property name="walSegmentSize" value="#{128 * 1024 * 1024}"/>

            <property name="defaultDataRegionConfiguration">
               <bean class="org.apache.ignite.configuration.DataRegionConfiguration">
                  <!-- 开启持久化 -->
                  <property name="persistenceEnabled" value="true"/>
               </bean>
            </property>
            <property name="storagePath" value="work"/>
         </bean>
      </property>
      <property name="discoverySpi">
         <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
            <property name="ipFinder">
               <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
                  <property name="addresses">
                     <list>
                        <value>10.1.8.186</value>
                     </list>
                  </property>
               </bean>
            </property>
         </bean>
      </property>
   </bean>

新节点配置

<bean id="grid.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
        <property name="igniteInstanceName" value="rho-1-cache"/>
        <property name="consistentId" value="rho-1-cache"/>
        <property name="dataStorageConfiguration">
         <bean class="org.apache.ignite.configuration.DataStorageConfiguration">
            <!-- WAL段大小设置为128MB -->
            <property name="walSegmentSize" value="#{128 * 1024 * 1024}"/>

            <property name="defaultDataRegionConfiguration">
               <bean class="org.apache.ignite.configuration.DataRegionConfiguration">
                  <!-- 开启持久化 -->
                  <property name="persistenceEnabled" value="true"/>
               </bean>
            </property>
            <property name="storagePath" value="work"/>
         </bean>
      </property>
      <property name="discoverySpi">
         <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
            <property name="ipFinder">
               <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
                  <property name="addresses">
                     <list>
                        <value>10.1.8.186</value>
                         <value>195.168.44.88</value>
                     </list>
                  </property>
               </bean>
            </property>
         </bean>
      </property>
   </bean>

新节点启动日志截图

节点启动界面截图

根因定位

厚客户端连接正常仅代表默认10800客户端端口连通,无法证明集群节点间通信链路正常,问题核心原因如下:

  • 集群节点间通信端口未双向放行:Ignite节点间集群发现依赖默认47500/TCP端口,数据同步、分布式请求转发依赖默认47100/TCP端口,这两个端口如果被防火墙、安全组拦截,就会出现节点发现超时。多数场景下运维仅放通了客户端端口,遗漏了节点间内部通信端口。
  • 静态发现地址配置不全:旧节点的IP发现列表仅配置了自身地址,没有加入新节点IP。静态IP发现模式要求所有节点的地址列表包含全量集群节点IP,否则旧节点无法响应新节点的加入请求,会一直卡在发现等待阶段。
  • 持久化集群基线未更新:两个节点都开启了持久化,Ignite持久化集群激活后会固定基线拓扑,新节点启动后不会自动加入基线,需要手动添加,否则会一直处于待加入状态。
  • 隐性校验项:节点间Ignite版本不一致、网卡绑定错误(节点默认绑定了回环地址而非业务IP)、持久化目录权限不足也会导致同类问题。

修复步骤

按顺序操作即可解决:

  1. 验证端口双向连通性
    分别在两个节点服务器上用telnet或nc工具测试对端47500、47100端口的连通性,任意端口不通则先在防火墙、安全组层面放通对应TCP端口,必须保证双向可通。
  2. 统一全节点发现配置
    把旧节点和新节点的TcpDiscoveryVmIpFinder地址列表修改为完全一致,包含两个节点的IP+端口:
    <property name="addresses">
        <list>
            <value>10.1.8.186:47500</value>
            <value>195.168.44.88:47500</value>
        </list>
    </property>
    
    修改完成后重启旧节点(持久化开启状态下重启不会丢失数据),再启动新节点。
  3. 激活集群并更新基线
    两个节点都启动完成后,进入任意节点的bin目录执行以下命令:
    • 若集群未激活:执行./control.sh --activate激活集群
    • 添加新节点到基线:执行./control.sh --baseline add rho-1-cache
      执行完成后等待1-2分钟,集群会自动完成数据重平衡,新节点即可正常加入。
  4. 兜底校验
    如果以上操作后仍无法加入,检查两个节点的Ignite完整版本号是否完全一致;在配置中为TcpDiscoverySpi和TcpCommunicationSpi显式指定localAddress为节点自身的业务IP,避免绑定回环地址;检查IGNITE_HOME/work目录的读写权限,确保运行进程有完整操作权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 16:48:25