• RocketMQ 安装部署教程详解


    RocketMQ 安装部署教程详解

    Linux 环境

    • OS: Ubuntu 16.04 LTS x64
    • 系统配置: 1C/2G/5M
    • RocketMQ: 4.5.2
    • JDK: 1.8.0_201
    • Maven: 3.6.1
    • Git

    1. 安装 git

    apt-get update
    apt install -y git

    2. 安装 jdk8u201

    wget http://lzmx.oss-cn-shanghai-internal.aliyuncs.com/soft/jdk-8u201-linux-x64.tar.gz
    mkdir -p /opt/java && tar -zxvf jdk-8u201-linux-x64.tar.gz -C /opt/java/
    echo 'export JAVA_HOME=/opt/java/jdk1.8.0_201' >> /etc/profile
    echo 'export PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile
    source /etc/profile
    java -version

    3. 安装 maven3.6.1

    wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.zip
    apt install unzip
    unzip apache-maven-3.6.1-bin.zip -d /opt/java
    echo 'export MAVEN_HOME=/opt/java/apache-maven-3.6.1' >> /etc/profile
    echo 'export PATH=${MAVEN_HOME}/bin:${PATH}' >> /etc/profile
    source /etc/profile
    mvn -version

    建议替换源为阿里源,替换好的配置文件如下

    rm -rf /opt/java/apache-maven-3.6.1/conf/settings.xml
    wget -P /opt/java/apache-maven-3.6.1/conf http://lzmx.oss-cn-shanghai-internal.aliyuncs.com/tmp/settings.xml

    没有的同学可以手动替换 setting.xml 中的 mirror 加快下载依赖的速度

    <mirror> 
        <id>aliMaven</id> 
        <name>aliyun maven</name>   
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url> 
        <mirrorOf>central</mirrorOf> 
    </mirror>

    4. 安装 tmux

    安装 tmux 主要是为了终端复用,方便后续安装,不装也没关系

    apt install -y tmux

    5. 部署 RocketMQ

    克隆远程仓库

    git clone https://github.com/apache/rocketmq.git

    编译RocketMQ

    阿里云1C2G机器大概编译需要3-5分钟的样子,还是很快的。

    cd rocketmq
    mvn -Prelease-all -DskipTests clean install -U

    将编译完的程序移出,例如移到 /root/rocketmq 目录下

    cp distribution/target/rocketmq-4.5.2.tar.gz /root
    # 删除源码包
    rm -rf rocketmq
    # 解压打包好的文件
    tar zxvf rocketmq-4.5.2.tar.gz
    mv rocketmq-4.5.2 rocketmq
    cd rocketmq

    环境变量设置

    这里我临时放在 /root 目录下了,可以根据自己的需要替换这个位置

    echo 'export ROCKETMQ_HOME=/root/rocketmq' >> /etc/profile
    echo 'export PATH=$ROCKETMQ_HOME/bin:$PATH' >> /etc/profile

    使环境变量生效

    source /etc/profile

    增加运行权限

    进入 rocketmq 文件夹,增加运行权限

    cd rocketmq/bin
    chmod +x *

    修改默认启动配置

    修改默认配置。由于RocketMQ默认配置要求很高,开始启动前需要先修改这些参数。

    否则的话,我们很有会遇到内存分配或者不够的问题(memory alloc failed)。

    • 修改 bin/runserver.sh JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:PermSize=128m -XX:MaxPermSize=320m"
    • 修改 bin/runbroker.sh JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"
    • 修改 bin/tools.sh JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:PermSize=128m -XX:MaxPermSize=128m"

    运行 namesrv 节点

    都修改完成了之后可以开始运行 namesrv 了,这里建议用 tmux 复用终端方便管理

    sh mqnamesrv
    注:后台启动方式
    1. nohup sh bin/mqnamesrv &

    出现 The Name Server boot success. serializeType=JSON 表示 namesrv 启动成功

    运行 broker 节点

    接下来启动 broker 节点,单机跑的话可能会产生如下报错

    [main] ERROR RocketmqCommon - Failed to obtain the host name
    java.net.UnknownHostException: iZowsledoqslnrZ: iZowsledoqslnrZ: Name or service not known
            at java.net.InetAddress.getLocalHost(InetAddress.java:1506) ~[na:1.8.0_201]
            at org.apache.rocketmq.common.BrokerConfig.localHostName(BrokerConfig.java:185) [rocketmq-common-4.5.2.jar:4.5.2]
            at org.apache.rocketmq.common.BrokerConfig.<init>(BrokerConfig.java:38) [rocketmq-common-4.5.2.jar:4.5.2]
            at org.apache.rocketmq.broker.BrokerStartup.createBrokerController(BrokerStartup.java:110) [rocketmq-broker-4.5.2.jar:4.5.2]
            at org.apache.rocketmq.broker.BrokerStartup.main(BrokerStartup.java:58) [rocketmq-broker-4.5.2.jar:4.5.2]
    Caused by: java.net.UnknownHostException: iZowsledoqslnrZ: Name or service not known
            at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method) ~[na:1.8.0_201]
            at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:929) ~[na:1.8.0_201]
            at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1324) ~[na:1.8.0_201]
            at java.net.InetAddress.getLocalHost(InetAddress.java:1501) ~[na:1.8.0_201]
            ... 4 common frames omitted
    The broker[DEFAULT_BROKER, 172.17.10.236:10911] boot success. serializeType=JSON and name server is localhost:9876

    根据报错 Name or service not known 可知,这是由于启动的时候找不到自己的主机名对应的ip地址而造成的,只需要让在 /etc/hosts 中添加 127.0.0.1 iZowsledoqslnrZ,注意是主机名

    echo '127.0.0.1 iZowsledoqslnrZ' >> /etc/hosts

    重新启动 broker 节点。

    sh mqbroker -n localhost:9876 autoCreateTopicEnable=true

    后台启动方式:
    nohup bash bin/mqbroker -n 192.168.158.147:9876 &
     

    启动成功出现如下提示 The broker[localhost, 172.17.10.236:10911] boot success. serializeType=JSON

    测试环境

    跑一个测试看看,生产者/消费者测试

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

    关闭所有服务器

    sh bin/mqshutdown broker
    sh bin/mqshutdown namesrv

    安装管理面板

    git clone https://github.com/apache/rocketmq-externals.git
    cd rocketmq-externals/rocketmq-console
    mvn clean package -Dmaven.test.skip=true
    cd target
    cp rocketmq-console-ng-1.0.1.jar ~/rocketmq-console.jar
    cd ~
    java -jar rocketmq-console.jar --server.port=8080 --rocketmq.config.namesrvAddr=localhost:9876

    常见错误

    1. 启动Name Server的时候报: Please set the ROCKETMQ_HOME variable in your environment! 配置一下ROCKETMQ_HOME的环境变量。
    2. 启动Broker的时候报找不到主类JDK,修改runbroker.cmd第40行 set "JAVA_OPT=%JAVA_OPT% -cp "%CLASSPATH%"" 原来的%CLASSPATH%少了双引号。
    3. 启动Producer报错 org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to <172.17.0.1:10909> failed 多种原因:
    • 检查IP地址,经检查对应服务器安装有其他网桥,将其卸载即可
    • 在Producer中将VIP通道关闭:producer.setVipChannelEnabled(false);
    1. 启动Producer报错 org.apache.rocketmq.client.exception.MQClientException: No route info of this topic, TopicTest2
    • Broker没有正确连接到Name Server 或
    • Producer没有正确连接到Name Server 或
    • Broker禁止自动创建Topic,且用户没有通过手工方式创建Topic 默认配置启动broker时autoCreateTopicEnable=true已设置,所以检查连接即可。
    因为相信,所以看见.
  • 相关阅读:
    selenium 笔记 webdriver 2
    selenium 笔记 webdriver
    selenium 笔记 简介
    http 笔记 日志跟踪
    http 笔记 web主机托管
    http 笔记 国际化
    http 学习 安全Http
    Http 笔记 摘要认证
    http 笔记 基本认证机制
    算法基础
  • 原文地址:https://www.cnblogs.com/zeenzhou/p/14656086.html
Copyright © 2020-2023  润新知