在集群中共享配置

Share config in cluster

如何在处于故障转移模式的集群中共享配置文件? 我不想编辑集群中每台服务器上的 artemis-user.propertiesartemis-role.propertiesbroker.xml 文件。

集群设置:

这样的安全设置:

<security-setting match="clusterQueue">
    <permission type="createNonDurableQueue" roles="amq"/>
    <permission type="deleteNonDurableQueue" roles="amq"/>
    <permission type="createDurableQueue" roles="amq"/>
    <permission type="deleteDurableQueue" roles="amq"/>
    <permission type="createAddress" roles="amq"/>
    <permission type="deleteAddress" roles="amq"/>
    <permission type="consume" roles="amq"/>
    <permission type="browse" roles="amq"/>
    <permission type="send" roles="amq"/>
    <!-- we need this otherwise ./artemis data imp wouldn't work -->
    <permission type="manage" roles="amq"/>
</security-setting>

有可能吗?

ActiveMQ Artemis 不提供任何在集群成员之间共享配置的自动化方式。但是,由于您引用的所有配置都是基于文本的,因此使用标准工具 and/or 基础架构将其复制到您的代理应该相当简单。例如,您可以使用 SCP 复制文件,创建一个共享的 NFS 挂载等。

即使在同构集群中,配置文件中的小差异也是很常见的(例如 cluster-connectionacceptor 等)。在这种情况下,您可以使用系统 属性 替换(在 documentation 中引用)从每个需要自定义的代理中提取位,然后在 artemis.profile 中设置它们,例如:

JAVA_ARGS="$JAVA_ARGS -DmyAcceptor=tcp://192.168.1.10:61616"

然后在您的 broker.xml 中引用该系统 属性,例如:

<acceptor name="netty-acceptor">${myAcceptor}</acceptor>

通过这种方式,您可以在所有经纪人之间共享相同的 broker.xml,但每个经纪人都可以拥有自己的 artemis.profile 以及每个经纪人需要的唯一值。