ActiveMQ集群配置

集群配置方案

采用A、B、C三个节点的集群,其中B和C采用共享文件夹的方式集群,A分别和B、C配置为broker集群进行消息双向同步。
在这里插入图片描述

服务端口管理端口存储网络连接器用途
NodeA616168161NodeB、NodeC消费者
NodeB616178162/share_file/kahadbNodeA生产者、消费者
NodeC616188163/share_file/kahadbNodeA生产者、消费者

集群配置步骤

为了方便,这里采用一台机器进行集群配置(原则上是应该三台机器,分别对应三个IP地址),IP地址用端口号进行区分。说明下,一台机器配置集群跟三台机器配置集群原理是一样的,只是测试的话,用一台模拟配置集群就行了。
步骤1
将activemq包上传到linux服务器并解压,将解压后的文件复制到指定目录(我的目录是在/usr/local/activemq),并且重命名为activemq-a。同理,复制并重命名为activemq-b和activemq-c。

[root@fut local]# cd /root
[root@fut ~]# cp -rf apache-activemq-5.14.0 /usr/local/activemq/activemq-a
[root@fut ~]# cp -rf apache-activemq-5.14.0 /usr/local/activemq/activemq-b
[root@fut ~]# cp -rf apache-activemq-5.14.0 /usr/local/activemq/activemq-c
[root@fut ~]# cd /usr/local/activemq/
[root@fut activemq]# ll
总用量 0
drwxr-xr-x. 10 root root 193 11月 25 10:41 activemq-a
drwxr-xr-x. 10 root root 193 11月 25 10:41 activemq-b
drwxr-xr-x. 10 root root 193 11月 25 10:41 activemq-c
[root@fut activemq]#

步骤2
创建一个共享目录,用于master/slave集群

[root@fut activemq]# mkdir kahadb
[root@fut activemq]# ll
总用量 0
drwxr-xr-x. 10 root root 193 11月 25 10:41 activemq-a
drwxr-xr-x. 10 root root 193 11月 25 10:41 activemq-b
drwxr-xr-x. 10 root root 193 11月 25 10:41 activemq-c
drwxr-xr-x. 2 root root 6 11月 25 12:36 kahadb
[root@fut activemq]#

步骤3(active-a节点里activemq.xml文件配置)
进入到activemq-a/conf目录,编辑activemq.xml文件

  • 以下3-6行注释掉,第1行端口号为61616
<transportConnectors>
       <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
       <!--<transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
       <transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
       <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
       <transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>--> 
</transportConnectors>
......
  • 在以上代码</transportConnectors的下面加入网络连接器的配置项
<networkConnectors>
	<networkConnector name="local_network" uri="static:(tcp://127.0.0.1:61617,tcp://127.0.0.1:61618)" />
</networkConnectors>

步骤4(active-b节点里activemq.xml文件配置)
进入到activemq-b/conf目录,编辑activemq.xml文件

  • 以下3-6行注释掉,第2行端口号为61617
<transportConnectors>
       <transportConnector name="openwire" uri="tcp://0.0.0.0:61617?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
       <!--<transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
       <transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
       <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
       <transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>--> 
</transportConnectors>
......
  • 在以上代码</transportConnectors的下面加入网络连接器的配置项
<networkConnectors>
	<networkConnector name="network_a" uri="static:(tcp://127.0.0.1:61616)" />
</networkConnectors>
  • 由于NodeA和NodeB采用共享文件夹方式,所以需要指定持久化地址,找到以下代码并修改成步骤2共享目录的地址。
<persistenceAdapter>
    <kahaDB directory="/usr/local/activemq/kahadb"/>
</persistenceAdapter>

步骤5(active-c节点里activemq.xml文件配置)
进入到activemq-c/conf目录,编辑activemq.xml文件

  • 以下3-6行注释掉,第2行端口号为61618
<transportConnectors>
       <transportConnector name="openwire" uri="tcp://0.0.0.0:61618?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
       <!--<transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
       <transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
       <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
       <transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>--> 
</transportConnectors>
......
  • 在以上代码</transportConnectors的下面加入网络连接器的配置项
<networkConnectors>
	<networkConnector name="network_a" uri="static:(tcp://127.0.0.1:61616)" />
</networkConnectors>
  • 由于NodeA和NodeB采用共享文件夹方式,所以需要指定持久化地址,找到以下代码并修改成步骤2共享目录的地址。
<persistenceAdapter>
    <kahaDB directory="/usr/local/activemq/kahadb"/>
</persistenceAdapter>

步骤6(active-a节点里jetty.xml文件配置)
继续在conf目录下编辑jetty.xml文件,将端口号修改为8161

<bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">
             <!-- the default port number for the web console -->
        <property name="host" value="0.0.0.0"/>
        <property name="port" value="8161"/>
</bean>

步骤7(active-b节点里jetty.xml文件配置)
继续在conf目录下编辑jetty.xml文件,将端口号修改为8162

<bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">
             <!-- the default port number for the web console -->
        <property name="host" value="0.0.0.0"/>
        <property name="port" value="8162"/>
</bean>

步骤8(active-c节点里jetty.xml文件配置)
继续在conf目录下编辑jetty.xml文件,将端口号修改为8163

<bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">
             <!-- the default port number for the web console -->
        <property name="host" value="0.0.0.0"/>
        <property name="port" value="8163"/>
</bean>

运行测试

  • 分别启动节点A、B、C的服务
    在这里插入图片描述
  • 查看服务是否都已经启动(能够看到确实都已经启动)
    在这里插入图片描述
  • 查看端口号是否都已经启动
    在这里插入图片描述
    发现节点C端口号61618没有对外提供服务,这是为什么?因为节点B和节点C是master/slave配置,此时节点B获取到了共享文件夹的所有权,所以节点C在等待获得资源并且提供服务。也就是说,节点C没有获得资源之前并不会提供服务。
  • 现在我将节点B的服务关闭,观察节点C会不会获得资源并提供服务。
    在这里插入图片描述
    结果,节点C端口号61618开始提供服务了。
  • 节点B重新恢复服务后,端口号61617也不会提供服务了,因为这个时候节点C已经占据了共享文件的所有权,而节点B只能先等待。
    在这里插入图片描述
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值