LinuxはRocketMQクラスタを配備

8993 ワード

LinuxはRocketMQクラスタを配備
1.LinuxがRocketMQを起動する
  • rocketmq環境変数への経路:binディレクトリ
  • cd /usr/local/rocketmq-all-4.3.2/distribution/target/apache-rocketmq/bin
    
  • binディレクトリでName Serverを起動
  • nohup sh mqnamesrv
    
  • binディレクトリでBrokerを起動
  • nohup sh mqbroker
    

    注意:起動できない場合はrunbrokerを変更します.shとrunserver.shの起動メモリは、仮想マシンメモリよりも小さく、両方の起動メモリサイズが一致します.
  • 2つのプロセスが開始されたかどうかを確認する
  • jps
    

    ヒント:3601 Jps 3494 NamesrvStartup 3530 Broker Startup
  • サーバーをシャットダウン:まずbrokerをシャットダウンし、nameserverをシャットダウンする必要がある
  • sh mqshutdown broker
    

    ヒント:The mqbroker(36695)is running…Send shutdown request to mqbroker(36695)OK
    sh mqshutdown namesrv
    

    ヒント:The mqnamesrv(36664)is running...Send shutdown request to mqnamesrv(36664)OK
    2.Linuxはデュアルマスターモードクラスタを配備する
  • 2台のホストファイルの修正:vi /ect/hosts
  • 192.168.9.157 rocketmq-nameserver1 
    192.168.9.157 rocketmq-master1 
    192.168.9.150 rocketmq-nameserver2 
    192.168.9.150 rocketmq-master2 
    

    注意:修正する前に、2台のサブファイアウォールを閉じる必要があります.NICの再起動
    service network restart
    
  • 2台で互いにpingし合う例:
  • ping 192.168.9.150 
    ping rocketmq-nameserver2 
    ping rocketmq-master2
    
  • rocketmqを指定したフォルダに解凍
  • tar -zxvf rocketmq-all-4.3.2.tar.gz -C /usr/local
    

    修正ファイル名rocketmq:mv rocketmq-all-4.3.2 rocketmqソフト接続の作成(有無可):ln -s rocketmq rocketmq
  • 必要に応じてデータ格納経路を作成し(両機器とも作成)、スキップ可能
  • mkdir rocketmq/data                     //    
    mkdir rocketmq/data/commitlog           //commitLog     
    mkdir rocketmq/data/consumerqueue       //            
    mkdir rocketmq/data/index               //        
    
  • 2台が/usr/local/rocketmq-all-4.3.2/distribution/target/apache-rocketmq/conf/2 m-noslaveディレクトリにそれぞれ入り、コードを追加(注意経路:/conf/2 m-noslave)
  • ホスト1 broker-a.propertiesファイルを変更するには:
    namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;
    

    ホスト2 broker-b.propertiesファイルを変更するには:
    namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;
    

    注意:必要に応じて、次のような構成を追加できます.
    #      
    brokerClusterName=rocketmq-cluster
    #broker  ,                 
    brokerName=broker-a|broker-b
    #0    Master, >0    Slave
    brokerId=0
    #nameServer  ,    
    namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
    #      ,           topic,        
    defaultTopicQueueNums=4
    #     Broker     Topic,      ,    
    autoCreateTopicEnable=true
    #     Broker        ,      ,    
    autoCreateSubscriptionGroup=true
    #Broker          
    listenPort=10911
    #       ,     0 
    deleteWhen=00
    #      ,   48   
    fileReservedTime=120
    #commitLog         1G
    mapedFileSizeCommitLog=1073741824
    #ConsumeQueue       30W ,        
    mapedFileSizeConsumeQueue=300000
    #destroyMapedFileIntervalForcibly=120000
    #redeleteHangedFileInterval=120000
    #          
    diskMaxUsedSpaceRatio=88
    #    
    storePathRootDir=/opt/rocketmq/data
    #commitLog     
    storePathCommitLog=/opt/rocketmq/data/commitlog
    #            
    storePathConsumeQueue=/opt/rocketmq/data/consumequeue
    #        
    storePathIndex=/opt/rocketmq/data/index
    #checkpoint       
    storeCheckpoint=/opt/rocketmq/data/checkpoint
    #abort       
    abortFile=/opt/rocketmq/data/abort
    #       
    maxMessageSize=65536
    #flushCommitLogLeastPages=4
    #flushConsumeQueueLeastPages=2
    #flushCommitLogThoroughInterval=10000
    #flushConsumeQueueThoroughInterval=60000
    #Broker    
    #- ASYNC_MASTER     Master
    #- SYNC_MASTER     Master
    #- SLAVE
    brokerRole=ASYNC_MASTER
    #    
    #- ASYNC_FLUSH     
    #- SYNC_FLUSH     
    flushDiskType=ASYNC_FLUSH
    #checkTransactionMessageEnable=false
    #        
    #sendMessageThreadPoolNums=128
    #        
    #pullMessageThreadPoolNums=128
    
  • 必要に応じてログプロファイルを修正(2台の機器が同じ操作)し、スキップ可能
  • logsディレクトリを作成します:mkdir /opt/rocketmq/logs次のコードを実行してログファイルの置換を行います.sedはlinuxの置換コマンドです.
    cd /opt/rocketmq/conf && sed -i 's#${user.home}#/opt/rocketmq#g' *.xml
    
  • 必要に応じて起動スクリプトパラメータを変更し、JVMチューニング(2台のマシンで同様に動作)をスキップし、nameServerとbrokerを同じマシンに配置したため、実際の状況に応じてnameServerとbrokerをそれぞれjvmの性能チューニングを行うことができ、本番環境のデフォルトでは変更を必要としない.たとえば、私の仮想マシンのメモリは1 Gしかありません.nameserverとbrokerのデフォルトの起動メモリが1 Gであると仮定すると、私の仮想機会はメモリが足りないためnameserverとbrokerを同時に起動できません.この場合、2つの起動メモリを小さくする必要があります.

  • a)brokerのチューニング
    vim /usr/local/rocketmq-all-4.3.2/distribution/target/apache-rocketmq/bin/runbroker.sh
    

    JAVA_を修正OPT=「${JAVA_OPT}-server-Xms 1 g-Xmx 1 g-Xmn 512 m」の起動メモリ
    b)nameserverのチューニング
     vim /usr/local/rocketmq-all-4.3.2/distribution/target/apache-rocketmq/bin/runserver.sh
    

    JAVA_を修正OPT=「${JAVA_OPT}-server-Xms 1 g-Xmx 1 g-Xmn 512 m」の起動メモリ
  • binディレクトリに戻って2台のマシンをそれぞれ起動するnameserver(2台のマシンが同じ操作)
  • nohup sh mqnamesrv &
    

    使用可能jpsコマンドnameserverプロセスがあるかどうかを確認
  • binディレクトリで2機ずつbrokerを起動する:
  • ホスト1(master 1):主なパスは/conf/2 m-noslave/broker-a.propertiesであることに注意
    nohup sh mqbroker -c /usr/local/rocketmq-all-4.3.2/distribution/target/apache-rocketmq/conf/2m-noslave/broker-a.properties >/dev/null 2>&1 &
    

    ホスト2(master 2):主なパスは/conf/2 m-noslave/broker-b.propertiesであることに注意
    nohup sh mqbroker -c /usr/local/rocketmq-all-4.3.2/distribution/target/apache-rocketmq/conf/2m-noslave/broker-b.properties >/dev/null 2>&1 &
    

    使用可能jpsbrokerプロセス注:まず2台のNameServerを起動し、2台のBorkerを起動し、シャットダウンするときは順番が逆で、2台のBrokerをシャットダウンし、2台のNameserverをシャットダウンします.
  • rocketmqのbinディレクトリでクラスタ状況を確認する:
  • sh mqadmin clusterList -n "192.168.9.157:9876;192.168.9.150:9876"
    

    注意:Windows側で管理制御台を開くこともでき、起動手順は以下の第4点である.
  • ブロッカー命令停止
  • sh mqshutdown broker
    
  • nameserver命令停止
  • sh mqshutdown namesrv
    

    3.Linuxによるデュアルマスターデュアルslave非同期レプリケーションクラスタの導入(簡略版)
  • 4台のホストファイルの修正:vi /ect/hosts
  • 192.168.9.157 rocketmq-nameserver1 
    192.168.9.157 rocketmq-master1 
    192.168.9.150 rocketmq-nameserver2 
    192.168.9.150 rocketmq-master2 
    192.168.9.154 rocketmq-nameserver3 
    192.168.9.154 rocketmq-master1-slave 
    192.168.9.155 rocketmq-nameserver4 
    192.168.9.155 rocketmq-master2-slave
    
  • NIC再起動
  • service network restart
    
  • 互いにpingし合う例:
  • ping 192.168.9.150 
    ping rocketmq-nameserver2 
    ping rocketmq-master2
    
  • 4台が/usr/local/rocketmq-all-4.3.2/distribution/target/apache-rocketmq/conf/2 m-2 s-asyncディレクトリに入り、1行コードを追加
  • ホスト1 broker-a.propertiesファイルを変更ホスト2 broker-b.propertiesファイルを変更マシン1からbroker-a-s.propertiesファイルを変更マシン2からbroker-b-s.propertiesファイルを変更
    namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876;rocketmq-nameserver4:9876
    
  • binディレクトリでそれぞれ4台のマシンを起動するnameserver
  • nohup sh mqnamesrv &
    
  • binディレクトリでそれぞれ4台のマシンを起動するbroker:
  • ホスト1:
    nohup sh mqbroker -c /usr/local/rocketmq-all-4.3.2/distribution/target/apache-rocketmq/conf/2m-2s-async/broker-a.properties >/dev/null 2>&1 &
    

    ホスト2:
    nohup sh mqbroker -c /usr/local/rocketmq-all-4.3.2/distribution/target/apache-rocketmq/conf/2m-2s-async/broker-b.properties >/dev/null 2>&1 &
    

    スレーブ1:
    nohup sh mqbroker -c /usr/local/rocketmq-all-4.3.2/distribution/target/apache-rocketmq/conf/2m-2s-async/broker-a-s.properties >/dev/null 2>&1 &
    

    スレーブ2:
    nohup sh mqbroker -c /usr/local/rocketmq-all-4.3.2/distribution/target/apache-rocketmq/conf/2m-2s-async/broker-b-s.properties >/dev/null 2>&1 &
    
  • rocketmqのbinディレクトリでクラスタ状況を確認する:
  • sh mqadmin clusterList -n "192.168.9.157:9876;192.168.9.150:9876;192.168.9.154:9876;192.168.9.155:987"
    

    注意:Windows側で管理制御台を開くことができ、手順は以下の通りで、アプリケーションを変更する必要がある.propertiesのnamesrvAddr
    4.Windows起動RocketMQ管理台
  • ダウンロード先:https://github.com/apache/rocketmq-externals.git
  • ダウンロードしたファイルを開き、E:rocketmq-externals-masterrocketmq-consolesrcmainresourcesに進み、アプリケーションを修正する.propertiesのnamesrvAddrとserver.port構成、例えば:
  • server.port=8082  //         ,            
    rocketmq.config.namesrvAddr=192.168.0.158:9876;192.168.0.179:9876 
    
  • Cmdコマンドボックス実行入E:rocketmq-externals-masterrocketmq-console,コンパイル生成
  • mvn clean package -Dmaven.test.skip=true
    
  • コンパイルに成功すると、Cmdコマンドボックス実行はE:rocketmq-externals-masterrocketmq-consoletargetに入り、'rocketmq-console-ng-1.0.0を起動する.jar’.
  • java -jar rocketmq-console-ng-1.0.0.jar
    
  • ブラウザに「127.0.0.1:ポートの構成」と入力し、正常に確認できます.localhost:8082ポートE:rocketmq-externals-masterrocketmq-consolesrcmainresourcesの'アプリケーション.properties'ファイルはserver.port=8082