前言

由于RocketMQ是使用纯Java编写的,所以NameServer、Broker的运行必须依赖于JDK环境,安装过程中需要下载依赖,因此也必须要用到maven依赖,JDK就不写了,从maven的安装开始写。

maven

下载文件
wget http://mirror.bit.edu.cn/apache/maven/binaries/apache-maven-3.2.2-bin.tar.gz

解压文件
tar -zxvf apache-maven-3.2.2-bin.tar.gz

编辑环境变量:
vim /etc/profile

添加环境变量:
export MAVEN_HOME=/usr/local/apache-maven-3.2.2
export PATH=$MAVEN_HOME/bin:$PATH

刷新环境变量
source /etc/profile

检查是否安装成功
mvn -v

进入配置文件夹
cd /usr/local/apache-maven-3.2.2/conf

编辑xml配置文件
vi setting.xml

修改镜像仓库
<?xml version="1.0" encoding="UTF-8"?>

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

<localRepository>/usr/local/repo</localRepository>

<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>

</settings>

NameServer

进入/apply/rocketmq/文件夹
cd /apply/rocketmq/

下载安装包
wget http://mirrors.hust.edu.cn/apache/rocketmq/4.7.1/rocketmq-all-4.7.1-source-release.zip

解压安装包
unzip rocketmq-all-4.7.1-source-release.zip

重命名
mv rocketmq-all-4.7.1-source-release /apply/rocketmq/broker-a

进入文件夹
cd /apply/rocketmq/broker-a

下载依赖
mvn -Prelease-all -DskipTests clean install -U

进入执行文件夹
cd distribution/target/rocketmq-4.7.1/rocketmq-4.7.1/bin

编辑启动文件
vim runserver.sh

修改jvm启动参数
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

创建conf文件夹
mkdir -p /usr/local/rocketmq-data/conf

创建properties
touch /usr/local/rocketmq-data/conf/namesrv-a.properties

编辑properties
vim /usr/local/rocketmq-data/conf/namesrv-a.properties

添加端口号
# 服务端口号
listenPort=9876

进入执行文件夹
cd /apply/rocketmq/namesrv-a/distribution/target/rocketmq-4.7.1/rocketmq-4.7.1/bin

启动
nohup sh mqnamesrv -c /usr/local/rocketmq-data/conf/namesrv-a.properties &

注:如果NameServer仅部署一台,或者每台都在不同的机器上,properties可以不配置(端口默认就是9876),如果本地测试想要在一台服务器上配置多个,就需要区分端口

Broker

进入/apply/rocketmq/文件夹
cd /apply/rocketmq/

下载安装包
wget http://mirrors.hust.edu.cn/apache/rocketmq/4.7.1/rocketmq-all-4.7.1-source-release.zip

解压安装包
unzip rocketmq-all-4.7.1-source-release.zip

重命名
mv rocketmq-all-4.7.1-source-release /apply/rocketmq/broker-a

进入文件夹
cd /apply/rocketmq/broker-a

下载依赖
mvn -Prelease-all -DskipTests clean install -U

进入执行文件夹
cd distribution/target/rocketmq-4.7.1/rocketmq-4.7.1/bin

编辑启动文件
vim runbroker.sh

修改jvm启动参数
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn512m"

创建store文件夹
mkdir -p /usr/local/rocketmq-data/store-broker-a

创建commitlog文件夹
mkdir -p /usr/local/rocketmq-data/store-broker-a/commitlog

创建properties
touch /usr/local/rocketmq-data/conf/broker-a.properties

编辑properties
vim /usr/local/rocketmq-data/conf/broker-a.properties

添加属性
#服务端口号
listenPort=10911
#集群名
brokerClusterName = lvt-cluster
#broker服务名
brokerName = broker-a
#0表示master,大于0表示各个slave
brokerId = 0
#删除文件时间点,默认凌晨 4点
deleteWhen = 04
#文件保留时间,默认48小时
fileReservedTime = 48
#Broker角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole = ASYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType = ASYNC_FLUSH
#公网
brokerIP1 = 172.0.0.1
#注册中心地址,多个使用;分开
namesrvAddr=172.0.0.1:9876
#是否自动创建,生产建议关闭
autoCreateTopicEnable=true
#持久化消息存储根路径
storePathRootDir=/usr/local/rocketmq-data/store-broker-a
#commitLog文件存储路径
storePathCommitLog=/usr/local/rocketmq-data/store-broker-a/commitlog

进入执行文件夹
cd /apply/rocketmq/broker-a/distribution/target/rocketmq-4.7.1/rocketmq-4.7.1/bin

启动
nohup sh mqbroker -c /usr/local/rocketmq-data/conf/broker-a.properties &

注:在网上看到很多资料将配置写在broker.conf中,上述的不是方式不会读取这个配置文件,如果这么做也不会报错,因为这些参数全部自带默认值。

另外在配置属性中关于store的一些路径只能设置storePathRootDir、storePathCommitLog这俩个,其他的写进去会导致项目无法启动(如果写的路径是错的则不会,应该是没检测到路径就改用默认值了)。

还有个奇怪的事情,我在腾讯云部署的伪Broker集群,发现不同的节点端口号不能相邻,否则会报端口占用,目前是各服务的端口号隔几百。

Console

进入git网址,下载源码(点击Download ZIP)
https://github.com/apache/rocketmq-externals.git

上传到服务器/apply/rocketmq文件夹,并解压
unzip /apply/rocketmq/rocketmq-externals-master.zip

重命名文件夹
mv /apply/rocketmq/rocketmq-externals-master console

创建数据文件夹
mkdir -p /usr/local/rocketmq-data/console-data

编辑application.properties
vim /apply/rocketmq/console/rocketmq-console/src/main/resources/application.properties

修改属性
# 注册中心地址端口
rocketmq.config.namesrvAddr=172.0.0.1:9876
# 存放数据路径
rocketmq.config.dataPath=/usr/local/rocketmq-data/console-data
# 是否需要登陆
rocketmq.config.loginRequired=true

编辑users.properties
vim /apply/rocketmq/console/rocketmq-console/src/main/resources/users.properties

设置登录控制台的账号密码(注释的汉字别打进去,否则下面编译不通过)
# 设置管理员,格式:username=password[,N]  其中N是可选项:0为普通用户 1为管理员
admin=admin,1
# 普通成员
member=member

进入解压文件夹
cd /apply/rocketmq/console/rocketmq-console

执行编译(一定要编辑完配置在编译,否则配置无效)
mvn clean package -Dmaven.test.skip=true

进入jar包文件夹
cd /apply/rocketmq/console/rocketmq-console/target

启动服务
nohup java -jar rocketmq-console-ng-2.0.0.jar &

注:如果rocketmq.config.loginRequired设置为false,则不需要编辑users.properties设置登录用的账号密码。在设置为true的情况下,如果不编辑users.properties文件设置账号密码,会有个默认账号可以直接登录(admin/admin),生产环境为了安全起见,建议自定义账号密码。

评论