RabbiMQはErangで開発されており、Erlangは分散言語として生まれているため、クラスタリングは非常に便利ですが、[Load Balancing](https://cloud.tencent.com/product/clb?from=10680)はサポートしていません。
RabbitMQモードは、大きく次の3つのタイプに分けられます。
(1) シングルモード。
(2) 通常モード(デフォルトのクラスターモード)。
(3) ミラーモード(複数のノードに存在し、RabbiMQのHAスキームに属し、高いビジネス信頼性が必要な場合に適したミラーキューに必要なキューを作成します)。
ミラーリングモードを実現するには、最初に共通クラスターモードを構築してから、このモードに基づいてミラーリングモードを構成し、高可用性を実現する必要があります。
RabbitMQのクラスターノードには、メモリノードとディスクノードが含まれます。 RabbitMQはメッセージの永続性をサポートします
つまり、データはディスクに書き込まれます。最も適切な解決策は、メモリノードとディスクノードの両方を用意することです。
オペレーティングシステム | ip | ホスト名 | 構成 |
---|---|---|---|
セントス6.9 | 192.168.31.7 | mq_01 | 1コア2g |
セントス6.9 | 192.168.31.216 | mq_02 | 1コア2g |
セントス6.9 | 192.168.31.214 | mq_03 | 1コア2g |
ここでの3つのサーバーはすべてインターネットに接続されていることに注意してください。さらに、RabbitMQクラスターノードは同じネットワークセグメントに存在する必要があります。WANを介している場合、影響はさらに悪化します。
3つのMQノードのコンピューター名をmq_01、mq_02、およびmq_03に変更してから、ホスト構成ファイルを変更します。
vim /etc/hostname
内容は以下の通りです。
mq_01
他の2つは同じ操作ですが、内容が異なります。
vi /etc/hosts
内容は以下の通りです。
192.168.31.7 mq_01
192.168.31.216 mq_02
192.168.31.214 mq_03
他の2つは同じ操作と同じ内容を持っています。
ホスト名を永続的にするには、3台のサーバーを再起動します。
reboot -f
3 両方のサーバーをインストールします
yum install -y epel-release
3 両方のサーバーをインストールします
wget https://www.rabbitmq.com/releases/erlang/erlang-19.0.4-1.el6.x86_64.rpm
yum install -y socat
rpm -ivh erlang-19.0.4-1.el6.x86_64.rpm
3 両方のサーバーをインストールします
wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.8/rabbitmq-server-3.6.8-1.el6.noarch.rpm
rpm -ivh rabbitmq-server-3.6.8-1.el6.noarch.rpm
3 両方のサーバーで実行します
mkdir -p /data/log/rabbitmq
mkdir -p /data/rabbitmq/mnesia
chown -R rabbitmq.rabbitmq -R /data/log/rabbitmq /data/rabbitmq/mnesia
3 両方のサーバーで実行します
vi /etc/rabbitmq/rabbitmq-env.conf
内容は以下の通りです。
RABBITMQ_LOG_BASE=/data/log/rabbitmq
RABBITMQ_MNESIA_BASE=/data/rabbitmq/mnesia
3 両方のサーバーで実行します
/etc/init.d/rabbitmq-server start
Rabbitmqクラスターは動作するためにerlangクラスターに依存しているため、erlangクラスターシーンを最初に構築する必要があります。 Erlangクラスターの各ノードは/var/lib/rabbitmq/.erlang.cookieに格納されているマジックCookieを介して実装され、ファイルには400の権限があります。したがって、各ノードのCookieが一貫していることを確認する必要があります。そうしないと、ノードは通信できません。
mq_01ノードにログインし、erlang.cookieを表示します
# cat /var/lib/rabbitmq/.erlang.cookie
RUIRJRRZDNYEHCCWITRS
scpを使用して、mq_01ノードの.erlang.cookieの値を他の2つのノードにコピーします。
scp /var/lib/rabbitmq/.erlang.cookie [email protected]:/var/lib/rabbitmq/.erlang.cookie
scp /var/lib/rabbitmq/.erlang.cookie [email protected]:/var/lib/rabbitmq/.erlang.cookie
権限を設定し、他の2つを実行します
chown -R rabbitmq.rabbitmq /var/lib/rabbitmq/.erlang.cookie
chmod 400/var/lib/rabbitmq/.erlang.cookie
RabbitMQは、非常に使いやすいグラフィカル監視ページプラグイン(rabbitmq_management)を提供します。これにより、Rabbitのステータスまたはクラスターのステータスを一目で確認できます。
3 両方のサーバーで実行します
rabbitmq-plugins enable rabbitmq_management
ポートを表示
netstat -napt|grep 5672
mq01ノードクラスターにメモリノードとしてmq_02とmq_03を追加します
mq_02およびmq_03で次のコマンドを実行します。
ウサギのアプリを停止します
rabbitmqctl stop_app
ディスクノードに参加する
rabbitmqctl join_cluster --ram rabbit@mq_01
ウサギアプリを起動します
rabbitmqctl start_app
(1)デフォルトでは、rabbitmqは起動後のディスクノードです。このクラスターコマンドでは、mq02とmq03はメモリノード、mq01はディスクノードです。
(2)mq02とmq03を両方のディスクノードにする場合は、-ramパラメーターを削除するだけです。
(3)ノードタイプを変更する場合は、rabbitアプリケーションを停止する必要がある場合は、コマンドrabbitmqctl change_cluster_node_type disc(ram)を使用できます。
3 すべてのノード、それを実行します
rabbitmqctl cluster_status
3 すべてのノード、それを実行します
rabbitmqctl add_user admin 'admin123'
rabbitmqctl set_permissions -p / admin ...
rabbitmqctl set_user_tags admin administrator
説明:
最初のコマンドラインは、ユーザーadminが作成され、パスワードがadmin123であることを示しています。
コマンドの2行目は、管理ユーザーが仮想ホストのすべてのリソースに対する構成、書き込み、および読み取りのアクセス許可を「/」として持っていることを示しています。注:次の3つのドットは、これら3つの権限を示しています。
コマンドの3行目は、adminユーザーに管理者権限が割り当てられていることを示しています。
ブラウザを開き、http://192.168.31.7:15672と入力します。
ユーザー名:admin、パスワード:admin123
ログイン後、図のようなインターフェースが表示されます。
この記事の参照リンク:
https://www.cnblogs.com/shihaiming/p/11014257.html
Recommended Posts