第 8 章 在 Microsoft Azure 中使用 JBoss EAP 高可用性


Microsoft Azure 不支持基于 UDP 多播的 JGroups 发现协议。虽然您可以使用其他 JGroups 发现协议(如静态配置(TCPPING)、共享数据库(JDBC_PING)、基于文件系统的 ping(FILE_PING)或 TCPGOSSIP),但我们强烈建议您使用专门为 Azure 开发的共享文件发现协议: AZURE_PING

8.1. 为 JBoss EAP 高可用性配置 AZURE_PING

本节介绍将您的 JBoss EAP 群集配置为使用 AZURE_PING JGroups 发现协议。确保您满足 创建虚拟机时的先决条件

AZURE_PING 在 Microsoft Azure 存储帐户中使用一个通用的 Blob 容器。如果您还没有 AZURE_PING 可使用的 blob 容器,请创建一个虚拟机可以访问的容器。

创建 blob 容器后,您需要以下信息来配置 AZURE_PING:

  • storage_account_name :包含 blob 容器的 Microsoft Azure 存储帐户的名称。
  • storage_access_key :存储帐户的 secret 访问密钥。
  • Container :用于 PING 数据的 blob 容器的名称。

若要将 JBoss EAP 配置为使用 AZURE_PING 作为 JGroups 发现协议,您可以使用 预配置的示例 JBoss EAP 配置文件修改现有配置

重要

以下说明使用 UDP JGroups 堆栈配置 AZURE_PING:如果要在 Azure 中配置 JBoss EAP 消息传递高可用性, 您必须改为在 TCP JGroups 堆栈中配置 AZURE_PING。

8.1.1. 使用配置文件示例

JBoss EAP 包含用于在 Microsoft Azure 中配置单机服务器集群的示例配置文件。这些文件位于 EAP_HOME/docs/ 中,examples/configs/standalone-azure-ha.xmlstandalone-azure-full-ha.xml

注意

有关服务器配置文件 区别的说明,请参阅 JBoss EAP 配置指南

这些示例配置文件预配置为在 Microsoft Azure 中使用集群,所需的一切是指定 Azure 存储帐户和 blob 容器的值。

将您所需的示例配置文件复制到 EAP_HOME/standalone/configuration/

8.1.2. 修改现有配置

如果要修改现有的 JBoss EAP 高可用性配置,需要对 jgroups 子系统进行下列更改:

  1. 启动管理 CLI 并嵌入服务器,以对所选的配置文件进行离线更改。例如:

    $ EAP_HOME/bin/jboss-cli.sh
    [disconnected /] embed-server --server-config=standalone-ha.xml
  2. 默认情况下,JGroups 使用 UDP 堆栈。如果您使用的是另一个堆栈,请改回到使用 UDP 堆栈:

    [standalone@embedded /] /subsystem=jgroups/channel=ee:write-attribute(name=stack,value=udp)
  3. 执行以下批量命令以删除现有的 UDP 堆栈,并插入为 Microsoft Azure 配置的新 UDP 堆栈:

    batch
    /subsystem=jgroups/stack=udp:remove
    /subsystem=jgroups/stack=udp:add()
    /subsystem=jgroups/stack=udp/transport=UDP:add(socket-binding=jgroups-udp,properties={ip_mcast=false})
    /subsystem=jgroups/stack=udp/protocol=azure.AZURE_PING:add(properties={storage_account_name="${jboss.jgroups.azure_ping.storage_account_name}", storage_access_key="${jboss.jgroups.azure_ping.storage_access_key}", container="${jboss.jgroups.azure_ping.container}"})
    /subsystem=jgroups/stack=udp/protocol=MERGE3:add
    /subsystem=jgroups/stack=udp/protocol=FD_SOCK:add(socket-binding=jgroups-udp-fd)
    /subsystem=jgroups/stack=udp/protocol=FD:add
    /subsystem=jgroups/stack=udp/protocol=VERIFY_SUSPECT:add
    /subsystem=jgroups/stack=udp/protocol=pbcast.NAKACK2:add(properties={use_mcast_xmit=false,use_mcast_xmit_req=false})
    /subsystem=jgroups/stack=udp/protocol=UNICAST3:add
    /subsystem=jgroups/stack=udp/protocol=pbcast.STABLE:add
    /subsystem=jgroups/stack=udp/protocol=pbcast.GMS:add
    /subsystem=jgroups/stack=udp/protocol=UFC:add
    /subsystem=jgroups/stack=udp/protocol=FRAG2:add
    run-batch
    注意

    如果要将 Microsoft Azure 存储帐户和 blob 容器的值存储在配置文件中,请将上述配置中的系统属性引用替换为 Azure 环境中的值。在以下命令中,使用了启动 JBoss EAP 的示例,即系统属性:

    配置文件中的堆栈 XML 应该类似如下:

    <stack name="udp">
        <transport type="UDP" socket-binding="jgroups-udp">
            <property name="ip_mcast">
                false
            </property>
        </transport>
        <protocol type="azure.AZURE_PING">
            <property name="storage_account_name">
                ${jboss.jgroups.azure_ping.storage_account_name}
            </property>
            <property name="storage_access_key">
                ${jboss.jgroups.azure_ping.storage_access_key}
            </property>
            <property name="container">
                ${jboss.jgroups.azure_ping.container}
            </property>
        </protocol>
        <protocol type="MERGE3"/>
        <protocol type="FD_SOCK" socket-binding="jgroups-udp-fd"/>
        <protocol type="FD"/>
        <protocol type="VERIFY_SUSPECT"/>
        <protocol type="pbcast.NAKACK2">
            <property name="use_mcast_xmit">
                false
            </property>
            <property name="use_mcast_xmit_req">
                false
            </property>
        </protocol>
        <protocol type="UNICAST3"/>
        <protocol type="pbcast.STABLE"/>
        <protocol type="pbcast.GMS"/>
        <protocol type="UFC"/>
        <protocol type="FRAG2"/>
    </stack>
  4. 停止嵌入的服务器并退出管理 CLI:

    [standalone@embedded /] stop-embedded-server
    [disconnected /] exit
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部