系统环境 Docker > centos7.5 此镜像已经安装了jdk1.8和maven3.6.0

如果你想知道这个基础镜像的具体情况, 参考此文: https://www.cnblogs.com/imyjy/p/10100712.html

第一件事, 造一个包含rocketmq的docker容器镜像

运行基础镜像: docker run -itd -p 19876:9876 --name docker <基础镜像id> /bin/bash

查看容器列表: docker ps -a

进入Docker容器: docker exec -it <容器id> /bin/bash

下载RocketMQ源码

  方式1:

    安装Git: yum install -y git

    查看Git是否安装成功: git --version

    下载源码: git clone -b release-4.3.2 https://github.com/apache/rocketmq.git

  方式2:

    打开rocketmq的github地址: https://github.com/apache/rocketmq

    选择合适的版本分支,并下载源码文件

    将源码文件拷贝到/home目录

从源码安装RocketMQ

  进入源码文件夹: cd rocketmq/

  编译安装: mvn -Prelease-all -DskipTests clean install -U

  喝个茶, 散个步  

  安装完成,进入构建文件夹: cd distribution/target/

  将rocketmq移动至/usr/local/并重命名: mv ./apache-rocketmq/ /usr/local/rocketmq4.3.2

  修改脚本的jvm配置( (默认的内存配置太大了, 容器根本跑不起来)):

    vi /usr/local/rocketmq4.3.2/bin/runbroker.sh

    vi /usr/local/rocketmq4.3.2/bin/runserver.sh

    vi /usr/local/rocketmq4.3.2/bin/tools.sh

退出容器终端: exit

查看容器列表: docker ps -a

保存容器为镜像, 命名为rocketmq: docker commit -m '已安装rocketmq' -a 'yjy' <容器id> rocketmq:1.0

(上面的步骤可能很慢, 并且构建出来的镜像文件非常大, 优化请看此)

查看镜像列表: docker images

现在我们已经拥有了一个包含rocketmq服务的centos系统

第二件事,配置并启动rocketmq集群

查看宿主机ip(后面再集群配置文件中有用到): ifconfig -a   (我的宿主机是虚拟机, 所以这里选择 ens33的ip, 反正192.168打头的就没错了)

关闭宿主机的防火墙: service firewalld stop

启动两个容器作为集群(每个容器部署 1个nameserver + 1master + 1slave):

  docker run -dit -v /etc/localtime:/etc/localtion:ro --privileged=true -p 9876:9876 -p 10909:10909 -p 10907:10907 -p 10920:10920 -p 10918:10918 -p 11909:11909 -p 11920:11920 --name rocketmq1 <镜像id> /bin/bash

  docker run -dit -v /etc/localtime:/etc/localtion:ro --privileged=true -p 9877:9876 -p 10919:10919 -p 10917:10917 -p 10910:10910 -p 10908:10908 -p 11919:11919 -p 11910:11910 --name rocketmq2 <镜像id> /bin/bash

命令解释:

  -v /etc/localtime:/etc/localtion:ro: 将宿主机的本地时间挂载到容器中, 保证时间同步, ro表示只读

  --privileged=true: 给容器特权, 否则无法访问挂载文件

  -p 9876:9876 ...: 绑定宿主机与容器的端口, namesrv会用到1个端口, master和slave分别会用到3个端口(listenPort / haListenPort / fastListenPort)

  --name rocketmq1: 指定容器的名字, 好做区分

进入rocketmq1 容器: docker exec -it <容器id> /bin/bash

进入rocketmq配置文件目录: cd /usr/local/rocketmq4.3.2/conf

安装zip工具: yum install zip

安装lrzsz: yum install lrzsz

压缩2m-2s-async配置目录: zip -r ./async.zip ./2m-2s-async/

下载到windows本地修改(比较方便): sz ./async.zip

在本地解压修改4个配置文件(里面的ip根据自己的来):

# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH # 这里的ip为宿主机的ip
namesrvAddr=192.168.25.30:9876;192.168.25.30:9877
brokerIP1=192.168.25.30
brokerIP2=192.168.25.30 listenPort=10909
haListenPort=11909
# fastListenPort = listenPort - 2 autoCreateTopicEnable=true storePathRootDir=/usr/local/rocketmq4.3.2/store-a
storePathCommitLog=/usr/local/rocketmq4.3.2/store/commitlog-a
storePathConsumeQueue=/usr/local/rocketmq4.3.2/store/consumequeue-a
storePathIndex=/usr/local/rocketmq4.3.2/store/index-a
storeCheckpoint=/usr/local/rocketmq4.3.2/store/checkpoint-a
abortFile=/usr/local/rocketmq4.3.2/store/abort-a

