在遗留系统维护和特定企业环境中,在 CentOS 6.5 这样一个经典且稳定的操作系统上部署 Apache ActiveMQ 依然是一个常见的需求,ActiveMQ 作为一个功能强大、开源的消息中间件,能够有效地解耦应用组件,提高系统的异步处理能力和可伸缩性,本文将详细介绍在 CentOS 6.5 环境下安装、配置和管理 ActiveMQ 的完整流程,旨在为系统管理员和开发人员提供一份清晰、实用的操作指南。
环境准备与前置条件
在开始安装 ActiveMQ 之前,必须确保系统环境满足其运行的基本要求,ActiveMQ 是基于 Java 开发的,因此一个稳定可靠的 Java 运行环境(JRE)或开发工具包(JDK)是必不可少的。
我们需要检查系统中是否已经安装了 Java,并确认其版本,ActiveMQ 5.x 版本通常要求 JDK 1.7 或更高版本,可以通过以下命令进行验证:
java -version
如果系统返回了类似 openjdk version "1.8.0_xxx"
的信息,说明 Java 环境已就绪,如果未安装或版本过低,我们可以使用 CentOS 6.5 的 yum
包管理器来安装 OpenJDK,推荐安装 JDK 而非 JRE,因为某些管理脚本或工具可能需要 javac
等开发工具。
sudo yum install java-1.8.0-openjdk-devel
安装完成后,再次执行 java -version
确认安装成功,为了方便后续操作,建议配置 JAVA_HOME
环境变量,可以通过编辑 /etc/profile
文件来实现,在文件末尾添加以下内容:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk export PATH=$PATH:$JAVA_HOME/bin
保存文件后,执行 source /etc/profile
使配置立即生效。
下载与安装 ActiveMQ
ActiveMQ 的官方发布包是独立的二进制压缩包,解压即可使用,无需复杂的编译安装过程。
下载 ActiveMQ:访问 Apache ActiveMQ 官方网站或其归档页面,获取稳定版本的下载链接,以 ActiveMQ 5.15.9 为例,可以使用
wget
命令直接下载到服务器。wget http://archive.apache.org/dist/activemq/5.15.9/apache-activemq-5.15.9-bin.tar.gz
解压与部署:将下载的压缩包解压,并移动到一个规范的目录,
/opt
。tar -zxvf apache-activemq-5.15.9-bin.tar.gz sudo mv apache-activemq-5.15.9 /opt/activemq
至此,ActiveMQ 的安装工作已经完成,所有相关的程序文件、配置文件和脚本都位于 /opt/activemq
目录下。
核心配置解析
ActiveMQ 的核心配置文件是 /opt/activemq/conf/activemq.xml
,在首次启动前,了解并适当修改此文件中的关键配置项至关重要。
传输连接器
transportConnectors
部分定义了客户端可以用来连接 ActiveMQ 的协议和端口,默认配置包含了多种主流协议。
协议 | 端口 | 描述 |
---|---|---|
Openwire | 61616 | ActiveMQ 的核心二进制协议,性能最高。 |
AMQP | 5672 | 高级消息队列协议,支持跨平台。 |
STOMP | 61613 | 简单文本协议,易于多种语言客户端实现。 |
MQTT | 1883 | 轻量级协议,适用于物联网和移动设备。 |
WS | 61614 | WebSocket 协议,用于浏览器端连接。 |
根据实际应用需求,可以禁用不需要的协议以减少资源占用和潜在的安全风险。
消息持久化
为了防止服务器重启或意外宕机导致消息丢失,ActiveMQ 提供了消息持久化机制,默认使用的是 KahaDB,它是一个高性能、基于文件的嵌入式数据库。
在 activemq.xml
中,持久化适配器的配置如下:
<persistenceAdapter> <kahaDB directory="${activemq.data}/kahadb"/> </persistenceAdapter>
${activemq.data}
变量默认指向 /opt/activemq/data
目录,这意味着所有持久化消息都会存储在 /opt/activemq/data/kahadb
目录下,在生产环境中,建议将此目录挂载到性能更优、可靠性更高的独立磁盘分区上。
简单认证
默认情况下,ActiveMQ 的连接和 Web 控制台都是开放的,这在生产环境中是极不安全的,最简单的安全措施是启用简单认证插件,这需要修改 activemq.xml
,在 <broker>
标签内添加以下配置:
<plugins> <simpleAuthenticationPlugin> <users> <authenticationUser username="system" password="manager" groups="users,admins"/> <authenticationUser username="user" password="password" groups="users"/> <authenticationUser username="guest" password="password" groups="guests"/> </users> </simpleAuthenticationPlugin> </plugins>
编辑 /opt/activemq/conf/login.config
文件,确保 propertiesLogin
模块指向正确的用户属性文件。
启动、停止与管理
ActiveMQ 提供了便捷的脚本用于管理其生命周期,这些脚本位于 /opt/activemq/bin/
目录下。
启动 ActiveMQ:
/opt/activemq/bin/activemq start
检查运行状态:
/opt/activemq/bin/activemq status
停止 ActiveMQ:
/opt/activemq/bin/activemq stop
启动后,可以通过查看日志文件来监控运行情况或排查问题:
tail -f /opt/activemq/data/activemq.log
访问 Web 管理控制台
ActiveMQ 内置了一个功能强大的 Web 管理控制台,极大地简化了队列、主题、连接和消息的监控与管理。
在浏览器中访问 http://<服务器IP地址>:8161/admin
,默认情况下,控制台端口为 8161,如果启用了简单认证,系统会提示输入用户名和密码,在默认的 conf/users.properties
文件中,管理员账户为 admin
,密码为 admin
。
登录后,你可以直观地看到消息代理的运行状态,包括:
- Queues:查看所有队列中的消息数量、消费者数量等。
- Topics:监控主题的订阅者和消息分发情况。
- Connections:管理当前连接到代理的客户端。
- Browse:浏览队列中的具体消息内容(非持久化消息可能无法浏览)。
配置为系统服务(开机自启)
为了确保 ActiveMQ 能够随系统自动启动,并将其作为标准系统服务进行管理,我们需要为其创建一个 init
脚本。
创建服务脚本文件:
sudo vi /etc/init.d/activemq
将以下脚本内容粘贴到文件中,请根据你的实际安装路径调整
ACTIVEMQ_HOME
和ACTIVEMQ_USER
变量。#!/bin/sh # # /etc/init.d/activemq # # chkconfig: 2345 63 37 # description: activemq message broker # processname: activemq # Source function library. . /etc/rc.d/init.d/functions # set variables ACTIVEMQ_USER=root ACTIVEMQ_HOME=/opt/activemq ACTIVEMQ_CONFIG=$ACTIVEMQ_HOME/conf ACTIVEMQ_DATA=$ACTIVEMQ_HOME/data prog=activemq pidfile=${ACTIVEMQ_DATA}/activemq.pid lockfile=${ACTIVEMQ_DATA}/activemq.lck start() { echo -n $"Starting $prog: " daemon --user "$ACTIVEMQ_USER" --pidfile="$pidfile" "$ACTIVEMQ_HOME/bin/activemq" start RETVAL=$? echo [ $RETVAL = 0 ] && touch ${lockfile} return $RETVAL } stop() { echo -n $"Stopping $prog: " daemon --user "$ACTIVEMQ_USER" --pidfile="$pidfile" "$ACTIVEMQ_HOME/bin/activemq" stop RETVAL=$? echo [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile} return $RETVAL } status() { # Check for existence of the pid file if [ -f $pidfile ]; then # The process is running echo "$prog is running (pid `cat $pidfile`)" exit 0 else # The process is not running echo "$prog is not running" exit 1 fi } case "$1" in start) start ;; stop) stop ;; status) status ;; restart) stop start ;; *) echo "Usage: {start|stop|status|restart}" exit 1 ;; esac exit $RETVAL
设置脚本权限并添加到系统服务:
sudo chmod +x /etc/init.d/activemq sudo chkconfig --add activemq sudo chkconfig activemq on
你可以使用标准的 service
命令来管理 ActiveMQ 了:
sudo service activemq start sudo service activemq stop sudo service activemq status
相关问答 (FAQs)
问题1:忘记了 Web 控制台的管理员密码怎么办?
解答: 这是非常常见的情况,ActiveMQ 的用户认证信息(默认情况下)存储在纯文本文件中,重置密码非常简单。
- 使用 SSH 登录到运行 ActiveMQ 的服务器。
- 编辑用户属性文件:
vi /opt/activemq/conf/users.properties
。 - 在文件中找到
admin=admin
这一行,它表示用户名=密码
,将其修改为你想要的新密码,admin=myNewSecretPassword
。 - 保存文件并退出编辑器。
- 重启 ActiveMQ 服务以使更改生效:
sudo service activemq restart
。 - 你就可以使用新密码
myNewSecretPassword
登录 Web 控制台了。
问题2:如何修改 ActiveMQ 的消息持久化存储路径?
解答: 在生产环境中,将持久化数据存储在独立的、高性能的磁盘上是最佳实践,修改存储路径的步骤如下:
确保新的目标目录已经创建,ActiveMQ 运行用户(
root
)对该目录有读写权限,我们想将其移动到/data/activemq/kahadb
。sudo mkdir -p /data/activemq/kahadb sudo chown -R root:root /data/activemq
编辑 ActiveMQ 的核心配置文件:
vi /opt/activemq/conf/activemq.xml
。找到
<persistenceAdapter>
部分,修改<kahaDB>
标签的directory
属性。<!-- 原始配置 --> <kahaDB directory="${activemq.data}/kahadb"/> <!-- 修改后的配置 --> <kahaDB directory="/data/activemq/kahadb"/>
保存文件并退出。
如果旧的
/opt/activemq/data/kahadb
目录中已有需要保留的数据,请先停止 ActiveMQ,然后将整个kahadb
目录下的所有文件复制到新目录/data/activemq/kahadb
中。重启 ActiveMQ 服务:
sudo service activemq restart
。
重启后,ActiveMQ 就会将所有新的持久化消息写入到新的存储路径中。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复