在CentOS7上安裝RocketMQ 4.7.1

2020-12-27 51cto

前言

阿里的fastjson的低版本(<=1.2.68)被爆出有安全漏洞,而RocketMQ 4.7.0使用了fastjson 1.2.62,因此需要將RocketMQ升級到 RocketMQ 4.7.1(fastjson 1.2.69)。

本文描述了在CentOS7上安裝RocketMQ 4.7.1的過程,僅作為開發測試環境使用:

  •  單機部署,Name Server和Broker都裝在一臺伺服器上;
  •  調低了RocketMQ默認的JVM大小;
  •  沒有設置開機自啟動和守護進程。

安裝過程

伺服器上已經安裝了OpenJDK 8,並設置了JAVA_HOME 。

下載和解壓RocketMQ

在RocketMQ官網上找到下載RocketMQ 4.7.1的連結,下載和解壓RocketMQ:

  1. # 下載  
  2. wget http://ftp.cuhk.edu.hk/pub/packages/apache.org/rocketmq/4.7.1/rocketmq-all-4.7.1-bin-release.zip  
  3. # 解壓  
  4. unzip rocketmq-all-4.7.1-bin-release.zip  
  5. # 安裝到/usr/local/rocketmq  
  6. mv rocketmq-all-4.7.1-bin-release /usr/local  
  7. ln -s /usr/local/rocketmq-all-4.7.1-bin-release /usr/local/rocketmq 

調低RocketMQ的JVM大小

RocketMQ的默認JVM太大,不適合在開發測試環境中使用,需要調低JVM大小。

在RocketMQ的安裝目錄(本例為/usr/local/rocketmq),查找sh腳本中的JVM參數設置:

  1. find . -name '*.sh' | xargs egrep 'Xms' 

需要修改以下sh腳本的JVM參數:

  1. bin/runserver.sh  
  2. bin/runbroker.sh  
  3. bin/tools.sh 

修改前記得先備份相應腳本,具體JVM大小根據實際情況設定。

- bin/runserver.sh

修改前:

  1. JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m" 

修改後:

  1. JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m" 

- bin/runserver.sh

修改前:

  1. JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m" 

修改後:

  1. JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m" 

- bin/tools.sh修改前:

  1. JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m" 

修改後:

  1. JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m" 

啟動Name Server

  1. # 後臺啟動  
  2. nohup sh bin/mqnamesrv >/dev/null 2>&1 & 

Name Server的默認埠為9876,運行sh bin/mqnamesrv -p可查看Name Server的配置項,並可通過-c namesrv.conf方式指定配置文件啟動;

