ActiveMQ基于共享目次的主从配置方案

打印 上一主题 下一主题

主题 785|帖子 785|积分 2355

ActiveMQ基于共享目次的主从配置方案

背景:
公司早期安装的ActiveMQ服务,由于硬件服务器需要搬迁,需要重新安装,原先本身就是采用的主从方案。
以是,新服务器上的安装方式,同样采用主从模式。
方案:
从数据一致性、配置复杂度、高可用、灵活扩展,维护性多方面考虑下来,采用 ActiveMQ + GlusterFS 基于共享目次的主从配置方案。
情况:
CPU: 4Core
内存:8G
存储:100G
系统:CentOS Linux release 7.9.2009 (Core)
服务器1:192.168.1.166(Master)
服务器2:192.168.1.167(Slave)
共享目次名称:/shared-vol
GlusterFS 版本:9.6
ActiveMQ版本:apache-activemq-5.13.0-bin.tar.gz
Java:1.8
1 安装GlusterFS

1.1 安装服务

配置GlusterFS源:
  1. tee /etc/yum.repos.d/gluster-9.repo << \EOF
  2. [gluster-9]
  3. name=GlusterFS 9 for CentOS 7
  4. baseurl=https://vault.centos.org/7.9.2009/storage/x86_64/gluster-9
  5. enabled=1
  6. gpgcheck=0
  7. EOF
复制代码
清理缓存并重新生成
  1. sudo yum clean all
  2. sudo yum makecache
复制代码
安装 GlusterFS 存储库
  1. yum install -y centos-release-gluster
复制代码
安装 GlusterFS 服务
  1. yum install -y glusterfs glusterfs-server glusterfs-fuse
复制代码
启动并设置 GlusterFS 服务开机自启
  1. systemctl start glusterd
  2. systemctl enable glusterd
复制代码
检查 GlusterFS 服务状态
  1. systemctl status glusterd
复制代码
1.2 配置共享存储

配置信托关系
在两台服务器之间建立互信,确保它们可以大概通信。
在 Master 上执行:
  1. gluster peer probe 192.168.1.167
复制代码
在两个节点上验证是否已毗连:
  1. gluster peer status
复制代码
应表现 Connected 状态。
创建存储目次
在两台服务器上分别创建存储目次:
  1. mkdir -p /data/glusterfs/brick1
复制代码
创建存储卷
在恣意一台服务器(推荐主节点 Master)上创建存储卷:
  1. gluster volume create shared-vol replica 2 transport tcp \
  2. 192.168.1.166:/data/glusterfs/brick1 \
  3. 192.168.1.167:/data/glusterfs/brick1 force
复制代码


  • replica 2:设置为副本模式,保证数据同步。
  • transport tcp:使用 TCP 协议通信。
  • 在下令末端添加 force 参数,使用根分区作为存储。
启动存储卷:
  1. gluster volume start shared-vol
复制代码
验证存储卷状态:
  1. gluster volume info
复制代码
1.3 挂载共享目次

在两台服务器上分别执行以下步调:
创建挂载点目次
  1. mkdir -p /mnt/glusterfs
复制代码
挂载共享卷
  1. mount -t glusterfs 192.168.1.166:/shared-vol /mnt/glusterfs
复制代码
验证挂载乐成
  1. df -h | grep glusterfs
复制代码
输出应表现 /mnt/glusterfs 已挂载到 GlusterFS 共享卷。
配置开机自动挂载: 在 /etc/fstab 文件中添加以下条目:
  1. 192.168.1.166:/shared-vol /mnt/glusterfs glusterfs defaults,_netdev 0 0
复制代码
测试挂载配置:
  1. mount -a
复制代码
1.4 测试高可用性

验证目次互通:
Master 节点 创建测试文件:
  1. echo "Hello from Master" > /mnt/glusterfs/test.txt
复制代码
Slave 节点 检查是否存在相同文件:
  1. cat /mnt/glusterfs/test.txt
