RabbitMQのクラスタの展開

ボーエン概要:
、RabbitMQの概念
第二に、単一のRabbitMQの展開
3クラスタの展開RabbitMQの
4つのノードが参加するか、クラスタ構成を残します

A、RabbitMQのコンセプト

PythonやRubyの、.NET、Javaの:RabbitMQのAMQPプロトコルは、サービスによってオープンソースであり、Erlangの言語でのサーバーは、のようなクライアントの様々なサポート 、JMS、C、PHP、ActionScriptの、XMPP、STOMP 、およびサポートをAJAX。ストアアンドフォワードメッセージのための分散システムでは、使いやすさ、拡張性、高可用性の面で、よくやってそう。
AMQP、すなわちアドバンストメッセージキュープロトコル、高度なメッセージキュープロトコルは、メッセージ指向ミドルウェアの設計のためのオープンな標準のアプリケーション層のプロトコルです。コンポーネント、ユーザのプレゼンス情報を知らなくても、メッセージの送信者、およびその逆の間のデカップリングのために主にメッセージミドルウェア。
これは、対応するクライアント(クライアント)ミドルウェア(ブローカー)相互作用をメッセージングに対応するようになります。それらは、消費者(消費者、アプリケーションのメッセージ処理)に転送し、その後あなたは(もプロデューサーとして知られているアプリケーションへの投稿、)メッセージを受信ミドルウェア・パブリッシャー(出版社)を、メッセージング、および。AMQPは、ネットワークプロトコルであるので、出版社、消費者やメッセージングミドルウェアは、異なる物理マシン上に展開することができます。

RabbitMQの使用シナリオ

非同期処理で使用される実用的な用途、デカップリングアプリケーション、および4つのシーンを切断メッセージ通信フローの前にメッセージキュー。

第二に、単一のRabbitMQの展開

注:作業を開始する前に、デフォルトのlocalhostsのための最高のホスト名が(ない場合は、RabbitMQのを起動すると、文句を言うだろう、解決策:ホストを再起動し、RabbitMQの開始します)

必要なソフトウェアをダウンロードするには公式サイトへの無料は、あなたもすることができますダウンロードし、私のネットワークディスクのrpmパッケージを、その後、サーバー自体にアップロード。

このサーバーの下にIPは192.168.20.2です。

[root@localhost src]# ls      #确认所需RPM包
erlang-18.1-1.el6.x86_64.rpm
rabbitmq-server-3.6.6-1.el6.noarch.rpm
socat-1.7.3.2-2.el7.x86_64.rpm
[root@localhost src]# yum -y localinstall erlang-18.1-1.el6.x86_64.rpm rabbitmq-server-3.6.6-1.el6.noarch.rpm socat-1.7.3.2-2.el7.x86_64.rpm
#安装RPM包
[root@localhost src]# chkconfig rabbitmq-server on   #rabbitmq加入开机自启
[root@localhost src]# /etc/init.d/rabbitmq-server start    #启动rabbitmq服务

OKのRabbitMQは実行されています。

[root@localhost src]# ps -ef | grep rabbitmq    

次のようにコマンドの結果が返されます。

RabbitMQのクラスタの展開

#开启rabbitmq的web管理插件,以便可以通过浏览器进行访问
[root@localhost src]# rabbitmq-plugins enable rabbitmq_management
#创建登录用户
[root@localhost src]# rabbitmqctl add_user admin 123.com
#将创建的admin用户添加至administrator组
[root@localhost src]# rabbitmqctl set_user_tags admin administrator

クライアントアクセスサーバーのRabbitMQのポート15672、新しく作成された管理者ユーザのログインを使用して、ログインが成功すると以下に示します。

RabbitMQのクラスタの展開

成功にアクセスすることができ、それは完全に構築するために、単一のRabbitMQを表します。

第三に、クラスタのRabbitMQの展開

:RabbitMQのクラスタは、大きく二つの方法に分け
1、ノーマルモード:クラスタのデフォルトモード、メッセージ本体が一つだけのノードが存在する;
2、ミラーモード:複数のノードのミラーキューに存在するようにする必要があります。
HAモード:

  • すべて:すべてのノードにキューに入れられました。
  • exatly:他のノードへのランダム画像。
  • ノード:指定されたノードにミラーリング。

