在ActiveMQ的官方文档中有提及到使用含有文件锁的分布式文件系统可以达到高可用的目的。参见http://activemq.apache.org/shared-file-system-master-slave.html。并且这种方式效率最高。
由于资源有限,在做实验时只是用了两台机器,并且其中10.85.203.17及部署了ActiveMQ又作为NFS服务器使用。
实施步骤分为两步,首先配置NFS文件系统,其次配置与测试ActiveMQ在该环境下的功能;逻辑结构图:[img]http://dl.iteye.com/upload/attachment/0078/7162/361f9776-b126-3dc7-b7fe-22418fc827ea.jpg[/img]
一、配置NFS
1>设置10.85.203.17为NFS服务器:
1.1>查看是否已安装portmap和nfs
# rpm -q nfs-utils portmap
nfs-utils-1.0.9-50.el5
portmap-4.0-65.2.2.1
如果有显示,则表明已安装并且服务正常。nfs依赖portmap服务,所以要先安装portmap。
1.2>查看服务是否启动
# service portmap status
portmap (pid 12728) is running...
# 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.*等)并且赋予客户端的权限;
[img]http://dl.iteye.com/upload/attachment/0078/7150/c81093bc-44e0-3301-a167-f520273162f5.jpg[/img]
1.4>重启服务
# service portmap restart
# service nfs restart
如果看到一连串的[ok]时,表示已经启动成功了。如果第一次启动,nfs ,又使用restart命令,可能开始会出现一些[FAILED],那是在停止nfs服务,而nfs服务还没有启动所以会FAILED。
2>挂载NFS客户端
2.1>挂载10.85.203.38
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
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文件,将
修改为
2>测试
2.1>分别重启.17和.38的ActiveMQ应用,会看到.17正常启动,.38机器会有未获取到文件锁提示。
[img]http://dl.iteye.com/upload/attachment/0078/7148/f3ce47ec-3297-3649-a867-ecd9b89a855d.jpg[/img]
[img]http://dl.iteye.com/upload/attachment/0078/7152/1517480b-875e-3545-b4bc-8ae234770252.jpg[/img]
2.2>我已测试成功的两种场景:
2.2.1>分别起停.17和.38机器上的ActiveMQ,master-slave切换正常。
2.2.2>修改ActiveMQ自带例子里的程序,让生产者线程不断生产消息以及消费者线程不断消费消息。检查在master和slave切换时数据无丢失。
2.2.3>还没进行大数据量测试以及疲劳测试,以后再用JMeter做一个测试。
由于资源有限,在做实验时只是用了两台机器,并且其中10.85.203.17及部署了ActiveMQ又作为NFS服务器使用。
实施步骤分为两步,首先配置NFS文件系统,其次配置与测试ActiveMQ在该环境下的功能;逻辑结构图:[img]http://dl.iteye.com/upload/attachment/0078/7162/361f9776-b126-3dc7-b7fe-22418fc827ea.jpg[/img]
一、配置NFS
1>设置10.85.203.17为NFS服务器:
1.1>查看是否已安装portmap和nfs
# rpm -q nfs-utils portmap
nfs-utils-1.0.9-50.el5
portmap-4.0-65.2.2.1
如果有显示,则表明已安装并且服务正常。nfs依赖portmap服务,所以要先安装portmap。
1.2>查看服务是否启动
# service portmap status
portmap (pid 12728) is running...
# 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.*等)并且赋予客户端的权限;
[img]http://dl.iteye.com/upload/attachment/0078/7150/c81093bc-44e0-3301-a167-f520273162f5.jpg[/img]
1.4>重启服务
# service portmap restart
# service nfs restart
如果看到一连串的[ok]时,表示已经启动成功了。如果第一次启动,nfs ,又使用restart命令,可能开始会出现一些[FAILED],那是在停止nfs服务,而nfs服务还没有启动所以会FAILED。
2>挂载NFS客户端
2.1>挂载10.85.203.38
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
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机器会有未获取到文件锁提示。
[img]http://dl.iteye.com/upload/attachment/0078/7148/f3ce47ec-3297-3649-a867-ecd9b89a855d.jpg[/img]
[img]http://dl.iteye.com/upload/attachment/0078/7152/1517480b-875e-3545-b4bc-8ae234770252.jpg[/img]
2.2>我已测试成功的两种场景:
2.2.1>分别起停.17和.38机器上的ActiveMQ,master-slave切换正常。
2.2.2>修改ActiveMQ自带例子里的程序,让生产者线程不断生产消息以及消费者线程不断消费消息。检查在master和slave切换时数据无丢失。
2.2.3>还没进行大数据量测试以及疲劳测试,以后再用JMeter做一个测试。