【Linux】RocketMQ 部署
系统要求
系统要求
1、64位操作系统,推荐 Linux/Unix/macOS
2、64位 JDK 1.8+
3、官网文档
安装部署
下载
这里使用release免编译版本
1 | # 解压 |
启动NameServer
1 | ### 启动namesrv |
我们可以在namesrv.log 中看到
The Name Server boot success..
, 表示NameServer 已成功启动。
启动Broker+Proxy
NameServer成功启动后,我们启动Broker和Proxy,5.x 版本下我们建议使用 Local 模式部署,即 Broker 和 Proxy 同进程部署。5.x 版本也支持 Broker 和 Proxy 分离部署以实现更灵活的集群能力。
1 | ### 先启动broker |
我们可以在 proxy.log 中看到
The broker[brokerName,ip:port] boot success..
,这表明 broker 已成功启动。
工具测试消息收发
1 | $ export NAMESRV_ADDR=localhost:9876 |
dashboard(非必须)
安装
安装 dashboard,需要编译源代码. 源码github 地址
下载之后,修改 application.yml 参数,我这里只修改了 Name Server 地址:
1 | rocketmq: |
然后执行 Maven 打包命令,打出 jar 包:
1 | mvn clean package -Dmaven.test.skip=true |
打好 jar 包后上传到服务器,执行下面命令启动:
1 | java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar |
测试
浏览器输入 http://127.0.0.1:8080/
Docker 部署
创建namesrv服务
拉取镜像
1 | docker pull apache/rocketmq |
创建namesrv数据存储路径
1 | mkdir -p /docker/rocketmq/data/namesrv/logs /docker/rocketmq/data/namesrv/store |
构建namesrv容器
1 | docker run -d \ |
-restart=always| docker重启时候容器自动重启
-name rmqnamesrv | 把容器的名字设置为rmqnamesrv
-p 9876:9876| 把容器内的端口9876挂载到宿主机9876上面
-v /docker/rocketmq/data/namesrv/logs:/root/logs | 把容器内的/root/logs日志目录挂载到宿主机的 /docker/rocketmq/data/namesrv/logs目录
-v /docker/rocketmq/data/namesrv/store:/root/store | 把容器内的/root/store数据存储目录挂载到宿主机的 /docker/rocketmq/data/namesrv目录
rmqnamesrv | 容器的名字
-e “MAX_POSSIBLE_HEAP=100000000” | 设置容器的最大堆内存为100000000
apache/rocketmq | 使用的镜像名称
sh mqnamesrv | 启动namesrv服务
创建broker节点
创建broker数据存储路径
1 | mkdir -p /docker/rocketmq/data/broker/logs /docker/rocketmq/data/broker/store /docker/rocketmq/conf |
创建配置文件
注意修改
brokerIP1 = 172.18.88.54
中ip地址。
1 | vi /docker/rocketmq/conf/broker.conf |
1 | # 所属集群名称,如果节点较多可以配置多个 |
构建broker容器
1 | docker run -d \ |
-name rmqbroker | 把容器的名字设置为rmqbroker
–link rmqnamesrv:namesrv | 和rmqnamesrv容器通信
-p 10911:10911 | 把容器的非vip通道端口挂载到宿主机
-p 10909:10909 | 把容器的vip通道端口挂载到宿主机
-e “NAMESRV_ADDR=namesrv:9876” | 指定namesrv的地址为本机namesrv的ip地址:9876
-e “MAX_POSSIBLE_HEAP=200000000” rocketmqinc/rocketmq sh mqbroker |指定broker服务的最大堆内存
rocketmqinc/rocketmq | 使用的镜像名称
sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf | 指定配置文件启动broker节点
创建rockermq-console服务
拉取镜像
1 | docker pull pangliang/rocketmq-console-ng |
构建rockermq-console容器
需要替换
192.168.52.136
为实际ip地址
1 | docker run -d \ |
-restart=always| docker重启时候镜像自动重启
-name rmqadmin | 把容器的名字设置为rmqadmin
-e “JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.52.136:9876 | 设置namesrv服务的ip地址
-Dcom.rocketmq.sendMessageWithVIPChannel=false” | 不使用vip通道发送消息
–p 10010:8080 | 把容器内的端口8080挂载到宿主机上的9999端口
开放端口 9876/10911/10010
创建系统服务
1、 编写管理脚本命令,vi /etc/init.d/rocketmq
1 |
|
注意:
1.1 注: 复制这个脚本到Linux可能会丢失最上面的一部分,不知道为什么,通过xshell打开Linux,然后复制这些内容到文件中,会丢失一部分,自己复制过去以后检查清楚是否丢失一些内容。不然就算注册成一个服务也没法用。
1.2 ROCKETMQ_HOME的地址、利用nohup启动broker是指定启动的配置文件都要写对
2、将rocketmq服务添加为开机启动服务
1 | chmod +x /etc/init.d/rocketmq |
再运行chkconfig –list查看是否出现以下内容,出现则代表加入成功了
注:若出现下图0-6都是关,那代表还不能开机自启,再运行 chkconfig rocketmq on
,然后再运行chkconfig –list以后2-5都是开以后才行。
1 | [root@host-172-20-42-212 rocketmq-5.1.2]# chkconfig --list |
3、通过service命令来管理rocketmq
1 | # 启动 |
1 | -- 启动namesrv |
4、设置密码
4.1 开启acl控制
在conf/broker.conf
中开启aclEnable=true
1 | vim conf/broker.conf |
4.2 配置账号密码
修改conf/plain_acl.yml
accounts:
# 管理员账号/密码
accessKey: catsicrocketmq
secretKey: Catsic1qsx@WDC
4.3 配置面板中的密码
在dashboard.jar包同级目录创建config文件夹,将项目底下的application.properties上传到config文件夹下,将注释放开,设置对应的账号密码。修改后重启
rocketmq.config.accessKey=catsicrocketmq
rocketmq.config.secretKey=Catsic1qsx@WDC
4.4 当前,已经为RocketMQ设置了密码,但是,还存在问题,操作面板没有设置密码,操作面板没有设置密码,在实际应用中,也是很危险的。下面讲解面板设置密码:
4.5 开启账号密码访问
# 修改application.properties
# 是否开启账号密码验证
rocketmq.config.loginRequired= true
# 账号密码配置文件为:users.properties,将users.properties上传到config目录,修改内容为
# ,1 为管理员,不加为普通用户
catstiMQ=catsti1qaz@WSX,1
# 修改默认用户配置文件路径
vim application.properties
# 将其修改为:
rocketmq.config.dataPath=./config
# 重启dashboard