RabbitMQは、AMQP(Advanced Message Queuing Protocol)プロトコルを元々実装しているオープンソースのメッセージブローカーソフトウェアですが、STOMP(ストリーミングテキスト指向メッセージングプロトコル)やMQTT(メッセージ)などの他のプロトコルをサポートするために開発および拡張されています。テレメトリトランスポートのキューイング)。
RabbitMQは、分散システム、アプリケーション、およびサービス間でメッセージを送受信するためのサポートを提供するメッセージキューイングソフトウェアです。 Erlangプログラミング言語で記述されており、Python、NodeJS、Java、PHPなどを含むすべての主要なプログラミング言語のクライアントインターフェイスとライブラリをサポートしています。
このチュートリアルでは、CentOS7サーバーでRabbitMQクラスターをセットアップする方法を段階的に説明します。 3つのCentOSサーバーを使用してRabbitMQクラスターをセットアップし、RabbitMQ管理を有効にして、すべてのノードのHAポリシーをセットアップします。
- 3台以上のCentOS7サーバー
- 10.0.15.21 node01
- 10.0.15.22 node02
- 10.0.15.23 node03
- root権限
何をしますか?
- Hostsファイルのセットアップ
- RabbitMQサーバーをインストールする
- RabbitMQ管理プラグインを有効にする
- Firewallを設定する
- RabbitMQクラスターのセットアップ
- 新しい管理者ユーザーを構成する
- RabbitMQキューミラーリングのセットアップ
- テスト
このステップでは、すべてのサーバーの「/ etc / hosts」ファイルを編集し、各サーバーのIPアドレスをホスト名としてマッピングします。
vimエディタを使用して「/etc/hosts」ファイルを編集します。
sudo vim /etc/hosts
次に、次の構成をそこに貼り付けます。
10.0.15.21 node01 10.0.15.22 node02 10.0.15.23 node03
保存して終了します。
このステップでは、EPEL(Enterprise Linux用の追加パッケージ)リポジトリからRabbitMQサーバーパッケージをインストールします。
EPELリポジトリをCentOS7システムに追加します。
sudo yum -y install epel-release
次に、以下のyumコマンドを使用して、RabbitMQサーバーをすべてのノード「node01」、「node02」、および「node03」にインストールします。
sudo yum -y install rabbitmq-server
インストールが完了したら、RabbitMQサービスを開始し、システムの起動時に毎回起動できるようにします。
sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server
RabbitMQサーバーはすべてのノードクラスターCentOS7にインストールされています。
このステップでは、RabbitMQ管理プラグインを有効にします。これは、デフォルトのTCPポート「15672」で実行されているWebブラウザからRabbitMQサーバーを監視および処理できるようにするインターフェイスです。
以下のコマンドを実行して、RabbitMQ管理プラグインを有効にします。
sudo rabbitmq-plugins enable rabbitmq_management
エラーがないことを確認してから、RabbitMQサービスを再起動します。
sudo systemctl restart rabbitmq-server
そして、RabbitMQ管理が有効になりました。
このチュートリアルでは、CentOSのfirewalldサービスを有効にするため、RabbitMQサーバーが使用するポートを開く必要があります。
RabbitMQサーバー「5672」を使用するポート、RabbitMQ管理用のポート「15672」、およびRabbitMQクラスター用のポート「4369、25672」を開きます。
次のfirewalldコマンドを実行します。
sudo firewall-cmd --add-port=15672/tcp --permanent
sudo firewall-cmd --add-port=5672/tcp --permanent
sudo firewall-cmd --add-port={4369/tcp,25672/tcp} --permanent
次に、firewalldをリロードし、リストで開いているすべてのポートを確認します。
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
CentOSのfirewalld構成が完了し、RabbitMQクラスターをセットアップする準備が整いました。
RabbitMQクラスターをセットアップするには、「。erlang.cookie」ファイルがすべてのノードで同じであることを確認する必要があります。 '/ var / lib/rabbitmq'ディレクトリの'.erlang.cookie'ファイルを'node01'から他のノード'node02'および'node03'にコピーします。
'node01'からscpコマンドを使用して'.erlang.cookie'ファイルをコピーします。
scp /var/lib/rabbitmq/.erlang.cookie [email protected]:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie [email protected]:/var/lib/rabbitmq/
両方のサーバーにエラーがないことを確認してください。
次に、クラスター「node01」に参加するために「node02」と「node03」を設定する必要があります。
「node02」および「node03」サーバーで以下のすべてのコマンドを実行します。
RabbitMQサービスを再起動し、アプリを停止します。
sudo systemctl restart rabbitmq-server
sudo rabbitmqctl stop_app
次に、両方のノードのRabbitMQサーバーを「node01」のクラスターに参加させてから、アプリを起動します。
sudo rabbitmqctl join_cluster [email protected]
sudo rabbitmqctl start_app
完了したら、RabbitMQクラスターのステータスを確認します。
sudo rabbitmqctl cluster_status
そして、以下のような結果が得られます。
'node02'で。
'node03'で。
ノード01、ノード02、ノード03をメンバーとしてRabbitMQクラスターが作成されました。
このチュートリアルでは、RabbitMQサーバーの新しい管理者ユーザーを作成し、デフォルトの「ゲスト」ユーザーを削除します。 'node01'から新しいユーザーを作成し、クラスター上のすべてのノードに自動的に複製します。
「hakase」という名前の新しいユーザーをパスワード「[emailprotected]」で追加します。
sudo rabbitmqctl add_user hakase [email protected]
'hakase'ユーザーを管理者として設定します。
sudo rabbitmqctl set_user_tags hakase administrator
そして、すべてのvhostを変更、書き込み、および読み取るための「hakase」ユーザー権限を付与します。
sudo rabbitmqctl set_permissions -p / hakase ".*" ".*" ".*"
次に、デフォルトの「ゲスト」ユーザーを削除します。
sudo rabbitmqctl delete_user guest
そして、利用可能なすべてのユーザーを確認します。
sudo rabbitmqctl list_users
そして、以下のような結果が得られます。
新しいRabbitMQユーザーが作成され、デフォルトの「guest」ユーザーが削除されます。
この設定は必須です。キューミラーリングとすべてのクラスターノードへのレプリケーション用に「hapolicy」クラスターを構成する必要があります。キューマスターをホストするノードに障害が発生した場合、「ha-mode」および「ha-params」ポリシーに応じて、同期されている限り、最も古いミラーが新しいマスターに昇格します。
以下は、RabbitMQhaポリシーに関するいくつかの例です。
「ha-all」という名前のhaポリシーを設定します。これにより、RabbitMQクラスター上のすべてのキューがクラスター上のすべてのノードにミラーリングされます。
sudo rabbitmqctl set_policy ha-all ".*" '{"ha-mode":"all"}'
すべてのキュー名が「two」で始まる「ha-two」という名前のhaポリシーを設定します。クラスタ上の2つのノードにミラーリングされます。
sudo rabbitmqctl set_policy ha-two "^two\." \
'{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}'
すべてのキュー名が「ノード」で始まる「ha-nodes」という名前のhaポリシーを設定します。クラスター上の2つの特定のノード「node02」と「node03」にミラーリングされます。
sudo rabbitmqctl set_policy ha-nodes "^nodes\." \
'{"ha-mode":"nodes","ha-params":["[email protected]", "[email protected]"]}'
次に、以下のコマンドを使用して、使用可能なすべてのポリシーを確認します。
sudo rabbitmqctl list_policies;
また、ポリシーを削除する場合は、次のコマンドを使用してください。
sudo rabbitmqctl clear_policy ha-two
Webブラウザを開き、ポート「15672」のノードのIPアドレスを入力します。
http://10.0.15.21:15672/
ユーザー名「hakase」とパスワード「[emailprotected]」を入力します。
そして、以下のようにRabbitMQ管理ダッシュボードが表示されます。
すべてのクラスターノードのステータスは稼働中です。
次に、[管理者]タブメニューをクリックし、横にある[ユーザー]メニューをクリックします。
そして、hakaseユーザーがリストに追加されます。
次に、[管理]タブメニューをクリックし、横にある[ポリシー]メニューをクリックします。
そして、私たちが作成したすべてのRabbitMQhaポリシーを取得します。
CentOS7サーバーへのRabbitMQクラスターのインストールと構成が正常に完了しました。