Linux下搭建Activemq的Master-Slave(共享文件模式)
注释:这里演示的是nfs服务器和activemq主节点放在一起,谁先启动谁就是主
1.主服务器配置
# 安装NFS服务nfs-untils和rpcbind
#yum -y install nfs-utils rpcbind
# centos7自带了rpcbind,rpc监听在111端口。
# 启动rpcbind服务(一定要先启动rpcbind服务再启动nfs服务)
# systemctl start rpcbind.service
# 查看rpcbind服务状态
# systemctl status rpcbind.service
#查看rpc
# netstat -lntup | grep rpcbind
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1016/rpcbind
tcp6 0 0 :::111 :::* LISTEN 1016/rpcbind
udp 0 0 0.0.0.0:111 0.0.0.0:* 1016/rpcbind
udp 0 0 0.0.0.0:766 0.0.0.0:* 1016/rpcbind
udp6 0 0 :::111 :::* 1016/rpcbind
udp6 0 0 :::766 :::* 1016/rpcbind
# 把rpcbind另入开机自启动
# systemctl enable rpcbind.service
# systemctl list-unit-files|grep enabled|grep rpcbind
rpcbind.service enabled
# 启动NFS服务并查看其状态
# systemctl start nfs.service
# systemctl status nfs.service
# 把NFS服务加入开机自启动并查看其状态
# systemctl enable nfs.service
# systemctl list-unit-files | grep nfs
#创建配置文件
# vi /etc/exports
#把主的mq信息放在exports文件下(注意ip和文件夹位置,参考下面第2和3行)
# cat /etc/exports
/opt/apache-activemq-5.16.3/data/kahadb 172.16.7.0/24(rw,sync,insecure,no_subtree_check,no_root_squash)
#这里/data_share 为共享目录
#再次修改后,执行exportfs –rv让配置立即生效
# exportfs -rv
exporting 172.16.7.0/24:/opt/apache-activemq-5.16.3/data/kahadb
(这里的exports可以先不管)
exportfs:NFS服务端发布共享控制命令。
-r:表示重新刷新共享。
-a:表示将配置文件/etc/exports中的所有定义共享发布出去。
-v:显示确认共享设置。
-u:表示不发布共享。
# 查看nfs服务器挂载情况
# showmount -e localhost
Export list for localhost:
/opt/apache-activemq-5.16.3/data/kahadb 172.16.7.0/24
2.从服务器配置
# 安装NFS服务nfs-untils和rpcbind
# yum -y install nfs-utils rpcbind
# 创建挂载目录(nas目录)
# mkdir /data_mq
# 挂载(注意ip和文件夹位置)
mount -t nfs -o nosuid,noexec,nodev,noatime,nodiratime,intr,rsize=65536,wsize=65536 172.16.7.88:/opt/apache-activemq-5.16.3/data/kahadb /data_mq
# 添加开机自启动
# centos7需要给rc.local赋予执行权限后,rc.local文件才能生效
# chmod +x /etc/rc.d/rc.local
# vi /etc/rc.d/rc.local
#最后一行添加(必须加这个,不然服务器重启后,该目录没有挂载成功)
mount -t nfs -o nosuid,noexec,nodev,noatime,nodiratime,intr,rsize=65536,wsize=65536 172.16.7.88:/opt/apache-activemq-5.16.3/data/kahadb /data_mq
3.主从服务器nas设置(/data_mq/为nas目录)
# cd /opt/apache-activemq-5.16.3/conf
# vi activemq.xml
<persistenceAdapter>
<kahaDB directory="/data_mq/"/>
</persistenceAdapter>
4.启动主从,检查主备服务是否配置成功
主服务器:
# cd /opt/apache-activemq-5.16.3/bin
# ./activemq start && tail -f ../data/activemq.log
# 查看输出日志信息
2021-12-14 17:29:16,769 | WARN | Could not accept connection from tcp://10.128.233.128:41847: Connection reset (Connection reset) | org.apache.activemq.broker.TransportConnector | ActiveMQ BrokerService[localhost] Task-2
从服务器:
# cd /opt/apache-activemq-5.16.3/bin
# ./activemq start && tail -f ../data/activemq.log
# 查看输出日志信息
2021-12-14 17:23:15,679 | INFO | Using Persistence Adapter: KahaDBPersistenceAdapter[/opt/apache-activemq-5.16.3/data/kahadb] | org.apache.activemq.broker.BrokerService | main
2021-12-14 17:23:15,685 | INFO | Database /opt/apache-activemq-5.16.3/data/kahadb/lock is locked by another server. This broker is now in slave mode waiting a lock to be acquired | org.apache.activemq.store.SharedFileLocker | main
#出现此信息表示主备节点建立成功
Database /opt/apache-activemq-5.16.3/data/kahadb/lock is locked by another server. This broker is now in slave mode waiting a lock to be acquired
模拟主节点故障,停掉主节点mq程序,观察备节点日志输出信息,备用mq打印日志表示切换成功
遇到的问题
每次启动端口都不一致
是因为这个文件有锁,删除就可以了