zoukankan      html  css  js  c++  java
  • java架构之路-(MQ专题)RocketMQ从入坑到集群详解

      这次我们来说说我们的RocketMQ的安装和参数配置,先来看一下我们RocketMQ的提出和应用场景吧。

      早在2009年,阿里巴巴的淘宝第一次提出了双11购物狂欢节,但是在2009年,服务器无法承受到大规模的并发,导致了大规模宕机停运,当时还是IOE的服务架构,也就是没有我们的消息队列中间件,直接由IBM的小型机、Oracle数据库、EMC存储设备来提供服务的,可想而知,我们的大并发场景,IOE是无法承受的,RocketMQ是由我们的国内的阿里巴巴在2010年开始由我们的阿里云的王坚博士组件团队,来处理我们的去IOE服务架构,也就产生了我们的RocketMQ中间件,经历了阿里巴巴内部的不断尝试和实践下,在2016年11月,阿里将RocketMQ捐献给Apache软件基金会,正式成为孵化项目,现在已经在我们Apache软件基金会毕业了,并且成为了Apache软件基金会的顶级项目。可想而知RocketMQ还是很成熟很可靠的。

      说到这也就是知道了我们的RocketMQ可以于我们的消息中间件来传递我们的消息,还有很多广泛的应用场景,比如我们的异步处理事件,分布式事务协调,对于高并发的削峰平谷处理,MQ的思想还是很出众的,下面我们来先一下RocketMQ的安装吧。

    安装单机(运行环境JDK版本:1.8.0_221以上)

      1.下载。rocketmq版本:rocketmq-all-4.4.0-bin-release.zip,地址 https://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/4.4.0/rocketmq-all-4.4.0-bin-release.zip

      2.上传的到我们的服务器并解压。$ unzip rocketmq-all-4.4.0-bin-release.zip (没有unzip命令的,yum install unzip安装一下)

      3.设置环境变量,$ vim /etc/profile,下底部添加如下代码。

    export ROCKETMQ_HOME=/usr/local/software/rocketmq-all-4.4.0 
    export PATH= $ROCKETMQ_HOME/bin:$PATH

    保存,并刷新环境变量 $ source /etc/profile

       4.修改一下我们的配置,现有的配置稍微有点坑,不修改配置,可能启动不成功的。切换到我们的RocketMQ目录下,$  vim bin/runbroker.sh 和我们的$ vim bin/runserver.sh

     修改为256M即可

      注意两个配置都要改runbroker.sh和runserver.sh,这里我只是根据我们的虚拟机大小来设置的,生产的环境可以根据配置自行设置大小。后面会说参数的作用。

       4.开启服务。

      启动nameserver $ nohup sh bin/mqnamesrv -n 120.27.13.177:9876 & 

      启动broker 

      不指定配置文件 $ nohup sh bin/mqbroker -n 120.27.13.177:9876 autoCreateTopicEnable=true & //极力不推荐

      指定配置文件 $ nohup sh bin/mqbroker -n 120.27.13.177:9876 -c conf/broker.conf &//修改在配置文件内加入autoCreateTopicEnable=true,不然发送消息会失败。

      5.测试是否成功

    $ export NAMESRV_ADDR=120.27.13.177:9876测试发送端,多个可以用英文,来区别
    例如$ export NAMESRV_ADDR = 120.27.13.177:9876,120.27.13.178:9876

        $ sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer 测试消费端

      $ sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

        6.关闭服务

      $ sh mqshutdown broker ‐‐关闭broker

      $ sh mqshutdown namesrv ‐‐关闭namesrv

     总结

       上述安装弄了好几个小时,日,这个是官方文档地址:http://rocketmq.apache.org/docs/quick-start/,谁能按照他的说明安装成功联系我一下,反正我是没有成功

      1,可能遇到内存不够用的情况,默认配置是8G的...哪来钱买那么大的服务器。

      2,服务启动nohup sh bin/mqnamesrv -n 120.27.13.177:9876 & 官网说localhost,如果你有多个网卡,你就蒙圈了...

      3,官网完全没告诉你指定配置文件,也没说需要配置autoCreateTopicEnable=true,没有这个你怎么创建Topic,autoCreateTopicEnable=true意思就是允许创建topic。

      说到底就是官网完全就是坑爹不给力的。

     安装集群(运行环境JDK版本:1.8.0_221以上)

      上面走过来一路的坑,我们现在来看看集群时如何配置的吧,这里捎带说一下,尽力优先启动nameserver,然后启动broker,因为我们的每一个broker服务需要将信息注册到我们的nameserver上去的。

      准备2个虚拟机分别是虚拟机centos-node-01与centos-node-02,分别部署2个 NameServer,并在每台机器上分别启动一个Master和一个Slave,互为主备,在主目录下的conf文件夹下提供了多种broker配置模式,分别有:2m-2s-async,2m-2s- sync,2m-noslave,就是我们的我们两主两从同步,两主两从异步和我们的两主无从。接上面的配置来说,简单的我就不提了。
      1.准备两台服务器,安装jdk1.8+环境,下载并解压我们的rocketMQ。

     

       2.将每台服务器上的配置文件复制出来,因为我们每台服务器要启动一个主节点,一个从节点,我们开始复制命令。

      $ cp broker.conf master.conf ###作为主节点配置

      $ cp broker.conf slave.conf ### 从节点配置。

      两台服务器都要复制。

      将master.conf修改,master.conf配置如下:

       slave配置如下

       记得修改bin下的runserver和runbroker,要不内存又不够了。

      3.启动

      先分别启动两台服务器的nameserver,$ nohup sh bin/mqnamesrv & 

      启动broker-master

      nohup sh bin/mqbroker -c conf/master.conf &

      启动broker-slave

      nohup sh bin/mqbroker -c conf/slave.conf &

      4.查查看集群监控状态 $ sh mqadmin clusterlist -n 192.168.241.198:9876

    总结

      这个集群也不是很顺利,搭建了一下午。切记几个问题,端口别弄重复了,文件保存路径别重复了,记得互为主备,有一个小窍门就是,你先配置一个单机,然后测试是否成功了,然后复制配置文件,然后将这些配置文件直接传到另一个服务器上,改一下名称就可以了(互为主备那个名称)。

    安装可视化界面:(一路小坑已踏平)

      1.下载,地址:https://github.com/apache/rocketmq-externals/tree/release-rocketmq-console-1.0.0

      2.导入我们的编译器IDEA或者Eclipse,这个玩意在我们本地启动就可以的。

      3.修改配置application.properties,写入我们的集群地址,多个IP用分号分隔。

    rocketmq.config.namesrvAddr=114.215.144.143:9876;115.29.149.133:9876

      修改pom文件将mq版本修改和我们集群的版本一致

    <rocketmq.version>4.4.0</rocketmq.version>

      4.不知道很多博主怎么弄的,写到这了就说可以启动了,反正我是报错了,不知道你们报错了吗?至少我单机的时候启动有一个界面是报错的。去我们的集群服务器。在conf/broker.conf文件添加brokerIP1=115.29.149.133,IP1=当前服务器的的IP地址。

      5.启动走起~!

     顺带说一下啊,右上角那个按钮是调整语言的,我当时没加brokerIP1时,那个什么驾驶舱页面第一个图表报错。 

      一路大坑带小坑的,都踏平了,弄了两天多,才弄好,官方文档.....

      过去的这几天我说了RabbitMQ和RocketMQ的安装,后续我会逐步去说他们的实际操作,还有一些高级用法,感谢阅读。

    最进弄了一个公众号,小菜技术,欢迎大家的加入

  • 相关阅读:
    python Database Poll for SQL SERVER
    SQLAlchemy表操作和增删改查
    flask动态url规则
    flask配置管理
    一个Flask运行分析
    Function Set in OPEN CASCADE
    Happy New Year 2016
    Apply Newton Method to Find Extrema in OPEN CASCADE
    OPEN CASCADE Multiple Variable Function
    OPEN CASCADE Gauss Least Square
  • 原文地址:https://www.cnblogs.com/cxiaocai/p/11779615.html
Copyright © 2011-2022 走看看