ActiveMQ+ZooKeeperクラスタ高可用性構成
一.準備条件:
(1)3台のサーバがあることが望ましい【2台でもよいが、(replicas/2)+1式によって少なくとも2つのActiveMQサービスが存在しなければ運行を保証できないので、自分でテストするときは面倒な点を消して、そのうちの1つを消して、再開して、別のActiveMQサービスを選ぶかどうかを見て、何度も試して効果を見ることができる】
(2) ActiveMQインストールリファレンス: ActiveMQ
(3) ZooKeeperインストールリファレンス:ZooKeeper
二.配置:
ActiveMQルートの下にあるconf/activemq.xmlのデフォルトは次のとおりです.
変更後(hostnameはサーバによって変更され、他の構成は同じです):
replicas:クラスタ内のノード数[(replicas/2)+1式はクラスタ内で少なくとも正常に動作するサービス数を表す],3つのクラスタでは1台のダウンタイムが許可され,他の2台は正常に動作する
Bind:このノードがMasterになると、構成されたアドレスとポートをバインドしてプライマリ・スレーブ・レプリケーション・プロトコルを実行します.
zkAddress:ZooKeeperのipとportは、クラスタの場合はカンマで区切られます(ここでは簡単な例としてZooKeeperが単点に構成されており、ほとんどの環境に適用され、クラスタも複数の構成になります).
zkPassword:ZooKeeperサーバに接続するときに使用するパスワード
hostname:ネイティブip
sync : メッセージが消費される前に、同期情報が格納されているポリシーは、複数のポリシーがカンマで区切られている場合、ActiveMQはより強いポリシーを選択します(local_mem、local_diskはローカルハードディスクに格納することを選択します).
zkPath:ZooKeeper選挙情報交換の格納経路
三.テスト
Step1 :
ZooKeeperのポリシーに従って、3台のActiveMQサーバから1台の実行を選択し、他の2台は実行を待機し、データ上の主従同期を行うだけです.
そこで、ZooKeeperサーバとActiveMQサーバを起動してから、http://172.17.110.1:8161/admin/、 http://172.17.110.2:8161/admin/、 http://172.17.110.3:8161/admin/成功は一つしかない.
Step2 :
アクセスをオフにするhttp://ip:8161/admin/のActiveMQサービスは、他の2つにアクセスできます.そのうちの1つは、ActiveMQ+ZooKeeperクラスタの高可用性構成が成功したことを示しています.
四.参考文書
- ActiveMQ公式サイト
- ZooKeeper公式サイト
(1)3台のサーバがあることが望ましい【2台でもよいが、(replicas/2)+1式によって少なくとも2つのActiveMQサービスが存在しなければ運行を保証できないので、自分でテストするときは面倒な点を消して、そのうちの1つを消して、再開して、別のActiveMQサービスを選ぶかどうかを見て、何度も試して効果を見ることができる】
(2) ActiveMQインストールリファレンス: ActiveMQ
(3) ZooKeeperインストールリファレンス:ZooKeeper
二.配置:
ActiveMQルートの下にあるconf/activemq.xmlのデフォルトは次のとおりです.
<persistenceAdapter>
<kahaDB directory="${activemq.data}/kahadb"/>
</persistenceAdapter>
変更後(hostnameはサーバによって変更され、他の構成は同じです):
<persistenceAdapter>
<replicatedLevelDB
directory="${activemq.data}/leveldb"
replicas="3"
bind="tcp://0.0.0.0:0"
zkAddress="172.17.110.1:2181"
zkPassword="password"
hostname="172.17.110.1"
sync="local_disk"
zkPath="/activemq/leveldb-stores"
/>
</persistenceAdapter>
directory:データを格納するパスreplicas:クラスタ内のノード数[(replicas/2)+1式はクラスタ内で少なくとも正常に動作するサービス数を表す],3つのクラスタでは1台のダウンタイムが許可され,他の2台は正常に動作する
Bind:このノードがMasterになると、構成されたアドレスとポートをバインドしてプライマリ・スレーブ・レプリケーション・プロトコルを実行します.
zkAddress:ZooKeeperのipとportは、クラスタの場合はカンマで区切られます(ここでは簡単な例としてZooKeeperが単点に構成されており、ほとんどの環境に適用され、クラスタも複数の構成になります).
zkPassword:ZooKeeperサーバに接続するときに使用するパスワード
hostname:ネイティブip
sync : メッセージが消費される前に、同期情報が格納されているポリシーは、複数のポリシーがカンマで区切られている場合、ActiveMQはより強いポリシーを選択します(local_mem、local_diskはローカルハードディスクに格納することを選択します).
zkPath:ZooKeeper選挙情報交換の格納経路
三.テスト
Step1 :
ZooKeeperのポリシーに従って、3台のActiveMQサーバから1台の実行を選択し、他の2台は実行を待機し、データ上の主従同期を行うだけです.
そこで、ZooKeeperサーバとActiveMQサーバを起動してから、http://172.17.110.1:8161/admin/、 http://172.17.110.2:8161/admin/、 http://172.17.110.3:8161/admin/成功は一つしかない.
Step2 :
アクセスをオフにするhttp://ip:8161/admin/のActiveMQサービスは、他の2つにアクセスできます.そのうちの1つは、ActiveMQ+ZooKeeperクラスタの高可用性構成が成功したことを示しています.
四.参考文書
- ActiveMQ公式サイト
- ZooKeeper公式サイト