1/11/2020Page11/11/20202008-12-01版权所有,侵权必究Allrightsreserved第1页,共8页Page1,Total8activeMQ集群配置1/11/2020Page21/11/20202008-12-01版权所有,侵权必究Allrightsreserved第2页,共8页Page2,Total8目录ACTIVEMQ集群配置........................................................................................................................................11ACTIVEMQ集群简介................................................................................................................................22MASTER/SLAVE模式简介.........................................................................................................................32.1安装环境................................................................................................................................................32.2测试服务器描述....................................................................................................................................33JDK安装(略).............................................................................................................................................44ACTIVEMQ安装(PUREMASTER-SLAVE模式)............................................................................................44.1主ACTIVEMQ安装.....................................................................................................................................44.2备ACTIVEMQ配置......................................................................................................................................45ACTIVEMQ的BROKERCLUSTER模式.........................................................................................................65.1软件安装(略)....................................................................................................................................65.2配置文件修改........................................................................................................................................61activeMQ集群简介ActiveMQ可以做broker的集群(broker_cluster),也可以做master-slave方式的集群。前者能在多个broker之前fail-over和load-balance,但是在某个节点出故障时,可能导致消息丢失;而后者能实时备份消息,和fail-over,但是不能load-balance。brokercluser的方式,在一个broker上发送的消息可以在其它的broker上收到。当一个broker失效时,客户端可以自动的转到别的broker上运行,多个broker可以同时提供服务,但是消息只存储在一个broker上,如果那个broker失效了,那么客户端直到它重新启动后才能收到该broker上的消息,假如很不幸,那个broker的存储介质坏了,那么消息就丢失掉了。1/11/2020Page31/11/20202008-12-01版权所有,侵权必究Allrightsreserved第3页,共8页Page3,Total8Master-slave方式中,只有master提供服务,slave只是实时的备份master的数据,所以消息不会丢失。当master失效时,slave会自动升为master,客户端会自动转到slave上工作,所以能fail-over。由于只有master提供服务,所以不能将负载分到多个broker上。其实单个broker的性能已经是相当的惊人了,足够公司目前的需要了,而公司并不希望丢失任何数据,所以我们选择使用master-slave模式。本文将两种集群方式都添加进来,作为后期参考2Master/slave模式简介多种master-slave模式master-slave也有多种实现方式。它们的不同只是在共享数据和锁机制上。Puremaster-slave,显示的在配置文件中指定一个broker做为另一个broker的slave。运行时,slave同过网络自动从master出复制数据,同时在和master失去连接时自动升级为master。当master失效,slave成为master后,如果要让原先的master重新投入运行,需要停掉运行中的slave(现在升级为master了),手动复制slave中的数据到master中。再重新启动master和slave。这种方式最简单,效率也不错,但是只能有两台做集群,只能fail-over一次,而且需要停机恢复master-slave结构。JDBCmaster-slave这种方式不需要特殊的配置,只要让所有的节点都把数据存储到同一个数据库中。先拿到数据库表的锁的节点成为master,一旦它失效了,其它的节点获得锁,就可以成为master。因为数据通过数据库共享,放在一个地方,不需要停机恢复master-slave。这种方式,需要额外的数据库服务器,如果数据库失效了,那么就全失效了,而且速度不是很快。Sharefilemaster-slave这种方式类似于前者,也不需要特别的配置,只是通过共享文件系统来共享数据,靠文件锁实现只有一台成为master。共享文件系统的方式有很多,nfsv4(v3有bug,不行),在稳定性,效率等方面不是很满意,可能是通过网络太慢了。我这边整理的是Puremaster-slave模式2.1安装环境2.2测试服务器描述1.两台vmware虚拟机,内存均为1G。2.操作系统:rhel5.43.IP规划masterslaveeth0192.168.88.130192.168.88.1311/11/2020Page41/11/20202008-12-01版权所有,侵权必究Allrightsreserved第4页,共8页Page4,Total84.软件包名简介版本apache-activemq队列程序apache-activemq-5.7.0-bin.tar.gzJDKjavaversion1.6.0_38jdk-6u38-linux-i586.bin3JDK安装(略)4activeMQ安装(Puremaster-slave模式)4.1主activeMQ安装执行如下命令:[root@MYSQLopt]#tar-zxvfapache-activemq-5.7.0-bin.tar.gz-C/usr/local/[root@MYSQLconf]#vi~/.bashrcexportACTIVEMQ_HOME=/usr/local/apache-activemq-5.7.0exportJAVA_HOME=/usr/local/jdk1.6.0_38exportCLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/libexportPATH=$ACTIVEMQ_HOME/bin:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin主库配文件修改:[root@MYSQLconf]#vi/usr/local/apache-activemq-5.7.0/conf/activemq.xmlbrokerxmlns==masterdataDirectory=${activemq.data}-----》配置broker名即可persistenceAdapterkahaDBdirectory=${activemq.data}/kahadb/master//persistenceAdapter[root@MYSQLconf]#activemqsetup/etc/default/activemq初始化生成activemq初始文件[root@MYSQLconf]#activemqstart启动activemq4.2备activemq配置1)安装(略)2)修改配置文件1/11/2020Page51/11/20202008-12-01版权所有,侵权必究Allrightsreserved第5页,共8页Page5,Total8brokermasterConnectorURI=tcp://192.168.88.130:61616shutdownOnMasterFailure=falsexmlns==slavedataDirectory=${activemq.data}//注意:5.8及以后的版本已经不支持Puremaster-slave模式,此参数只能在5.7及以前版本使用persistenceAdapterkahaDBdirectory=${activemq.data}/kahadb/slave//persistenceAdapter3)启动activemq并查看主日志这就表示我们的环境已经搭建完成附:Pure模式的M-S部署,相当于部署了两套相互独立的ActiveMQ实例,它们拥有各自的存储系统。这也是提供HA的最简单的一种方式。此种方式只有两个MQ实例。此种配置方式的话,Master端不用做任何配置,只要在Slave端指定Master即可。这种配置的话,Master的所有数据和消息都会被复制一份到Slave,这些复制发生在Master处理这些消息之前。如下图所示:Slave会在启动的时候连接到Master,因此,先要