复制代码
验证故障切换:
停止 Master 节点 GlusterFS 服务
  1. systemctl stop glusterd
复制代码
在 Slave 节点检查是否仍能访问共享数据
  1. ls /mnt/glusterfs
复制代码
重新启动 Master 节点服务
  1. systemctl start glusterd
复制代码
1.5 更多下令

删除卷:
  1. gluster volume stop shared-vol
复制代码

2 安装jdk

安装java 1.8 情况,分别在两台节点上执行安装下令:
  1. yum install -y java-1.8.0-openjdk
复制代码
检察版本:
  1. java -version
复制代码

3 安装ActiveMQ

**3.1 创建ActiveMQ专用用户 **

为了安全性,可以创建专用的 activemq 用户运行服务:
  1. useradd -r -s /bin/false activemq
复制代码


  • 设置该用户的默认 Shell 为 /bin/false,即 禁止登录系统
3.2 下载并解压 ActiveMQ

在两台服务器上执行以下操纵:
  1. wget https://archive.apache.org/dist/activemq/5.13.0/apache-activemq-5.13.0-bin.tar.gz
  2. tar -zxvf apache-activemq-5.13.0-bin.tar.gz -C /opt
  3. mv /opt/apache-activemq-5.13.0 /opt/activemq
复制代码
授权用户组:
  1. chown -R activemq:activemq /opt/activemq
复制代码
3.3 创建数据存储目次

ActiveMQ 数据目次预备配置到共享目次中,在共享目次中为数据存储创建子目次,并授权用户组:
  1. mkdir -p /mnt/glusterfs
  2. /activemq/kahadbchown -R activemq:activemq /mnt/glusterfs/activemq/kahadb
复制代码
3.4 配置主从模式

ActiveMQ 支持基于共享存储的主从配置,这种模式确保只有一个节点在运行,另一节点处于备用状态。
在两台服务器上配置相同的 ActiveMQ:
编辑配置文件 /opt/activemq/conf/activemq.xml,定位现有 <broker> 节点,改为如下:
  1. <broker xmlns="http://activemq.apache.org/schema/core"
  2.         brokerName="sharedBroker"
  3.         useJmx="true"
  4.         persistent="true">
  5.     <!-- 使用共享文件系统持久化 -->
  6.     <persistenceAdapter>
  7.         <kahaDB directory="/mnt/glusterfs/activemq/kahadb">
  8.             <locker>
  9.                 <shared-file-locker />
  10.             </locker>
  11.         </kahaDB>
  12.     </persistenceAdapter>
  13.     <!-- Transport Connectors -->
  14.     <transportConnectors>
  15.         <transportConnector name="openwire" uri="tcp://0.0.0.0:61616" />
  16.         <transportConnector name="stomp" uri="stomp://0.0.0.0:61613" />
  17.     </transportConnectors>
  18. </broker>
复制代码
关键变化


  • brokerName:修改为唯一标识名称(如 sharedBroker)。
  • dataDirectory:可省略或修改为共享存储路径,但更推荐直接通过 <kahaDB> 界说路径。
  • <sharedFileSystemMasterSlave/>:启用共享存储的主从模式。
  • <kahaDB>:明白指定 GlusterFS 共享路径。
同步配置文件: 确保两台服务器的 ActiveMQ 配置文件(/opt/activemq/conf/activemq.xml)完全一致。
3.5 启动 ActiveMQ

在两台服务器上启动 ActiveMQ 服务:
  1. su activemq
  2. /opt/activemq/bin/activemq start
复制代码
验证主从状态:
检察日志
  1. /opt/activemq/data/activemq.log
复制代码


  • 在主节点上,日志会表现类似以下内容:
    1. INFO | Apache ActiveMQ 5.13.0 (sharedBroker, ID:Master-1) is starting
    复制代码
  • 在从节点上,日志会表现:
    1. INFO | Waiting for the shared file system to become active
    复制代码
3.6 验证高可用性

测试主节点故障切换


  • 停止主节点服务:
    1. su activemq
    2. /opt/activemq/bin/activemq stop
    复制代码
  • 检查从节点日志,从节点应接受主节点的脚色。