RocketMQ的默認日誌路徑為`~/logs/rocketmqlogs/``;

可以將啟動Name Server命令保存為腳本,以方便下次啟動。

啟動Broker

啟動Broker時需要指定要連接的Name Server:

  1. # 後臺啟動  
  2. nohup sh bin/mqbroker -n localhost:9876 >/dev/null 2>&1 & 

可以將啟動Broker命令保存為腳本,以方便下次啟動。

查看RocketMQ進程

  1. ps -ef | grep -v grep | grep rocketmq 

測試RocketMQ

測試發送消息和接收消息

使用RocketMQ自帶的消息生產者和消費者示例來測試發送消息和接收消息:

  1. export NAMESRV_ADDR=localhost:9876  
  2. sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer  
  3. sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer 

關閉RocketMQ

關閉Broker

  1. sh bin/mqshutdown broker 

可以將關閉Broker命令保存為腳本,以方便下次關閉。

關閉Name Server

  1. sh bin/mqshutdown namesrv 

關閉Name Server前需要先關閉Broker;

可以將關閉Name Server命令保存為腳本,以方便下次關閉。

修改Name Server的埠

RocketMQ Name Server的默認埠為9876,可以通過以下方法修改Name Server的埠:

  1.  新增一個Name Server配置文件namesrv.conf,保存內容為: 

  1. listenPort=10076 

    2.  啟動Name Server時指定配置文件:

  1. nohup sh bin/mqnamesrv -c namesrv.conf >/dev/null 2>&1 & 

    3.  查看RocketMQ進程:

  1. ps -ef | grep rocketmq 

    4.  查看RocketMQ Name Server的埠號:

  1. netstat -tnlp | grep <nameserver_pid> 

    5.  修改後Broker需要指定新的Name Server地址(埠)。

安裝RocketMQ控制臺

克隆rocketmq-externals 項目,並編譯rocketmq-console。

命令示例:

  1. git clone https://github.com/apache/rocketmq-externals.git  
  2. cd rocketmq-externals/rocketmq-console  
  3. mvn clean package -Dmaven.test.skip=true 

將target/rocketmq-console-ng*.jar放到和RocketMQ安裝目錄(本例為/usr/local/rocketmq)下。

在RocketMQ安裝目錄下新建一個啟動RocketMQ控制臺的腳本來啟動RocketMQ控制臺:

  1. nohup java -jar rocketmq-console-ng*.jar --server.port=8080 --rocketmq.config.namesrvAddr=localhost:9876 > /dev/null 2>&1 & 

默認RocketMQ控制臺不需要密碼登錄,請參考RocketMQ使用文檔 進行配置。

參見:

Troubleshooting

問題1: 啟動Name Server和Broker,或測試時報錯Please set the JAVA_HOME variable in your environment, We need java(x64)!但是系統已經安裝了OpenJDK8,並且已經設置了JAVA_HOME。

解決方法: 運行which java來查看java的路徑,比如為/usr/bin/java。

修改bin/runserver.sh和bin/runbroker.sh和bin/tools.sh,注釋掉校驗JAVA_HOME語句,並明確指定JAVA路徑:

  1. #[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=$HOME/jdk/java  
  2. #[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/usr/java  
  3. #[ ! -e "$JAVA_HOME/bin/java" ] && error_exit "Please set the JAVA_HOME variable in your environment, We need java(x64)!"  
  4. #export JAVA_HOME  
  5. export JAVA="/usr/bin/java"  

【編輯推薦】

【責任編輯:

龐桂玉

TEL:(010)68476606】

點讚 0

相關焦點

  • 雲原生時代 RocketMQ 運維管控的利器 - RocketMQ Operator
    Kubernetes OperatorOperator 是在 Kubernetes 基礎上通過擴展 Kubernetes API,用來創建、配置和管理複雜的有狀態應用,如分布式資料庫等。Operator 基於 Kubernetes 1.7 版本以來引入的自定義控制器的概念,在自定義資源和控制器之上構建,同時又包含了應用程式特定的領域知識。
  • centos7編程實踐:安裝nodejs
    由於最近項目的需要,我需要在centos7上安裝nodejs,故總結這份教程,希望能幫助需要的同學。一、nodeJS簡介1、Nodejs是什麼?二、centos7安裝nodejs教程1、從官網上下載最新的tar包,本文用到的node版本號是12.13.1.
  • docker-4:mac使用docker部署開發用rocketmq
    目錄:(1).mac本地docker化rocketmq(2).mac本地docker化rocketmq-console(3).測試(1).mac本地docker化rocketmq現在官方rocketmq-docker:git clone https://github.com/apache/rocketmq-docker
  • 光碟安裝centos7
    講解對象:光碟安裝centos7前言:安裝centos系統有很多種方法,就我所知道的就有5種方法:1 創建虛擬主機的時候安裝centos72 光碟安裝centos73 U盤安裝centos74 雙系統安裝(windows10+centos7)5 網絡安裝今天講解下怎麼光碟安裝centos7
  • U盤安裝centos7
    講解對象:U盤安裝centos7前言:安裝centos有很多方法,那麼U盤安裝也是方法之一。 下面我將介紹怎麼通過U盤安裝centos7.1 計算機下載安裝USBwite軟體。網址:https://sourceforge.net/projects/usbwriter/2 U盤(至少有8G大小)插到電腦上3 打開USBwrite
  • 虛擬機安裝linux(centos7)
    >作用:1 在現有的作業系統上模擬一個新的硬體環境2 實現一臺電腦運行兩種作業系統理解:相當於一臺新的PCVMware 官網:www.vmware.com注意:1 安裝虛擬機的時候不推薦高版本的虛擬機2 高版本的虛擬機是為了適應企業使用的,體積更大,個人使用的時候更卡安裝步驟:1 進入官
  • centos7下安裝docker
    言歸正傳,我們來看看如何安裝docker       本次所用系統:centos 7      在安裝之前我們需要介紹下環境,    1.              64 bytes from 119.75.213.61: icmp_seq=1 ttl=56 time=5.48 ms   64 bytes from 119.75.213.61: icmp_seq=2 ttl=56 time=7.26 ms       2.防火牆是開啟的
  • 想了解Kafka,RabbitMQ,ZeroMQ,RocketMQ,ActiveMQ之間的差異?這一篇文章就夠了!
    使用事務會使得性能有所下降zeromq:不支持rocketmq:支持activemq:支持Kafka:支持負載均衡。1>一個broker通常就是一臺伺服器節點。對於同一個Topic的不同分區,Kafka會盡力將這些分區分布到不同的Broker伺服器上,zookeeper保存了broker、主題和分區的元數據信息。
  • 想了解 Kafka, RabbitMQ, ZeroMQ, RocketMQ, ActiveMQ 之間的差異?這一篇文章就夠了!
    使用事務會使得性能有所下降zeromq:不支持rocketmq:支持activemq:支持Kafka:支持負載均衡。1>一個broker通常就是一臺伺服器節點。對於同一個Topic的不同分區,Kafka會盡力將這些分區分布到不同的Broker伺服器上,zookeeper保存了broker、主題和分區的元數據信息。
  • Apache RocketMQ 4.4.0 發布 - OSCHINA - 中文開源技術交流社區
    萬眾期待的 4.4.0 版本終於在昨天成功發布,值得關注的新特性包括權限控制(ACL)和消息軌跡(Msg Trace)。
  • RocketMQ CPP客戶端更新至1.2.0,兼容多語言、簡化項目編譯流程
    RocketMQ CPP客戶端是RocketMQ的C/C++客戶端,與1.0.1版本相比,1.2.0版本的發布是一個巨大的進步。
  • 史上最簡單的VASP安裝教程-非虛擬機
    本文是針對vasp初學者的安裝教程編譯器以及VASP都已編譯號直接解壓到系統中即可用,故不用配置其它的庫文件以及環境;本教程適用於任意平臺安裝centos7的伺服器以及pc機(若在其它linux發行版本中安裝請諮詢小編)。
  • Apache RocketMQ 4.8.0 發布,升級 DLedger 模式
    據介紹,DLedger 是 OpenMessaging 中一個基於 Raft 的 CommitLog 存儲庫實現,從 RocketMQ 4.5.0 版本開始,RocketMQ 引入 DLedger 模式解決了 Broker 組內自動故障轉移的問題,而在 4.8.0 版本中,社區對 RocketMQ DLedger 模式進行了全面升級。以下內容摘錄自發布公告。
  • CentOS7下Nginx+ModSecurity配置、安裝、測試教程
    「 最近在工作上遇到一點問題,問了大佬、百度,都沒有很好地解決;經過大量搜索查閱以及試驗,終於將問題解決。
  • CentOS7安裝MySQL8.0圖文教程(相對最齊全)
    進行下載第五步:通過 rpm -qa | grep mariadb 命令查看 mariadb 的安裝包第六步:通過 rpm -e mariadb-libs-5.5.56-2.el7.x86_64 --nodeps 命令裝卸 mariadb第七步:通過 rpm -qa | grep
  • RocketMQ消息軌跡-設計篇
    RocketMQ消息軌跡,主要跟蹤消息發送、消息消費的軌跡,即詳細記錄消息各個處理環節的日誌,從設計上至少需要解決如下三個核心問題:消費軌跡數據格式記錄消息軌跡(消息日誌)消息軌跡數據存儲在哪?1、消息軌跡數據格式RocketMQ4.5版本消息軌跡主要記錄如下信息:traceType跟蹤類型,可選值:Pub(消息發送)、SubBefore(消息拉取到客戶端,執行業務定義的消費邏輯之前)、SubAfter(消費後)。timeStamp當前時間戳。regionIdbroker所在的區域ID,取自BrokerConfig#regionId。
  • Python3.7.4圖文安裝教程
    Python特點:1.易於學習:Python有相對較少的關鍵字,結構簡單,和一個明確定義的語法,學習起來更加簡單。2.易於閱讀:Python代碼定義的更清晰。下面來介紹一下安裝方法1、從底部連結中下載好安裝包,對著他右擊,解壓到Python 3.7.4 32 64位,解壓完成後雙擊打開Python 3.7.4 32 64位文件夾2、根據自己系統選擇是安裝32位還是64位,我這裡的系統是64位,雙擊打開Python 3.7.4 64位
  • 在Linux上安裝Android 4.4 KitKat
    Android (x86)項目致力於移植Android系統到X86處理器上,使用戶可以更容易的在任何電腦上安裝Android。他們通過使用android源碼,增加補丁來使Android能夠在X86處理器,筆記本電腦和平板電腦下工作。