統合springboot 2(スタンバイモード、負荷分散)のActiveMQ

  シングルMQノードは、ノードに障害が発生したら、MQサービスが利用できない、と大きな損失を持っているにバインドされ、常に信頼性がありません。どのようにマスター(プライマリノード障害)、スレーブ(スレーブノード)は、直ちに原則を達成するためのサービスを提供したら、バックアップからここでの主な記録のActiveMQを開くには、例えばここで、複数のMQが同じ永続的なデータソースを使用するデータ・ソースのJDBCを実行することです。唯一つのノード(ノードA)データベースの表ロックを取得することができ、ブロックされた状態に他のノードは、エラーがクラッシュした後、他のノードが再取得テーブルロックになり、ノードを取得するロックがマスターになり、他のノードの子としてノードAが再起動された場合、それは奴隷になります。

  単一ノードの障害の問題を解決する1つだけのマスター同時にサービスを提供するために、メインのバックアップから、データの顔量が増える明確ではないので、それが直面する問題を解決するために、クラスター・アプローチの水平展開を必要とします。

、ActiveMQのセット

1、プラットフォームのリリースノート:

  • プラットフォーム:Windowsの
  • ActiveMQのバージョン:5.9.1、ダウンロード
  • JDKのバージョン:1.8

2、JDBC依存をダウンロード

  フォルダActiveMQのインストールディレクトリ内のlibファイルの次の三つの依存関係を、ダウンロードしてください。

MySQLドライバ

DHCP依存性

コモンズ-POOL2依存

第二に、バックアップマスターから

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&amp;wireFormat.maxFrameSize=104857600"/>
      <!-- <transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
      <transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
      <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
      <transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&amp;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に基づいて修正し、次に開始しますから
  • brokerB:
    • 所有者:設定したWeb管理ポート8762、セットMQ名mq1、住所データベースの設定activemq1、設定TCPサービスポート61618は、スタティックルートをロードバランシングを設定static:failover://(tcp://localhost:61616,tcp://localhost:61617)し、[開始します
    • 上記のサービスのTCPポート61619に基づいて修正し、次に開始しますから

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

ロードバランシングは、成功したことを証明します。

掲載された記事:https://www.tapme.top/blog/detail/2018-09-06-10-38

おすすめ

転載: www.cnblogs.com/wuyoucao/p/10953543.html