クラスタノードモード:
1つの記憶ノード:メモリ上の作業;
2、ディスクノード:ディスク上の作業;
例外:メモリとディスクノードノード共存し、データの永続性一方、アクセス速度の増加を改善します。

専用メモリクラスタノード、ダウン一度ノード、すべてのステータスメッセージ場合と比較メモリノード、ディスクに書き込まれたが、それは、ディスクノードのクラスタよりも良好に実行されていないが、あなただけの状態を保存するディスクが必要ですが、十分であろうそれは、失われる永続的なデータを得ることができません。

1、デプロイメント環境を次のように

RabbitMQのクラスタの展開

前記192.168.20.2を行うには、上記の単一のRabbitMQに基づいています。

2、インストールサービスのRabbitMQ

以下の操作及び20.4 192.168.20.3つのノード(ノード戻し20.5へ)、サービスのRabbitMQを展開するために:

#上传所需rpm包
[root@localhost src]# ls      
erlang-18.1-1.el6.x86_64.rpm
rabbitmq-server-3.6.6-1.el6.noarch.rpm
socat-1.7.3.2-2.el7.x86_64.rpm
#安装rabbitmq
[root@localhost src]# yum -y localinstall erlang-18.1-1.el6.x86_64.rpm rabbitmq-server-3.6.6-1.el6.noarch.rpm socat-1.7.3.2-2.el7.x86_64.rpm 
#启动rabbitmq并加入开机自启
[root@localhost src]# /etc/init.d/rabbitmq-server start
[root@localhost src]# chkconfig rabbitmq-server on

3は、configureホスト192.168.20.2

[root@localhost ~]# tail -4 /etc/hosts     #配置本地解析(主机名直接写想要自定义的即可)
192.168.20.2 rabbitmq01
192.168.20.3 rabbitmq02
192.168.20.4 rabbitmq03
192.168.20.5 rabbitmq04
#将hosts文件复制到其他节点
[root@localhost ~]# scp /etc/hosts [email protected]:/etc/
[root@localhost ~]# scp /etc/hosts [email protected]:/etc/
[root@localhost ~]# scp /etc/hosts [email protected]:/etc/
#将rabbitmq01的cookie节点信息复制到其他需要加入群集的节点
#部署群集的时候需要节点cookie信息一致
[root@localhost ~]# scp /var/lib/rabbitmq/.erlang.cookie [email protected]:/var/lib/rabbitmq/
[root@localhost ~]# scp /var/lib/rabbitmq/.erlang.cookie [email protected]:/var/lib/rabbitmq/

4、クラスタノードに参加するすべてのサーバーを再起動します

すべてのクラスタサーバー上で参加すること(rabbitmq01を含む)を再起動するには、次のコマンドを実行します。

[root@localhost ~]# init 6       #重启后就会发现主机名已经更改为hosts文件中定义的了

再起動時にインターフェイスカードの後に​​した場合は、再起動を強制する必要があります。

[root@rabbitmq01 ~]# ps -ef | grep rabbit    #重启后确定已经启动

図5に示すように、クラスタ構成でrabbitmq01

[root@rabbitmq01 ~]# rabbitmqctl  stop_app   #停止rabbitmq节点服务
[root@rabbitmq01 ~]#  rabbitmqctl reset     #重置rabbitmq节点
[root@rabbitmq01 ~]# rabbitmqctl start_app    #启动rabbit节点服务
Starting node rabbit@rabbitmq01 ... #复制返回的节点名称

6、追加rabbitmq01クラスタ構成rabbitmq02,03

[root@rabbitmq02 ~]# rabbitmqctl stop_app   #停止节点服务
[root@rabbitmq02 ~]# rabbitmqctl reset     #重置节点
[root@rabbitmq02 ~]# rabbitmqctl join_cluster --ram rabbit@rabbitmq01          #以内存方式加入群集,后面是复制的rabbitmq01的节点名
[root@rabbitmq02 ~]# rabbitmqctl start_app   
[root@rabbitmq02 ~]# rabbitmq-plugins enable rabbitmq_management

図7は、rabbitmq01にノードステータスを表示します

