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

WildFly 35高可用配置:如何配置JDBC_PING2协议及推荐方案

WildFly 35 中 JDBC_PING2 协议的配置方法及推荐实践

一、JDBC_PING2 配置步骤

JDBC_PING2 是 JGroups 用于集群节点发现的协议,依赖数据库存储节点信息,配置分为以下几个环节:

1. 准备数据库表

首先在数据库中创建用于存储集群节点信息的表,SQL 示例如下(以 MySQL 为例,其他数据库可适配语法):

CREATE TABLE jgroups_ping (
    cluster_name VARCHAR(255) NOT NULL,
    node_name VARCHAR(255) NOT NULL,
    physical_addr BLOB NOT NULL,
    ping_data BLOB,
    created TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (cluster_name, node_name)
);

2. 配置数据源

在 WildFly 的配置文件(standalone-ha.xml 或 domain.xml)中添加可被集群所有节点访问的数据源,示例:

<datasource jndi-name="java:jboss/datasources/JGroupsPingDS" pool-name="JGroupsPingDS">
    <connection-url>jdbc:mysql://your-db-host:3306/jgroups_db</connection-url>
    <driver>mysql</driver>
    <security>
        <user-name>db_user</user-name>
        <password>db_pass</password>
    </security>
    <pool>
        <min-pool-size>2</min-pool-size>
        <max-pool-size>5</max-pool-size>
    </pool>
</datasource>

确保驱动已正确部署到 WildFly 的 modules 目录或通过 jboss-cli 安装。

3. 替换 JGroups 栈中的发现协议

找到配置文件中 JGroups 子系统的栈配置(默认 udp 或 tcp 栈),将原有 PING 协议替换为 JDBC_PING2,示例:

<subsystem xmlns="urn:jboss:domain:jgroups:11.0">
    <channels default="ee">
        <channel name="ee" stack="udp"/>
    </channels>
    <stacks>
        <stack name="udp">
            <transport type="UDP" socket-binding="jgroups-udp"/>
            <!-- 替换原有 PING 协议为 JDBC_PING2 -->
            <protocol type="JDBC_PING2">
                <property name="datasource_jndi_name">java:jboss/datasources/JGroupsPingDS</property>
                <property name="table_name">jgroups_ping</property>
                <property name="cluster_name">${jboss.cluster.name:ejb}</property>
                <!-- 可选:自动清理过期节点,单位毫秒 -->
                <property name="cleanup_interval">30000</property>
                <property name="max_age">60000</property>
            </protocol>
            <!-- 保留其他协议如 MERGE3、FD_SOCK、VERIFY_SUSPECT 等 -->
            <protocol type="MERGE3"/>
            <protocol type="FD_SOCK" socket-binding="jgroups-udp-fd"/>
            ...
        </stack>
    </stacks>
</subsystem>

二、推荐配置方式

  1. 优先采用域模式统一管理
    若集群节点数量较多,使用 WildFly 域模式(Domain Mode),通过主机控制器统一配置数据源和 JGroups 栈,避免每个节点单独修改配置,减少配置不一致风险。

  2. 优化数据源连接池
    JDBC_PING2 对数据库的访问频率较低,无需配置过大的连接池,建议设置 min-pool-size 为 2-3,max-pool-size 为 5-10,避免资源浪费。

  3. 启用自动清理机制
    务必配置 cleanup_interval 和 max_age 参数,自动清理数据库中长时间未更新的无效节点记录,防止无效数据堆积影响集群发现效率。

  4. 保证数据库高可用
    JDBC_PING2 依赖的数据库需具备高可用能力(如主从复制、数据库集群),避免数据库单点故障导致整个集群的节点发现功能失效。

  5. 按需选择 XA 数据源
    仅当集群涉及分布式事务场景时,才需要使用 XA 数据源;普通 HA 场景下,非 XA 数据源已足够满足需求,可降低配置复杂度。

  6. 验证集群发现有效性
    配置完成后,启动多个集群节点,检查数据库表中是否生成对应节点记录;模拟节点宕机,确认过期记录是否被自动清理,验证集群节点能否正常发现与退出。

内容的提问来源于stack exchange,提问作者László Tóth

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 20:35:16