如何配置 activemq-replicatedLevelDB 以配置实例连接到 master/slave 的特定端口
How to configure activemq-replicatedLevelDB to configure instance to connect to specific port of master/slave
我是 activemq-replicatedLevelDB 的新手,所以根据我有限的理解,我可能会认为事情是错误的。
我正在使用 zookeeper 设置 3 个 activemq 实例,然后确定 activemq 实例中的哪个是 AWS 中的主实例。 Zookeeper部署在私有子网内,activemq部署在public子网内,zookeeper和activemq通信没有问题。
出于安全目的:
Question/Issue: 我找不到在哪里可以配置 activemq 实例,这些 activemq 实例应该相互通信到哪个端口。
问题原因: 我需要限制这些 activemq 实例打开的可用端口。而且我不能简单地允许来自 public 子网
的所有访问
端口限制示例如下
- 应该为 ssh 访问打开端口 22
- zookeeper 客户端端口 (2181) 应该只对即将到来的访问开放
来自这些 activemq 实例
- 应该可以从特定来源访问端口 8161
我正在使用安全组来限制 AWS 中的这些访问。我尝试允许所有端口都可以通过 public 子网访问,这允许 activemq 知道其他 activemq 实例处于活动状态,并且它们能够选择 master/slaves。每次从头开始设置后,端口 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 的端口,以便我可以 restrict/allow 访问。
这里是我的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>
如果有任何信息缺失,我会尽快更新这个问题。谢谢
这与其说是一个合格的答案,不如说是一个提示,但太大而无法评论。
您使用 bind="tcp:0.0.0.0:0"
配置了动态端口。我没有在此配置设置上使用固定端口,但配置文档说,您可以设置它。
绑定端口将用于与master的复制协议,所以很明显,你不能切断它,但只允许zk机器在那里通信应该没问题。
我没有分析代理之间的流量,但据我了解复制的 LevelDB,ZK 决定活动主服务器,而不是代理。因此,该端口上的代理之间应该没有通信。
外部代理地址是在配置文件 <broker>
部分的 transportConnectors
元素上配置的,但我想你已经涵盖了。
我建议,您将绑定配置到一个固定端口,并允许从 ZK 和集群合作伙伴(如果需要)到该端口进行通信。客户端只能访问传输端口。允许与 ZKs 通信,应该就是这样。
我是 activemq-replicatedLevelDB 的新手,所以根据我有限的理解,我可能会认为事情是错误的。
我正在使用 zookeeper 设置 3 个 activemq 实例,然后确定 activemq 实例中的哪个是 AWS 中的主实例。 Zookeeper部署在私有子网内,activemq部署在public子网内,zookeeper和activemq通信没有问题。
出于安全目的:
Question/Issue: 我找不到在哪里可以配置 activemq 实例,这些 activemq 实例应该相互通信到哪个端口。
问题原因: 我需要限制这些 activemq 实例打开的可用端口。而且我不能简单地允许来自 public 子网
的所有访问端口限制示例如下
- 应该为 ssh 访问打开端口 22
- zookeeper 客户端端口 (2181) 应该只对即将到来的访问开放 来自这些 activemq 实例
- 应该可以从特定来源访问端口 8161
我正在使用安全组来限制 AWS 中的这些访问。我尝试允许所有端口都可以通过 public 子网访问,这允许 activemq 知道其他 activemq 实例处于活动状态,并且它们能够选择 master/slaves。每次从头开始设置后,端口 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 的端口,以便我可以 restrict/allow 访问。
这里是我的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>
如果有任何信息缺失,我会尽快更新这个问题。谢谢
这与其说是一个合格的答案,不如说是一个提示,但太大而无法评论。
您使用 bind="tcp:0.0.0.0:0"
配置了动态端口。我没有在此配置设置上使用固定端口,但配置文档说,您可以设置它。
绑定端口将用于与master的复制协议,所以很明显,你不能切断它,但只允许zk机器在那里通信应该没问题。
我没有分析代理之间的流量,但据我了解复制的 LevelDB,ZK 决定活动主服务器,而不是代理。因此,该端口上的代理之间应该没有通信。
外部代理地址是在配置文件 <broker>
部分的 transportConnectors
元素上配置的,但我想你已经涵盖了。
我建议,您将绑定配置到一个固定端口,并允许从 ZK 和集群合作伙伴(如果需要)到该端口进行通信。客户端只能访问传输端口。允许与 ZKs 通信,应该就是这样。