ActiveMQ Network of Brokers 集群部署文档
ActiveMQ Network of Brokers 集群部署文档
1. 环境依赖
- 操作系统:Linux (Ubuntu / CentOS)
- Docker和Docker Compose已安装
- ActiveMQ镜像:apache/activemq-classic:6.1.6
- 网络:各节点互相访问IP和端口 (61616)
2. 节点列表
| 节点 | 服务器 IP | brokerName |
|---|---|---|
| broker-1 | 192.168.0.53 | broker-53 |
| broker-2 | 192.168.0.59 | broker-59 |
| broker-3 | 192.168.0.60 | broker-60 |
3. 配置修改
3.1 修改 activemq.xml
重点:每台节点的 <broker brokerName="xxx">必须唯一!!
3.1.1 brokerName
找到 <broker> 节点,修改 brokerName ,保持唯一:
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="broker-53" dataDirectory="${activemq.data}">
3.1.2 配置NetworkConnectors
在 <broker> 节点内(建议放到 <transportConnectors> 后),加上如下配置:
<networkConnectors>
<networkConnector name="to-other-brokers"
uri="static:(tcp://192.168.0.59:61616,tcp://192.168.0.60:61616)"
duplex="false"
dynamicOnly="true"
decreaseNetworkConsumerPriority="true"
networkTTL="2"/>
</networkConnectors>
uri:列出除本机外,其他所有broker的端口duplex:双向通讯(false表示单向,通常用单向)dynamicOnly:仅保持有活动consumer的连接,减少耗费decreaseNetworkConsumerPriority:使网络consumer的优先级降低,优先本地consumernetworkTTL:消息继承最大级数,配合static,通常设置2
3.1.3 注意事项
- NetworkConnectors的配置,必须放在
<broker>标签内,而不是<beans>之外! <transportConnectors>和<networkConnectors>同级,不要嵌套错误
3.2 docker-compose.yml
每台机器启动一个ActiveMQ容器,按需修改有关文件挂连:
version: '3'
services:
activemq:
image: apache/activemq-classic:6.1.6
container_name: activemq
ports:
- "8161:8161"
- "61616:61616"
volumes:
- /etc/localtime:/etc/localtime:ro
- /usr/local/activemq/users.properties:/opt/apache-activemq/conf/users.properties
- /usr/local/activemq/activemq.xml:/opt/apache-activemq/conf/activemq.xml
- /usr/local/activemq/jetty.xml:/opt/apache-activemq/conf/jetty.xml
- /usr/local/activemq/data:/opt/apache-activemq/data
restart: always
注:
/usr/local/activemq/为本机目录,存放修改后的activemq.xml、users.properties等61616是openwire协议端口,不能占用
4. 启动
# 在每台机器启动
cd /opt/activemq
sudo docker-compose up -d
5. 验证
- 检查每台ActiveMQ Web管理界面: http://:8161/
- 检查日志:是否显示成功连接到其他broker,相关日志信息:
Successfully connected to static:(tcp://192.168.0.59:61616,tcp://192.168.0.60:61616)
- 发布消息,看是否可以通过网络转发到其他节点
6. 附加:网络上线图
[ broker-53 ] <--> [ broker-59 ] <--> [ broker-60 ]
| ^ |
+------------------------------+
# 每个broker通过networkConnector直接实现互联,通过定向线路转发消息
浙公网安备 33010602011771号