基于sharedFileSystem + kahaDB 的activemq集群搭建
官网说明 https://activemq.apache.org/shared-file-system-master-slave
假设有三台机器172.16.1.130 172.16.1.131 172.16.1.221
下文省略了activemq的安装过程
一. 搭建linux(Centos) 跨机器共享目录 NFS
- 选择172.16.1.130机器作为 NFS的服务端
-
安装软件包
实际上需要安装两个包nfs-utils和rpcbind, 不过当使用yum安装nfs-utils时会把rpcbind一起安装上
# 查看机器上是否已经安装nfs相关软件包 rpm -qa|grep nfs # 安装 nfs-utils yum -y install nfs-utils
-
修改配置文件,配置从机(客户端)
mkdir /home/node_activemq/data/kahaDB
vim /etc/exports
#这一行分为三个部分: ##第一部分:/opt/nfs ,这个是本地要共享出去的目录。 ##第二部分:允许访问的主机,可以是一个IP:192.168.1.250,也可以是一个IP段:192.168.1.0/24 ##第三部分:括号中部分 ###rw表示可读写,ro只读; ###sync :同步模式,内存中数据时时写入磁盘;async :不同步,把内存中数据定期写入磁盘中; ###no_root_squash :加上这个选项后,root用户就会对共享的目录拥有至高的权限控制,就像是对本机的目录操作一样。不安全,不建议使用; ###root_squash:和上面的选项对应,root用户对共享目录的权限不高,只有普通用户的权限,即限制了root; ###all_squash:不管使用NFS的用户是谁,他的身份都会被限定成为一个指定的普通用户身份; ###anonuid/anongid :要和root_squash 以及all_squash一同使用,用于指定使用NFS的用户限定后的uid和gid,前提是本机的/etc/passwd中存在这个uid和gid。 ###fsid=0表示将/opt/nfs整个目录包装成根目录 /home/node_activemq/data/kahaDB 172.16.1.131(rw,sync,no_root_squash) 172.16.1.221(rw,sync,no_root_squash)
-
配置端口
nfs除了主程序端口2049和rpcbind的端口111是固定以外,还会使用一些随机端口,以下配置将定义这些端口,以便配置防火墙
vim /etc/sysconfig/nfs
# vim /etc/sysconfig/nfs #追加端口配置 MOUNT_PORT=4001 STATD_PORT=4002 LOCKD_TCPPORT=4003 LOCKD_UDPPORT=4004 RQUOTAD_PORT=4005
非云服务器查看防火墙状态(cnetos 6.*)
/etc/init.d/iptables status
如果防火墙开启
非云服务器配置防火墙
vim /etc/sysconfig/iptables
# vim /etc/sysconfig/iptables -A INPUT -p tcp -m tcp --dport 111 -j ACCEPT -A INPUT -p udp -m udp --dport 111 -j ACCEPT -A INPUT -p tcp -m tcp --dport 2049 -j ACCEPT -A INPUT -p udp -m udp --dport 2049 -j ACCEPT -A INPUT -p tcp -m tcp --dport 4001:4005 -j ACCEPT -A INPUT -p udp -m udp --dport 4001:4005 -j ACCEPT
非云服务器重启服务和防火墙
service nfs restart service iptables restart #或reload
云服务器的话就配置下安全组
-
启动172.16.1.130机器上的NFS服务
- 配置开机启动
chkconfig --list rpcbind chkconfig --list nfs chkconfig nfs on
- 启动
service rpcbind start service nfs start
- 确认NFS服务器启动成功:
rpcinfo -p |grep nfs
存在则启动成功
- 查看共享的目录和可以访问的ip
showmount -e 172.16.1.130
例如
-
在 172.16.1.131 172.16.1.221机上配置clinet端
-
安装nfs,并启动服务。
yum install -y nfs-utils service rpcbind start service nfs start
-
检查 NFS 服务器端是否有目录共享
[root@localhost etc]# showmount -e 172.16.1.130 Export list for 172.16.1.130: /home/node_activemq/data/kahaDB 172.16.1.131,172.16.1.221
-
使用 mount 挂载172.16.1.130服务器端的目录/home/activemq/data/kahaDB到客户端172.16.1.131 172.16.1.221的目录/home/activemq/data/kahaDB下(在172.16.1.131 172.16.1.221上执行)
mkdir -p /home/node_activemq/data/kahaDB mount -t nfs 172.16.1.130:/home/node_activemq/data/kahaDB /home/node_activemq/data/kahaDB
检查是否挂载成功
df -h
-
二. 配置activemq的kahaDB配置并重启
vim /home/activemq/conf/activemq.xml
关键配置
<persistenceAdapter>
<mKahaDB directory="${activemq.base}/data/kahaDB">
<filteredPersistenceAdapters>
<!-- kahaDB per destinations -->
<filteredKahaDB perDestination="true">
<persistenceAdapter>
<kahaDB journalMaxFileLength="32mb"/>
</persistenceAdapter>
</filteredKahaDB>
</filteredPersistenceAdapters>
</mKahaDB>
</persistenceAdapter>
/home/activemq/bin/activemq stop
启动顺序 172.16.1.130 172.16.1.131 172.16.1.221
/home/activemq/bin/activemq start
/home/activemq/bin/activemq status
查看日志:
主节点:
| main
2021-12-14 20:20:46,424 | INFO | Apache ActiveMQ 5.15.2 (jtMQ, ID:T-001-46126-1639484446242-1:1) is starting | org.apache.activemq.broker.BrokerService | main
2021-12-14 20:20:46,427 | INFO | pending local transactions: [] | org.apache.activemq.store.kahadb.MultiKahaDBTransactionStore | main
2021-12-14 20:20:46,464 | INFO | Listening for connections at: tcp://T-001:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600 | org.apache.activemq.transport.TransportServerThreadSupport | main
2021-12-14 20:20:46,465 | INFO | Connector openwire started | org.apache.activemq.broker.TransportConnector | main
2021-12-14 20:20:46,466 | INFO | Apache ActiveMQ 5.15.2 (jtMQ, ID:T-001-46126-1639484446242-1:1) started | org.apache.activemq.broker.BrokerService | main
从节点:
2021-12-14 19:59:15,212 | INFO | Database /home/activemq/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
三. sharedFileSystem + kahaDB 的activemq集群的主从原理
https://activemq.apache.org/shared-file-system-master-slave
四. NFS详解
原文链接:https://blog.csdn.net/xiaolong1126626497/article/details/118917826