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

如何配置JGroups避免Jenkins并行测试构建形成集群?

解决Jenkins并行构建中JGroups跨集群问题

核心思路

既然没法移除<transport>标签,那就让每个测试实例的JGroups彻底孤立——不管集群名是不是一样,都让它们找不到任何其他节点,各自成一个单节点集群。

infinispan.xml 微调(可选但更稳妥)

原配置已经能引用测试用的JGroups栈,建议给<transport>明确指定使用我们的测试栈,避免默认栈捣乱:

<transport cluster="mycluster" stack="jgroups"/>

关键:重写jgroups-test.xml 配置

直接用下面的配置,彻底砍掉所有节点发现、跨进程通信的可能:

<config xmlns="urn:org:jgroups"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="urn:org:jgroups http://www.jgroups.org/schema/jgroups-4.2.xsd">

    <!-- 绑定回环地址+随机端口,限制仅本地通信 -->
    <TCP bind_addr="127.0.0.1"
         bind_port="0"
         enable_diagnostics="false"
         client_bind_port="0"
         receive_on_all_interfaces="false"
         loopback="true"/>

    <!-- 强制单节点,彻底禁用所有发现机制 -->
    <LOCAL/>

    <!-- 保留必要的协议,但全部禁用多播/跨进程通信 -->
    <FD_ALL timeout="3000" interval="1000"/>
    <VERIFY_SUSPECT timeout="1500"/>
    <BARRIER/>
    <pbcast.NAKACK2 use_mcast_xmit="false" discard_delivered_msgs="true"/>
    <UNICAST3/>
    <pbcast.STABLE stability_delay="1000" desired_avg_gossip="50000" max_bytes="4M"/>
    <pbcast.GMS print_local_addr="false" join_timeout="500" view_bundling="true"/>
    <UFC max_credits="2M" min_threshold="0.4"/>
    <MFC max_credits="2M" min_threshold="0.4"/>
    <FRAG2 frag_size="60K"/>
</config>

重点配置说明

  • <TCP bind_addr="127.0.0.1">:把通信限制在本地回环,杜绝跨进程的网络交互
  • <LOCAL/>:JGroups的LOCAL协议会强制集群只有当前节点,完全跳过任何节点发现流程
  • 删除原配置里的UDP:UDP的广播特性是跨集群的元凶,必须删掉
  • use_mcast_xmit="false":禁用所有多播传输,确保不会发送能被其他进程接收的消息

额外保险(可选)

如果担心还有漏网之鱼,启动测试时给每个Jenkins构建实例加个唯一的集群名:

-Dinfinispan.cluster.name=mycluster-${BUILD_NUMBER}

这样就算JGroups还有发现能力,集群名不一样也不会合并。

验证方式

启动两个测试进程,看JGroups日志里的view信息,如果显示类似view=[test-node-123|0](只有自己的节点ID),说明配置生效了,不会形成跨构建的集群。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 04:07:06