broker-a.properties

# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH namesrvAddr=192.168.25.30:9876;192.168.25.30:9877
brokerIP1=192.168.25.30
brokerIP2=192.168.25.30 listenPort=10919
haListenPort=11919 autoCreateTopicEnable=true storePathRootDir=/usr/local/rocketmq4.3.2/store-b
storePathCommitLog=/usr/local/rocketmq4.3.2/store/commitlog-b
storePathConsumeQueue=/usr/local/rocketmq4.3.2/store/consumequeue-b
storePathIndex=/usr/local/rocketmq4.3.2/store/index-b
storeCheckpoint=/usr/local/rocketmq4.3.2/store/checkpoint-b
abortFile=/usr/local/rocketmq4.3.2/store/abort-b

broker-b.properties

# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH namesrvAddr=192.168.25.30:9876;192.168.25.30:9877
brokerIP1=192.168.25.30
brokerIP2=192.168.25.30 listenPort=10910
haListenPort=11910 autoCreateTopicEnable=true storePathRootDir=/usr/local/rocketmq4.3.2/store-a-s
storePathCommitLog=/usr/local/rocketmq4.3.2/store/commitlog-a-s
storePathConsumeQueue=/usr/local/rocketmq4.3.2/store/consumequeue-a-s
storePathIndex=/usr/local/rocketmq4.3.2/store/index-a-s
storeCheckpoint=/usr/local/rocketmq4.3.2/store/checkpoint-a-s
abortFile=/usr/local/rocketmq4.3.2/store/abort-a-s

broker-a-s.properties

# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH namesrvAddr=192.168.25.30:9876;192.168.25.30:9877
brokerIP1=192.168.25.30
brokerIP2=192.168.25.30 listenPort=10920
haListenPort=11920 autoCreateTopicEnable=true storePathRootDir=/usr/local/rocketmq4.3.2/store-b-s
storePathCommitLog=/usr/local/rocketmq4.3.2/store/commitlog-b-s
storePathConsumeQueue=/usr/local/rocketmq4.3.2/store/consumequeue-b-s
storePathIndex=/usr/local/rocketmq4.3.2/store/index-b-s
storeCheckpoint=/usr/local/rocketmq4.3.2/store/checkpoint-b-s
abortFile=/usr/local/rocketmq4.3.2/store/abort-b-s

broker-b-s.properties

回到容器命令行: cd 2m-2s-async

