【发布时间】:2017-03-03 18:07:36
【问题描述】:
我是 activemq-replicatedLevelDB 的新手,所以根据我有限的理解,我可能会认为事情是错误的。
我正在使用 zookeeper 设置 3 个 activemq 实例,然后确定 activemq 实例中的哪个是 AWS 中的主实例。 Zookeeper 部署在私有子网中,activemq 部署在公共子网中,zookeeper 和activemq 通信没有问题。
出于安全目的:
问题/问题: 我找不到在哪里可以配置这些 activemq 实例应该相互通信的端口。
问题原因: 我需要限制这些 activemq 实例打开的可用端口。而且我不能简单地允许来自公共子网的所有访问
以下端口限制示例
- 端口 22 应该为 ssh 访问打开
- zookeeper 客户端端口 (2181) 应该只对访问开放 从这些 activemq 实例中
- 应该可以从特定来源访问端口 8161
我正在使用安全组来限制 AWS 中的这些访问。我尝试允许公共子网中的所有端口可访问,这允许 activemq 知道其他 activemq 实例是活动的,并且它们能够选择主/从。每次从头开始设置后,端口 45818 都不是同一个端口。所以我认为这是随机的。
下面的示例日志
Promoted to master
Using the pure java LevelDB implementation.
Master started: tcp://**.*.*.**:45818
一旦我删除了那个端口设置(允许所有访问),我得到了下面的堆栈跟踪
Not enough cluster members have reported their update positions yet.
org.apache.activemq.leveldb.replicated.MasterElector
如果我对上面stacktrace的理解是对的,说明当前activemq不知道其他activemq实例的存在。所以我需要知道在检查其他 activemq 实例时如何配置这些 activemq 的端口,以便我可以限制/允许访问。
这是我的activemq的配置,指向zookeeper地址。其他配置为默认值。
activemq 版本:5.13.4
<persistenceAdapter>
<replicatedLevelDB directory="activemq-data"
replicas="3"
bind="tcp://0.0.0.0:0"
zkAddress="testzookeeperip1:2181,testzookeeperip2:2181,testzookeeperip3:2181"
hostname="testhostnameofactivemqinstance"
/>
</persistenceAdapter>
如果缺少任何信息,我会尽快更新此问题。谢谢
【问题讨论】:
标签: amazon-web-services activemq apache-zookeeper