zoukankan      html  css  js  c++  java
  • Linux Centos7.5中的RocketMQ集群部署

    系统环境 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天! 我真蠢

  • 相关阅读:
    20 数组和指针
    19 数组、指针
    18 # 和 ##
    17 pragma
    4 类族结构的改进
    css常用标签
    帝国cms 通过文章的id获取信息
    帝国cms 获取一条数据,但是从第二条开始获取
    帝国cms 描述和关键词动态获取
    导入高德地图快捷链接导入方法
  • 原文地址:https://www.cnblogs.com/imyjy/p/10110009.html
Copyright © 2011-2022 走看看