[root@rabbitmq01 ~]# rabbitmqctl cluster_status       #查看节点状态
Cluster status of node rabbit@rabbitmq01 ...
[{nodes,[{disc,[rabbit@rabbitmq01]},
         {ram,[rabbit@rabbitmq03,rabbit@rabbitmq02]}]},
 {running_nodes,[rabbit@rabbitmq03,rabbit@rabbitmq02,rabbit@rabbitmq01]},
 {cluster_name,<<"rabbit@rabbitmq01">>},
 {partitions,[]},
 {alarms,[{rabbit@rabbitmq03,[]},
          {rabbit@rabbitmq02,[]},
          {rabbit@rabbitmq01,[]}]}]
# rabbit01工作模式为磁盘节点;rabbit02和03为内存节点模式
# running_nodes:正在运行的节点
# cluster_name:节点名称
# alarms:发生问题时rabbit01、02、03会进行报警

8、RabbitMQの中で管理ユーザを作成し、管理グループに参加します

リセットノードのでリセットされるので、ユーザーが再作成される必要があります。

[root@rabbitmq01 ~]# rabbitmqctl add_user admin 123.com
[root@rabbitmq01 ~]# rabbitmqctl set_user_tags admin administrator

9、ログインWebインタフェース

任意のポートのクラスタノード内のIP + 15672は、ログインすることができます:

次のページでは、クラスタノードの情報を見ることができます。
RabbitMQのクラスタの展開

10、コンフィギュレーションのWebインターフェイスは、バーチャルホストを追加します

RabbitMQのクラスタの展開

作成した仮想ホストを入力します。

RabbitMQのクラスタの展開

そして、次の設定を行います。

RabbitMQのクラスタの展開

セットアップした後、再び仮想ホストの完全な図です。

RabbitMQのクラスタの展開

セットマッチポリシー:

RabbitMQのクラスタの展開

公開されたニュース:

RabbitMQのクラスタの展開

セットには、ニュースコンテンツを公開します:

RabbitMQのクラスタの展開

RabbitMQのクラスタの展開

RabbitMQのクラスタの展開

現在のページを更新し、現在の仮想ホストのキューの合計数を見ることができます:

RabbitMQのクラスタの展開

第四に、単一ノードは、クラスタ構成に参加するか、残します

図1に示すように、クラスタに参加するノード

私は上記のクラスタ展開するときに、ホストがクラスタ内にすでにノードのファイルを解析することができますので、ので、ここでは省略解消されます

#在节点192.168.20.5服务器上安装rabbitmq并配置
[root@localhost src]# yum -y localinstall erlang-18.1-1.el6.x86_64.rpm rabbitmq-server-3.6.6-1.el6.noarch.rpm socat-1.7.3.2-2.el7.x86_64.rpm 
[root@localhost src]# chkconfig rabbitmq-server on
[root@localhost src]# /etc/init.d/rabbitmq-server start
#将群集中的cookie信息复制到本地
[root@localhost src]# scp root@rabbitmq01:/var/lib/rabbitmq/.erlang.cookie /var/lib/rabbitmq/
[root@localhost src]# init 6       #重启本机
#加入群集
[root@rabbitmq04 ~]# rabbitmqctl stop_app
[root@rabbitmq04 ~]# rabbitmqctl reset
[root@rabbitmq04 ~]# rabbitmqctl join_cluster --ram rabbit@rabbitmq01
#以内存运行的方式加入群集,若要以磁盘的方式加入,省略“--ram”选项即可
[root@rabbitmq04 ~]# rabbitmqctl start_app
#开启web管理页面
[root@rabbitmq04 ~]# rabbitmq-plugins enable rabbitmq_management

ビューのWebインターフェイスは、確認rabbitmq04は、クラスタに追加します:

RabbitMQのクラスタの展開

図2に示すように、単一ノードクラスタ出口

上記1)の停止ノードrabbitmq04

[root@rabbitmq04 ~]# rabbitmqctl stop_app

マスタノードrabbitmq01削除ノード2)裏面

[root@rabbitmq04 ~]# rabbitmqctl -n rabbit@rabbitmq01 forget_cluster_node rabbit@rabbitmq04
# -n:指定节点名称
# forget_cluster_node:后面跟要删除的节点名称 

--------この記事の最後に、これまで、読んでくれてありがとう--------

おすすめ

転載: blog.51cto.com/14154700/2452783