恢复主节点


  • 重启主节点服务并检查日志,从节点会自动回退到备用状态。
长处

  • 高可用:主从模式确保 ActiveMQ 服务不停止。
  • 数据一致性:共享目次通过 GlusterFS 确保数据同步。
  • 易扩展:可以添加更多节点到共享文件系统中。
3.7 配置开机自启服务

创建Systemd服务文件
在 /etc/systemd/system/ 生成 activemq.service 服务文件
  1. tee /etc/systemd/system/activemq.service << \EOF
  2. [Unit]
  3. Description=Apache ActiveMQ Message Broker
  4. After=network.target glusterd.service
  5. Requires=glusterd.service
  6. [Service]
  7. Type=forking
  8. User=activemq
  9. Group=activemq
  10. ExecStart=/opt/activemq/bin/activemq start
  11. ExecStop=/opt/activemq/bin/activemq stop
  12. Restart=on-failure
  13. # 等待 GlusterFS 挂载完成再启动 ActiveMQ
  14. ExecStartPre=/bin/bash -c 'while [ ! -d /mnt/glusterfs/activemq/kahadb ]; do sleep 1; done'
  15. # 确保启动日志保存路径存在
  16. Environment="ACTIVEMQ_LOG_DIR=/opt/activemq/data/log"
  17. Environment="ACTIVEMQ_HOME=/opt/activemq"
  18. Environment="ACTIVEMQ_BASE=/opt/activemq"
  19. Environment="ACTIVEMQ_CONF=/opt/activemq/conf"
  20. Environment="ACTIVEMQ_DATA=/opt/activemq/data"
  21. [Install]
  22. WantedBy=multi-user.target
  23. EOF
复制代码
阐明


  • ExecStart 和 ExecStop 是 ActiveMQ 的启动和停止脚本路径,请根据你的现实安装目次调整路径(通常是 /opt/activemq/bin/activemq)。
  • User 和 Group 指定运行 ActiveMQ 的用户和用户组。建议创建专用用户,如 activemq,避免使用 root。
设置权限并革新服务
  1. # 重新加载 systemd 服务文件
  2. systemctl daemon-reload
  3. # 设置 ActiveMQ 服务开机自启
  4. systemctl enable activemq.service
  5. # 启动 ActiveMQ 服务
  6. systemctl start activemq.service
  7. # 检查服务状态
  8. systemctl status activemq.service
复制代码
重启验证
先 reboot 192.168.1.166(Master)呆板,看是不是Salve接力了;
再 reboot 192.168.1.167(Slave)呆板,看是不是又切回Master了;
3.8 web控制台访问

访问地点:
Master http://192.168.1.166:8161/
Salve http://192.168.1.167:8161/
当Master是正常情况下,Salve控制台是不能访问的,除非Master故障,Salve接力后,Salve的web控制台才气正常访问。
这里没有修改默认账号密码,以是web控制台登录的账号密码为:admin/admin
引用Reference



  • CentOS8搭建nfs服务
  • Kubernetes1.25.4版本安装
  • kubeasz安装kubernetes1.25.5
  • k8s一键安装redis单机版
  • k8s一键安装mysql8单机版
  • k8s摆设springboot应用
  • Docker安装及学习
  • Docker制作springboot运行应用镜像
  • Docker制作Java8情况镜像
  • Docker安装Mysql5.7.31
  • Docker安装Mysql8.1.0
  • Elasticsearch单机版本安装
  • Elasticsearch集群安装
  • ELK安装
  • Docker安装ELK
  • zookeeper集群安装
  • Nginx日志切割
  • RabbitMQ集群安装
  • Docker安装RabbitMQ单机版
  • springboot集成prometheus+grafana
  • windows11安装android应用
  • Windows下多个JDK版本快速切换
  • MongoDB主从仲裁模式安装
  • ActiveMQ基于共享目次的主从配置方案

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

八卦阵

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表