在ActiveMQ的官方文档中有提及到使用含有文件锁的分布式文件系统可以达到高可用的目的。参见http://activemq.apache.org/shared-file-system-master-slave.html。并且这种方式效率最高。
由于资源有限,在做实验时只是用了两台机器,并且其中10.85.203.17及部署了ActiveMQ又作为NFS服务器使用。
实施步骤分为两步,首先配置NFS文件系统,其次配置与测试ActiveMQ在该环境下的功能;逻辑结构图:
一、配置NFS
1>设置10.85.203.17为NFS服务器:
1.1>查看是否已安装portmap和nfs
[root@test02 /]# rpm -q nfs-utils portmap
nfs-utils-1.0.9-50.el5
portmap-4.0-65.2.2.1
如果有显示,则表明已安装并且服务正常。nfs依赖portmap服务,所以要先安装portmap。
1.2>查看服务是否启动
[root@test02 /]# service portmap status
portmap (pid 12728) is running...
[root@test02 /]# service nfs status
rpc.mountd (pid 12810) is running...
nfsd (pid 12807 12806 12805 12804 12803 12802 12801 12800) is running...
rpc.rquotad (pid 12795) is running...
如果没启动,则执行
service portmap restart
service nfs restart
1.3>设置共享目录和策略:
vi /etc/export
/home/work 10.85.203.38(rw,sync,no_root_squash) 10.85.203.38(rw,sync,no_root_squash)
表明将目录共享给客户端IP(也可以用10.85.203.*等)并且赋予客户端的权限;
1.4>重启服务
[root@test02 /]# service portmap restart
[root@test02 /]# service nfs restart
如果看到一连串的[ok]时,表示已经启动成功了。如果第一次启动,nfs ,又使用restart命令,可能开始会出现一些[FAILED],那是在停止nfs服务,而nfs服务还没有启动所以会FAILED。
2>挂载NFS客户端
2.1>挂载10.85.203.38
[root@test02 /]mount -t nfs 10.85.203.17:/home/work /george/installs/activemq-datas
语义是将10.85.203.38上的目录/george/installs/active-datas挂载以NFS的方式挂载到10.85.203.17 NFS服务器的/home/work目录;
2.2>挂载10.85.203.17
[root@test02 /]mount -t nfs 10.85.203.17:/home/work /george/installs/activemq-datas
语义是将10.85.203.17上的目录/george/installs/active-datas挂载以NFS的方式挂载到10.85.203.17 NFS服务器的/home/work目录;
挂载测试可以分别在.17和.38机器的/george/installs/active-datas目录里创建和删除文件来完成;
3>其他
3.1>常用mount指令:
查看NFS的各种状态:
showmount -e
可看有分享哪些目录
3.2>常见问题:
1> failed, reason given by server: Permission denied
1.1>检查NFS的运行级别:
# chkconfig --list portmap
# chkconfig --list nfs
1.2>根据需要设置在相应的运行级别自动启动NFS:
# chkconfig --level 235 portmap on
# chkconfig --level 235 nfs on
1.3>nfs server接到客户端的mount时,会先客户的IP做反解成域名,用域名(注意是用域名而不是IP)去和/etc/exports做比较,如果匹配不成功会失败。或者在/etc/exports中使用机器名来指定客户端IP;
二、ActiveMQ配置及测试:
1>配置
只需要分别修改.17和.38机器的 /conf/activemq.xml文件,将
<persistenceAdapter>
<kahaDB directory="${activemq.base}/data/kahadb"/>
</persistenceAdapter>
修改为
<persistenceAdapter>
<kahaDB directory="/george/installs/activemq-datas"/>
</persistenceAdapter>
2>测试
2.1>分别重启.17和.38的ActiveMQ应用,会看到.17正常启动,.38机器会有未获取到文件锁提示。
2.2>我已测试成功的两种场景:
2.2.1>分别起停.17和.38机器上的ActiveMQ,master-slave切换正常。
2.2.2>修改ActiveMQ自带例子里的程序,让生产者线程不断生产消息以及消费者线程不断消费消息。检查在master和slave切换时数据无丢失。
2.2.3>还没进行大数据量测试以及疲劳测试,以后再用JMeter做一个测试。
- 大小: 250.4 KB
- 大小: 6.9 KB
- 大小: 202.8 KB
- 大小: 45.2 KB
分享到:
相关推荐
用于指导部署activemq master/slave架构,采用NFS
NULL 博文链接:https://ims.iteye.com/blog/2367066
activemq5.8版本搭建master/slave架构所需要的nfsv4的指导文档
ActiveMQ集群方案 使用方式 Master/Slave(主从备份)和failover协议
JMS之ActiveMQ 点对点+发布/订阅
activemq_master-slave集群安装文档,详细描述如何配置。
主要介绍了ActiveMQ基于zookeeper的主从levelDB Master/Slave搭建,以及Spring-boot下的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
刚接触activemq时写的一些demo,感兴趣的可以参考一下。。。
-- ${activemq.data}/kahadb"/> --> <jdbcPersistenceAdapter dat
1.解压 ...ACTIVEMQ_HOME=/opt/apache-activemq-5.15.12 PATH=/opt/apache-activemq-5.15.12/bin:$PATH export ACTIVEMQ_HOME PATH 5.activemq的后台默认端口是61616,前台访问端口是8161
在一个网络内运行多个brokers或者stand alone brokers...Master Slave 背后的想法是,消息被复制到slave broker,因此即使master broker遇到了像硬件故障之类的错误,你也可以立即切换到slave broker而不丢失任何消息。
ActiveMQ 集群中JDBC Master Slave + Broker Cluster的整合
ActiveMQ 教学视频/教程 /附带笔记等资源,jms 案例文档等...
包含这两个javax.jms.jar javax.management.j2ee-api-1.1.1.jar
ActiveMQ 实践之路(一) 启动你的ActiveMQ 程度: 入门 一.安装ActiveMQ 首先去http://activemq.apache.org/download.html 下载最新版本4.1.0release (http://activemq.apache.org/activemq-410-release.html), ...
ActiveMQ集群部署方式对比:Pure Master Slave方式,Shared Filesystem Master-Slave方式 ,Shared Database Master-Slave方式,Replicated LevelDB Store方式,Broker-Cluster部署方式....
ActiveMQ-demo实例代码: /* *生产者启动程序,并发送消息给amq服务器(broker) */ public class Producer { /** * @param args * @throws Exception */ public static void main(String[] args) throws ...
<a href=http://activemq.apache.org/version-5-getting-started.html >http://activemq.apache.org/version-5-getting-started.html</a> <a href=http://java.sun....
构建高可用的ActiveMQ系统在生产环境中是非常重要的,单点的ActiveMQ作为企业应用无法满足高可用和集群的需求,所以ActiveMQ提供 了master-slave、broker cluster等多种部署方式,但通过分析多种部署方式之后我认为...
ActiveMQ允许客户端使用多种协议接收消息,其中WebSocket协议的URL使用ws://开头,默认端口号是61614