ActiveMQの高可用性、負荷分散+

MQは、すべての分散システムメッセージバスシステムでは、私たちは通常、マスター・スレーブを使用して、本番環境でのMQの正常な動作を保証しようとする必要があり、マスターハングスレーブはトップの仕事を続ける保証が、ちょうどマスターすることができます負荷が大きすぎるMQハングであれば、マスター・スレーブは、この問題を解決することはできませんので、唯一の高可用性を確保するために、負荷分散を行うことができない場合、その後、あなたは、ロードバランシングを設定する必要があります-slave

マスタースレーブのActiveMQの展開

  1. マスターであるストレージファイルの制御をつかんで共有データ格納ディレクトリ、複数のブローカーの共有ストレージファイルシステムに基づいて、ファイルシステムマスタ・スレーブの展開を共有
  2. 同様の第一と共有データベースに基づいて、共有データベースのマスター・スレーブモード、
  3. 複製されたLevelDBストア仕方、ベースの飼育係+ leveldb。Googleは、高性能データベースKVあるleveldb。これはActiveMQ5.9後に追加する唯一の方法である、原理はZooKeeperの調整がマスター、オープン選択したマスタブローカーノードとしてノードを選出使用することで、クライアント接続を受け入れます。マスターがハングアップした場合、スレーブの最新の更新プログラムのデータがマスターになり得ます。再ハングノードリカバリ後にネットワークに追加することができ、マスタ・スレーブモードに接続されています。

最初の二つは、上記を満たすために、時には容易ではない、高可用性MQを確保するために、共有ファイルシステムやデータベースの高可用性とパフォーマンスを確保するために、我々は、マスター・スレーブのクラスタを構築するための第三の方法を使用します。

環境

我々は2つのだけのホストを持っているので、我々は、各ホスト上のテストダミーマスタースレーブクラスタを設定し、その後再接続、相互に二つのクラスタのロードバランシングを完了するために、

 

jdk : jdk8
zookeeper: 3.2
activemq: 5.15
主机1:192.168.0.103  
主机2:192.168.0.104 

マスタースレーブのクラスタを構築します

ステップ:

  1. ダウンロード - >アンパック - >コピー3コピーだけでは実行されている問題がないことを保証するために、(5.9以降)のActiveMQ

2.変更方法各ActiveMQのの持続性

 

vi  ACTIVEMQ_HOME/conf/activemq.xml

デフォルトのkahadbは、として私がやったのZooKeeperクラスタ、シングルポイントの面倒直接使用が飼育係には影響しません、次の改正しました

 

//directoryleveldb数据保存路径
//bind 服务端口
//replicas表示master-slave集群中节点个数
//zkAddress依次指定三台服务器的ip和ZooKeeper的监听端口
//zkPah在zookeeper中注册的节点路径
//hostname为每一台服务器的ip地址,三台服务器根据实际情况修改
<persistenceAdapter>
     <replicatedLevelDB directory="${activemq.data}/leveldb"  replicas="3"
    bind="tcp://0.0.0.0:62621"
    zkAddress="localhost:2181,localhost:2182,localhost:2183"
    hostname="localhost"
    zkPath="/activemq/leveldb-stores"/> 
</persistenceAdapter>

3.変更ActiveMQのTCPサービスポート
この構成でもACTIVEMQ_HOME / confに/ activemq.xml、デフォルト61616、同じマシンが、そうでない場合は、ポートの衝突を繰り返すことはできません、私は61616のためにここにいる、61617、61618
4.変更桟橋ポート
桟橋を使用してサービスを実行するのActiveMQ修飾ACTIVEMQ_HOME / CONF / jetty.xmlの3つのポートは同じ保証できない
8161、8162、8163に順次

  1. スタート飼育係、3つのインスタンスを起動するのActiveMQ
  2. 確認し
    飼育係のクライアントログイン
    を実行します。ls / ActiveMQの/ leveldb-店舗
    ビューノードは、各サービスのActiveMQのための1つ、/ ActiveMQの/ leveldb-店の下に3つのノードを見つけました

    image.png


    nullでない選出された各ノードのためのビュー・データがスレーブのマスタであるnullであります

    image.png

