- 基本的な使用、https://www.tapme.top/blog/detail/2018-09-05-10-38
- スタンバイモード、https://www.tapme.top/blog/detail/2018-09-06-10-38
シングルMQノードは、ノードに障害が発生したら、MQサービスが利用できない、と大きな損失を持っているにバインドされ、常に信頼性がありません。どのようにマスター(プライマリノード障害)、スレーブ(スレーブノード)は、直ちに原則を達成するためのサービスを提供したら、バックアップからここでの主な記録のActiveMQを開くには、例えばここで、複数のMQが同じ永続的なデータソースを使用するデータ・ソースのJDBCを実行することです。唯一つのノード(ノードA)データベースの表ロックを取得することができ、ブロックされた状態に他のノードは、エラーがクラッシュした後、他のノードが再取得テーブルロックになり、ノードを取得するロックがマスターになり、他のノードの子としてノードAが再起動された場合、それは奴隷になります。
単一ノードの障害の問題を解決する1つだけのマスター同時にサービスを提供するために、メインのバックアップから、データの顔量が増える明確ではないので、それが直面する問題を解決するために、クラスター・アプローチの水平展開を必要とします。
、ActiveMQのセット
1、プラットフォームのリリースノート:
- プラットフォーム:Windowsの
- ActiveMQのバージョン:5.9.1、ダウンロード
- JDKのバージョン:1.8
2、JDBC依存をダウンロード
フォルダActiveMQのインストールディレクトリ内のlibファイルの次の三つの依存関係を、ダウンロードしてください。
第二に、バックアップマスターから
1、jetttyを変更
まず、ActiveMQのにウェブ管理ポートを変更しているここでは、conf-> jetty.xml変更、アカウント管理インターフェイスのデフォルトのパスワードはadmin / adminです
<bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">
<!-- the default port number for the web console -->
<property name="port" value="8161"/>
</bean>
2、activemq.xml変更
その後conf-> activemq.xml変更
接続設定
デフォルトでは、他の人がコメントアウトされ、接続の以下の5種類が、ここでTCPだけ開いている、あなたは、各接続ポートに対応して見ることができ、ここではActiveMQのサービスポートを設定します。
<transportConnectors> <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB --> <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/> <!-- <transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/> <transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/> <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/> <transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/> --> </transportConnectors>
設定したJDBCデータベース
ActiveMQのライブラリを作成するMySQLデータベース、
broker
以下のルートタグのタグであるbeans
、以下のように、豆のノードの次のレベルを作成します。<bean id="mysql-qs" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/activemq?relaxAutoCommit=true"/> <property name="username" value="root"/> <property name="password" value="123456"/> <property name="poolPreparedStatements" value="true"/> </bean>
データソースを設定します。
まず、(デフォルトでtrueに)名前と永続を設定し、ブローカーノードを変更するには、次のように変更し、変更されないことがあります。
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="mq1" persistent="true" dataDirectory="${activemq.data}">
そして、私たちが設定する前のmysql-QSを使用し、永続的なモードを設定します
<persistenceAdapter> <!-- <kahaDB directory="${activemq.data}/kahadb"/> --> <jdbcPersistenceAdapter dataDirectory="${activemq.base}/activemq-data" dataSource="#mysql-qs"/> </persistenceAdapter>
3、スタート
スタートActiveMQの(acitveMQ.jarビン内のダブルクリック)を設定した後、起動完了後のログ情報:
INFO | Using a separate dataSource for locking: org.apache.commons.dbcp2.BasicDataSource@179ece50
INFO | Attempting to acquire the exclusive lock to become the Master broker
INFO | Becoming the master on dataSource: org.apache.commons.dbcp2.BasicDataSource@179ece50
その後、我々は代わりにビットのTCPポートサービス、61617を変更し、その後、再起動し、ログ情報を以下のとおりです。
INFO | Using a separate dataSource for locking: org.apache.commons.dbcp2.BasicDataSource@179ece50
INFO | Attempting to acquire the exclusive lock to become the Master broker
INFO | Failed to acquire lock. Sleeping for 10000 milli(s) before trying again...
INFO | Failed to acquire lock. Sleeping for 10000 milli(s) before trying again...
INFO | Failed to acquire lock. Sleeping for 10000 milli(s) before trying again...
INFO | Failed to acquire lock. Sleeping for 10000 milli(s) before trying again...
ノードから見ることができ、主ノードに障害が発生した場合、ノードはすぐにサービスを提供するために、マスターノードを置き換えることができるように、マスターノードになるために、テーブルのロックを取得しようとしています。これは、私たちはバックアップからメインを達成することができます。
第三に、ロード・バランシング
ActiveMQのルーティングがMQのうち実現することができる、MQは、メッセージがあっても、消費者brokerBに、試験brokerAのキューに送信されたときに、それぞれとbrokerA brokerB二つあると仮定し、テストキューを取得したいされていますキューの中のテストはbrokerA brokerBにルーティングされます。
ロードバランシングを設定するためにオンになっているnetworkConnectors
次のようにノードを、スタティックルーティングの設定は次のとおりです。
<networkConnectors>
<networkConnector uri="static:failover://(tcp://localhost:61616,tcp://localhost:61617)" duplex="false"/>
</networkConnectors>
brokerAとbrokerBはお互いに接続するように設定を設定する必要があります。
第四に、テスト
1、MQの確立
2つのブローカーの形成は、コンフィギュレーションから、各グループ内のショットを呼び出します。
- brokerA:
- 所有者:セットのウェブ管理ポート8761、MQ名を設定し
mq
、アドレスデータベースはActiveMQのに設定され、サービスのTCPポート61616を設定し、スタティックルートをロードバランシングを設定static:failover://(tcp://localhost:61618,tcp://localhost:61619)
し、[開始 - 上記のサービスのTCPポート61617に基づいて修正し、次に開始しますから
- 所有者:セットのウェブ管理ポート8761、MQ名を設定し
- brokerB:
- 所有者:設定したWeb管理ポート8762、セットMQ名
mq1
、住所データベースの設定activemq1、設定TCPサービスポート61618は、スタティックルートをロードバランシングを設定static:failover://(tcp://localhost:61616,tcp://localhost:61617)
し、[開始します - 上記のサービスのTCPポート61619に基づいて修正し、次に開始しますから
- 所有者:設定したWeb管理ポート8762、セットMQ名
2、springboot試験
プロジェクトでフォローし、ブローカー・URLの設定ファイルを変更failover:(tcp://localhost:61616,tcp://localhost:61617,tcp://localhost:61618,tcp://localhost:61619)
し、プロジェクトがコンソールにアクセスするには、次のログが表示されます起動します。
2018-07-31 15:09:25.076 INFO 12780 --- [ActiveMQ Task-1] o.a.a.t.failover.FailoverTransport : Successfully connected to tcp://localhost:61618
1I'm from queue1:hello
2018-07-31 15:09:26.599 INFO 12780 --- [ActiveMQ Task-1] o.a.a.t.failover.FailoverTransport : Successfully connected to tcp://localhost:61618
2I'm from queue1:hello
2018-07-31 15:09:29.002 INFO 12780 --- [ActiveMQ Task-1] o.a.a.t.failover.FailoverTransport : Successfully connected to tcp://localhost:61616
1I'm from queue1:hello
2018-07-31 15:09:34.931 INFO 12780 --- [ActiveMQ Task-1] o.a.a.t.failover.FailoverTransport : Successfully connected to tcp://localhost:61618
2I'm from queue1:hello
ロードバランシングは、成功したことを証明します。