当前位置: 首页 > 知识库问答 >
问题:

带有Infinispan Server 7.0并嵌入JBoss AS7的集群

楚鸿波
2023-03-14

我在跨不同服务器集群Infinispan(通过JGroup)时遇到问题。当我尝试这种集群时:

  • Infinispan 7 standalone server 1上的子系统配置中配置的缓存容器(基于Wildfly)
  • Infinispan 7 standalone server 2上的子系统配置中配置的缓存容器(基于Wildfly)

。。。每个节点都可以很好地加入集群(我可以通过假设JGroups生成的输出看到)。

但是,当我尝试这种集群时:

  • 缓存容器配置infinispan.xml与Infinispan 7 dep jar一起部署在JBoss AS 7服务器1上
  • 在Infinispan 7独立服务器2(基于Wildfly)上的子系统配置中配置的缓存容器

...将应用程序部署到JBoss AS 7中的节点不会加入集群。

简而言之,似乎使用应用程序部署的节点(即,战争中嵌入的Infinispan jars和config)无法使用单独部署的节点(通过subsystem config在xml中配置的缓存容器)加入集群。

需要注意的是,我正在使用Infinispan 7(我承认它现在处于beta阶段,但我需要使用它,因为Infinispan 6中的JCache依赖项不幸指向cache-api依赖项的1.0.0 PFD版本(JSR 107)。

我还将注意到,我将Infinispan与我的应用程序一起部署的原因是,我部署到的服务器不一定有可用的Infinispan(即JBoss AS 7,在某些情况下很可能是WebSphere)。有人可能会告诉我,在应用程序服务器上配置Infinispan而不是在我的应用程序中部署它更合适,但在尝试了1个小时将JBoss配置为带有Infinispan 7子系统的7之后,我放弃了。我上面的部署场景似乎是合法的。。。。除非另有建议?

我正在与应用程序一起部署的JGroups配置:

<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-3.4.xsd">

    <TCP bind_port="7802" />
    <TCPPING timeout="3000" initial_hosts="${jgroups.tcpping.initial_hosts:MY_INTERNAL_DOMAIN[7800],localhost[7801],localhost[7802]}" port_range="1"
    num_initial_members="3" />
    <VERIFY_SUSPECT timeout="1500" />
    <pbcast.NAKACK use_mcast_xmit="false" retransmit_timeout="300,600,1200,2400,4800" discard_delivered_msgs="true" />
    <pbcast.STABLE stability_delay="1000" desired_avg_gossip="50000" max_bytes="400000" />
    <pbcast.GMS print_local_addr="true" join_timeout="3000" view_bundling="true" />

</config>

我在Infinispan 7独立服务器中配置的JGroup堆栈:

<stack name="tcp">          
    <transport type="TCP">
        <property name="bind_port">7800</property>
    </transport>
    <protocol type="TCPPING">
        <property name="timeout">3000</property>
        <property name="initial_hosts">${jgroups.tcpping.initial_hosts:MY_INTERNAL_DOMAIN.atldev.com[7800],localhost[7801]}</property>
        <property name="port_range">1</property>
        <property name="num_initial_members">3</property>
    </protocol>
    <protocol type="VERIFY_SUSPECT">
        <property name="timeout">1500</property>
    </protocol>
    <protocol type="pbcast.NAKACK">
        <property name="use_mcast_xmit">false</property>
        <property name="retransmit_timeout">300,600,1200,2400,4800</property>
        <property name="discard_delivered_msgs">true</property>
    </protocol>
    <protocol type="pbcast.STABLE">
        <property name="stability_delay">1000</property>
        <property name="desired_avg_gossip">50000</property>
        <property name="max_bytes">400000</property>
    </protocol>
    <protocol type="pbcast.GMS">
        <property name="print_local_addr">true</property>
        <property name="join_timeout">3000</property>
        <property name="view_bundling">true</property>
    </protocol>
</stack>

Infinispan 7独立服务器中配置的缓存容器:

    <subsystem xmlns="urn:infinispan:server:core:7.0" default-cache-container="ervm-caches">
        <cache-container name="ervm-caches" default-cache="ervm-default-cache">
            <transport stack="tcp" cluster="ervm-cluster"/>
            <distributed-cache name="default" mode="SYNC" segments="20" owners="2" remote-timeout="30000" start="EAGER">
                <locking acquire-timeout="30000" concurrency-level="1000" striping="false"/>
                <transaction mode="NONE"/>
            </distributed-cache>
            <distributed-cache name="memcachedCache" mode="SYNC" segments="20" owners="2" remote-timeout="30000" start="EAGER">
                <locking acquire-timeout="30000" concurrency-level="1000" striping="false"/>
                <transaction mode="NONE"/>
            </distributed-cache>
            <replicated-cache name="ervm-default-cache" mode="SYNC" start="EAGER"/>
        </cache-container>
    </subsystem>

在我的应用程序(war)中配置并部署到JBoss的缓存容器为7:

<?xml version="1.0" encoding="UTF-8"?>
<infinispan xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:infinispan:config:7.0 http://www.infinispan.org/schemas/infinispan-config-7.0.xsd"
    xmlns="urn:infinispan:config:7.0">

    <jgroups>
        <stack-file name="tcp" path="ervm-jgroups-tcp.xml" />
        <stack-file name="udp" path="ervm-jgroups-udp.xml" />
    </jgroups>

    <cache-container name="ervm-caches" default-cache="ervm-default-cache">
        <transport stack="tcp" cluster="ervm-cluster" />
        <replicated-cache name="ervm-default-cache" mode="SYNC" start="EAGER" />
    </cache-container>

</infinispan>

共有1个答案

都博裕
2023-03-14

我不确定这是否有帮助,但您应该使用套接字绑定来指定端口等:

 <subsystem xmlns="urn:jboss:domain:jgroups:1.2" default-stack="udp">
     <stack name="udp">
        <transport type="UDP" socket-binding="jgroups-udp">
        ...
     </stack>
 </subsystem>
 <interfaces>
     <interface name="public">
        <inet-address value="${iface.public}" />
     </interface>
     <interface name="clustering">
        <inet-address value="${iface.clustering}" />
     </interface>
 </interfaces>
 <socket-binding-group name="standard-sockets" default-interface="public">
     <socket-binding name="jgroups-udp" interface="clustering" multicast-address="${udpGroup}" multicast-port="45688" port="55200" />
     <socket-binding name="jgroups-udp-fd" interface="clustering" port="54200" />

此外,如果您希望通过协议(HotRod、Memcached…)组合访问和嵌入式访问,则应启用兼容模式。

 类似资料:
  • 问题内容: 我们有一个基于Java的系统,该系统从数据库中读取数据,将各个数据字段与预设标签合并,然后将结果转换为with 。 在格式,它看起来是这样的: 现在,我正在寻找一种允许某些字段包含静态 HTML格式 内容的方法。此内容将通过我们的支持HTML编辑器生成(沿着线的东西,等),或者从外部粘贴。 我的计划是遵循此JavaWorld文章的配方: 用于将HTML格式的字符串转换为正确的XHTML

  • null ServerEndpoint: 谢谢你。

  • 我有一个数据结构,其中一个主题有许多问题(一对多),一个问题有许多答案(一对多)。 我已经在主题表单中设置了问题作为嵌入式集合,由于有了烹饪书条目,我可以百分之百地解决所有问题。 当我试图开发它以在问题表单中嵌入一组答案表单时,我遇到了一个问题。 包含顶层原型表单的数据原型属性具有表单的全部深度,因此包括问题和答案的原型。但它对每个级别使用相同的占位符。 你可以在底部看到一条很长的线,我想这就是原

  • 问题内容: 澄清: 这个问题是关于对基于JAX-WS的REST服务进行GZIP处理,但是我决定更改主题以使其更容易找到 我正在通过JAX-WS实现REST服务,并以标准方式发布它(原因是我想避免使用servlet容器或应用程序服务器)。 有办法让服务器gzip响应内容吗? 如何 实际提供的示例可以正常工作,它使您可以在没有servlet容器的嵌入式轻量级服务器上构建JAX-RS样式的服务器,但是需

  • 问题内容: 我正在运行Hibernate 4.2.6.Final / JPA2,并尝试具有@Embeddable对象的@ElementCollection列表,这些对象本身包含String的@ElementCollection列表。 但是,hibernate在尝试实例化EntityManager时抛出ConcurrentModificationException,我根本不了解。 如果我注释掉in

  • 问题内容: 是否可以使用ReactJavaScript库创建可嵌入的JavaScript小部件,其中: React库被“嵌入”在小部件中 嵌入式React库的版本可能与加载小部件的页面上的React库的版本不同,就像使用jQuery一样。 我正在寻找功能,如所述: http://blog.swirrl.com/articles/creating-asynchronous-embeddable-ja