飼育係の可視化ツールをもダウンロードすることができます:
https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip ;
実行ZooInspector \ビルド\飼育係-DEV- ZooInspector.jar ノードのデータを見ることができます

PS:唯一のリクエストマスターを受け入れ、スレーブが要求を受け入れない、あなたは、管理インターフェースを使用することはできません

設定のロードバランシング

  1. 我々は良いクラスタを構築している、あなたは別の3つのActiveMQにファイルをコピーするSCPコマンドを使用することができます別のクラスタホストを取得することができます

 

#activemqCluster  是我本机的activemq 集群安装目录
scp -r  activemqCluster  [email protected]:/soft
  1. activemq.xmlクラスタ1内のリンククラスタ2(persistenceAdapterラベルの前に設定):

 

<networkConnectors>
    <networkConnector uri="static:(tcp://192.168.0.103:61616,tcp://192.168.0.103:61617,tcp://192.168.0.103:61618)" duplex="false"/>
</networkConnectors>
  1. リンク・クラスタ1クラスタ2 activemq.xml内で(persistenceAdapterラベルの前に設定):

 

<networkConnectors>
    <networkConnector uri="static:(tcp://192.168.0.104:61616,tcp://192.168.0.104:61617,tcp://192.168.0.104:61618)" duplex="false"/>
</networkConnectors>

高可用性負荷分散クラスタこの実現のActiveMQ。
:プロジェクトが設定されたアドレスをお読みくださいActiveMQの
フェイルオーバー:( 、61616のTCP://192.168.0.103:TCPを//192.168.0.103:61617、TCP://192.168.0.103:61618)ランダム化= falseの?
それとも:
フェイルオーバー: (TCP://192.168.0.104:61616、TCP://192.168.0.104:61617、TCP://192.168.0.104:61618)ランダム化= falseを?

テスト

1.テストマスタースレーブ、(61616)オフマスター、61617、および自動的にサービス61617を閉じるために再び(切り替え時にデータの整合性を保証することはできません)マスターを再接続するスイッチは、より多くのハングアップの半分以上、サービスが利用できない、クライアントがブロックされていますメッセージを送信できなく

 

image.png

  1. テストロード・バランシング
    、最終的なアーキテクチャは、ActiveMQのがいることを、マスター・スレーブは、二つのクラスタは、お互いのメッセージを消費することができ、それぞれ他の二つのクラスタとの通信が、まだ接続されているクライアント側のクラスタまで、顧客のハングは、メッセージを送信できない場合あり消費ロードバランシングロードバランシングを行うだけで、高い可用性をマスタースレーブによって保証されます。

     

     

    私たちは、聞くために、同じキュー名2消費者サービスを開始しました
    MQのアドレスが設定されています

 

failover:(tcp://192.168.0.103:61616,tcp://192.168.0.103:61617,tcp://192.168.0.103:61618)?randomize=false
和:
failover:(tcp://192.168.0.104:61616,tcp://192.168.0.104:61617,tcp://192.168.0.104:61618)?randomize=false

クラスタ104にメッセージを送信保た開始した後、消費者は2件のメッセージが104コンシューマクラスタに送信されますが、印刷にはいくつかの相違点を記録し、FailoverTransportで表示matser 104に接続されている消費者サービスを接続103個のクラスター見つけることができます

image.png

 


これまでのところ、高可用性、負荷分散+。完成された設定
、最終的なノートでは、テストはまだありません誰にでも、問題がある可能性がありますマスター・スレーブスイッチのメッセージでその消費量を発見しました
 

https://blog.csdn.net/suifeng629/article/details/93210416

40元記事公開 ウォン称賛57 ビューに25万+を

おすすめ

転載: blog.csdn.net/With__Sunshine/article/details/105314329