CentOS 7にRocketMQ 4.7.1をインストールし、fastjsonの低バージョンの脆弱性の問題を解決

9641 ワード

文書ディレクトリ

  • CentOS 7にRocketMQ 4.7.1をインストールfastjsonの低バージョンの脆弱性の問題を解決する
  • 前言
  • インストールプロセス
  • RocketMQ
  • のダウンロードと解凍
  • RocketMQのJVMサイズを下げる
  • bin/runserver.sh
  • bin/runserver.sh
  • bin/tools.sh
  • Name Server
  • を起動
  • Broker
  • を起動
  • RocketMQプロセス
  • の表示
  • RocketMQ
  • のテスト
  • は、送信メッセージおよび受信メッセージ
  • をテストする.
  • ロックMQ
  • を閉じる
  • Broker
  • を閉じる
  • Name Server
  • を閉じる
  • Name Serverのポートを変更する
  • RocketMQコンソール
  • をインストールする
  • Troubleshooting
  • 参照文書
  • 拡張読書
  • CentOS 7にRocketMQ 4.7.1をインストールし、fastjsonの低バージョンの脆弱性の問題を解決


    前言


    アリのfastjsonの低バージョン(<=1.2.68)でセキュリティホールが爆発し、RocketMQ 4.7.0はfastjson 1.2.62を使用しているため、RocketMQをRocketMQ 4.7.1(fastjson 1.2.69)にアップグレードする必要がある.
    本明細書では、開発試験環境としてのみ使用される、CentOS 7にRocketMQ 4.7.1をインストールするプロセスについて説明する.
  • スタンドアロンの導入により、Name ServerとBrokerが1台のサーバにインストールされます.
  • RocketMQのデフォルトのJVMサイズを下げました.
  • では、POSTおよびデーモンプロセスは設定されていません.

  • インストールプロセス


    サーバにはOpenJDK 8がインストールされており、JAVA_が設置されているHOME.

    RocketMQのダウンロードと解凍


    RocketMQの公式サイトでRocketMQ 4.7.1をダウンロードするリンクを見つけて、RocketMQをダウンロードして解凍します:
    #   
    wget http://ftp.cuhk.edu.hk/pub/packages/apache.org/rocketmq/4.7.1/rocketmq-all-4.7.1-bin-release.zip
    
    #   
    unzip rocketmq-all-4.7.1-bin-release.zip
    
    #    /usr/local/rocketmq
    mv rocketmq-all-4.7.1-bin-release /usr/local
    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パラメータ設定を検索します.
    find . -name '*.sh' | xargs egrep 'Xms'
    

    次のshスクリプトのJVMパラメータを変更する必要があります.
  • bin/runserver.sh
  • bin/runbroker.sh
  • bin/tools.sh

  • 修正する前に、適切なスクリプトをバックアップしてください.具体的なJVMサイズは実際の状況に応じて設定されます.

    bin/runserver.sh


    変更前:
    JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
    

    変更後:
    JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
    

    bin/runserver.sh


    変更前:
    JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
    

    変更後:
    JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
    

    bin/tools.sh


    変更前:
    JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
    

    変更後:
    JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
    

    Name Serverの起動

    #     
    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を指定する必要があります.
    #     
    nohup sh bin/mqbroker -n localhost:9876 >/dev/null 2>&1 &
    

    起動Brokerコマンドは、次回の起動を容易にするためにスクリプトとして保存できます.

    RocketMQプロセスの表示

    ps -ef | grep -v grep | grep rocketmq
    

    RocketMQのテスト


    メッセージの送信と受信のテスト


    RocketMQ独自のメッセージ作成者と消費者の例を使用して、メッセージの送信と受信をテストします.
    export NAMESRV_ADDR=localhost:9876
    sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
    sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
    

    ロックMQを閉じる


    Brokerを閉じる

    sh bin/mqshutdown broker
    

    シャットダウンBrokerコマンドは、次回のシャットダウンを容易にするためにスクリプトとして保存できます.

    Name Serverを閉じる

    sh bin/mqshutdown namesrv
    

    Name Serverを閉じる前にBrokerを閉じる必要があります.
    次回のシャットダウンを容易にするために、Name Serverコマンドをスクリプトとして保存できます.

    Name Serverのポートの変更


    RocketMQ Name Serverのデフォルトポートは9876です.以下の方法でName Serverのポートを変更できます.
  • Name Serverプロファイルnamesrvを追加します.conf、保存内容:
    listenPort=10076
    
  • Name Serverを起動するときのプロファイルの指定:
    nohup sh bin/mqnamesrv -c namesrv.conf >/dev/null 2>&1 &
    
  • RocketMQプロセスの表示:
    ps -ef | grep rocketmq
    
  • RocketMQ Name Serverのポート番号の表示:
    netstat -tnlp | grep <nameserver_pid>
    
  • 修正後、Brokerは新しいName Serverアドレス(ポート)を指定する必要があります.

  • RocketMQコンソールのインストール


    rocketmq-externalsプロジェクトをクローンし、rocketmq-consoleをコンパイルします.
    コマンドの例:
    git clone https://github.com/apache/rocketmq-externals.git
    cd rocketmq-externals/rocketmq-console
    mvn clean package -Dmaven.test.skip=true
    
    target/rocketmq-console-ng*.jarをRocketMQインストールディレクトリ(この例では/usr/local/rocketmq)の下に配置します.
    RocketMQインストールディレクトリの下に、RocketMQコンソールを起動するスクリプトを新規作成して、RocketMQコンソールを起動します.
    nohup java -jar rocketmq-console-ng*.jar --server.port=8080 --rocketmq.config.namesrvAddr=localhost:9876 > /dev/null 2>&1 &
    

    デフォルトのRocketMQコンソールではパスワードログインは必要ありません.RocketMQを参照してドキュメントを使用して構成してください.
    以下を参照してください.
  • https://github.com/apache/rocketmq-externals
  • https://github.com/apache/rocketmq-externals/tree/master/rocketmq-console

  • Troubleshooting


    質問1:Name ServerとBrokerを起動するか、テストタイムズが間違っていますPlease set the JAVA_HOME variable in your environment, We need java(x64)!しかし、システムにOpenJDK 8がインストールされており、JAVAが設定されています.HOME.
    解決策:which javaを実行してjavaのパスを表示します.たとえば、/usr/bin/javaです.
    bin/runserverを変更します.shとbin/runbroker.shとbin/tools.sh,注記チェックJAVA_HOME文で、JAVAパスを明確に指定します.
    #[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=$HOME/jdk/java
    #[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/usr/java
    #[ ! -e "$JAVA_HOME/bin/java" ] && error_exit "Please set the JAVA_HOME variable in your environment, We need java(x64)!"
    
    #export JAVA_HOME
    export JAVA="/usr/bin/java"
    

    リファレンスドキュメント

  • RocketMQインストール導入チュートリアル詳細
  • RocketMQインストール詳細
  • 拡張読書

  • 10分入門RocketMQ
  • RocketMQコア設計理念
  • RocketMQ中国語ドキュメント(非公式)