前言
由于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
|
编辑环境变量:
添加环境变量:export MAVEN_HOME=/usr/local/apache-maven-3.2.2 export PATH=$MAVEN_HOME/bin:$PATH
|
刷新环境变量
检查是否安装成功
进入配置文件夹cd /usr/local/apache-maven-3.2.2/conf
|
编辑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/文件夹
下载安装包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
|
编辑启动文件
修改jvm启动参数JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
|
创建conf文件夹mkdir -p /usr/local/rocketmq-data/conf
|
创建propertiestouch /usr/local/rocketmq-data/conf/namesrv-a.properties
|
编辑propertiesvim /usr/local/rocketmq-data/conf/namesrv-a.properties
|
添加端口号
进入执行文件夹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/文件夹
下载安装包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
|
编辑启动文件
修改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
|
创建propertiestouch /usr/local/rocketmq-data/conf/broker-a.properties
|
编辑propertiesvim /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.propertiesvim /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.propertiesvim /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),生产环境为了安全起见,建议自定义账号密码。