删除原来的4个配置文件: rm -f ./*

上传本地修改过的配置文件: rz

转到bin目录: cd ../../bin

启动 nameserver1: nohup sh mqnamesrv > ../logs/console-namesrv.log &

启动 master1: nohup sh mqbroker -c ../conf/2m-2s-async/broker-a.properties > ../logs/console-master1.log &

启动 slave2: nohup sh mqbroker -c ../conf/2m-2s-async/broker-b-s.properties > ../logs/console-slave2.log &

查看是否启动成功: cat ~/logs/rocketmqlogs/broker.log

回到宿主机: exit

进入rocketmq2容器: docker exec -it <容器id> /bin/bash

到配置文件目录: cd /usr/local/rocketmq4.3.2/conf/2m-2s-async

删除原4个文件: rm -f ./*

上传本地修改过的4个文件: rz   (如果提示没有rz命令则先安装:  yum install lrzsz)

到bin目录: cd ../../bin/

启动 nameserver2: nohup sh mqnamesrv > ../logs/console-namesrv.log &

启动 master2: nohup sh mqbroker -c ../conf/2m-2s-async/broker-b.properties > ../logs/console-master2.log &

启动 slave1: nohup sh mqbroker -c ../conf/2m-2s-async/broker-a-s.properties > ../logs/console-slave1.log &

查看是否启动成功: cat ~/logs/rocketmqlogs/broker.log

到目前为止我们已经启动了2个nameserver + 2组master + slave

现在回到本地编辑器中, clone rocketMq源码, 使用example模块来测试一下生产者与消费者

生产者:

消费者:

大功告成!

我勒个去, 看看这么简单的步骤, 搞了我3天! 我真蠢

Linux Centos7.5中的RocketMQ集群部署的更多相关文章

  1. CentOS7.4上搭建rocketMQ集群

    一.rocketMQ集群部署方案优缺点对比: 多Master模式(2m-noslave) : 一个集群无Slave,全是Master,例如2个Master或者3个Master 优点:配置简单,单个Ma ...

  2. RocketMQ集群部署记录

    RocketMQ集群部署记录 #引用    https://cloud.tencent.com/developer/article/1147765         一.RocketMQ基础知识介绍 A ...

  3. rocketmq学习(二) rocketmq集群部署与图形化控制台安装

    1.rocketmq图形化控制台安装 虽然rocketmq为用户提供了使用命令行管理主题.消费组以及broker配置的功能,但对于不够熟练的非运维人员来说,命令行的管理界面还是较难使用的.为此,我们可 ...

  4. Redis 中常见的集群部署方案

    Redis 的高可用集群 前言 几种常用的集群方案 主从集群模式 全量同步 增量同步 哨兵机制 什么是哨兵机制 如何保证选主的准确性 如何选主 选举主节点的规则 哨兵进行主节点切换 切片集群 Redi ...

  5. Linux(Centos7)下redis5缓存服务集群分布式搭建

    注意:可以查看Redis官网查看集群搭建方式,连接如下 https://redis.io/topics/cluster-tutorial 集群中应该至少有三个节点,每个节点有一备份节点.需要6台服务器 ...

  6. RocketMQ集群部署配置

    目标,使用2台机器部署RocketMQ多Master多Slave模式,异步复制集群模式. 第一步,修改/etc/hosts文件 192.168.116.115 rocketmq1 192.168.11 ...

  7. RocketMQ集群部署安装

    RcoketMQ:[ 1.低延时:在高压下,1毫秒内超过99.6%的反应延迟. 2.面向金融:具有跟踪和审计功能的高可用性. 3.行业可持续发展:保证了万亿级的消息容量. 4.厂商中立:一个新的开放的 ...

  8. Rocketmq 集群部署

    10.1.0.178 配置文件 broker-a-m.properties brokerClusterName=PaymentClusterbrokerName=broker-anamesrvAddr ...

  9. RocketMQ 简单梳理 及 集群部署笔记【转】

    一.RocketMQ 基础知识介绍Apache RocketMQ是阿里开源的一款高性能.高吞吐量.队列模型的消息中间件的分布式消息中间件. 上图是一个典型的消息中间件收发消息的模型,RocketMQ也 ...

随机推荐

  1. Python实现FTP文件的上传和下载

    # coding: utf-8 import os from ftplib import FTP def ftp_connect(host, username, password): ftp = FT ...

  2. HTML&CSS_基础04

    一.常见的选择器 1. 元素选择器 选择页面中指定的元素 2. id选择器 语法:#id属性值{} 3. 类选择器 语法:.class属性值{} 可以为同一个元素设置多个属性值,多个值之间用空格隔开 ...

  3. 蓝书例题之UVa 10253 Series-Parallel Networks

    挺有趣的一道题 首先转化模型,思路参考蓝书,可得出等同于求共n个叶子,且每个非叶结点至少有两个子结点的无标号树的个数的二倍,设个数为\(f[n]\) 考虑怎么求\(f[n]\),假设有一个\(n\)的 ...

  4. pycharm的Database连接新的Mysql5.7报错[08001]

    在URL的后面增加参数: ?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC 解决. 原因是虽然mysql5.7的s ...

  5. 超越村后端开发(2:新建models.py+xadmin的引入)

    1.新建Model 1.users数据 1.在apps/users/models.py中: from datetime import datetime from django.db import mo ...

  6. JavaScript中new实现原理

    JavaScript中new实现原理 1.创建一个空对象 obj 2.将该对象 obj 的原型链 __proto__ 指向构造函数的原型 prototype, 并且在原型链 __proto__ 上设置 ...

  7. JS学习笔记Day23

    一.什么是Promise (一)Promise是ES6新增的解决异步(非阻塞)中存在的问题而产生的构造函数 二.Promise中的三种状态 pending(进行中) resoved(成功后) reje ...

  8. k8s常用命令演示

    kubectl run --image=xxx name_xx --port kubectl run --image=nginx nginx-app --port=80 kubectl expose ...

  9. Response.Write()方法响应导致页面字体变大的解决办法

    关于ASP.NET中用Response.Write()方法响应导致页面字体变大的解决办法     最近研究了ASP.NET,发现一个问题,比方说在页面里面有个Button,要点击以后要打开新窗口,而且 ...

  10. .net 解压缩 rar文件

    public static class RARHelper { public static bool ExistsWinRar() { bool result = false; string key ...