RabbitMQは、AMQP(Advanced Message Queuing Protocol)プロトコルを最初に実装したオープンソースのメッセージブローカーソフトウェアですが、STOMP(Streaming Text Oriented Messaging Protocol)やMQTT(Streaming Text Oriented Messaging Protocol)などの他のプロトコルをサポートするために開発および拡張されています。メッセージキューテレメトリトランスポート)。
メッセージキュー/メッセージブローカーソフトウェアは、分散システム、アプリケーション、サービス間でメッセージを送受信するために使用されます。 RabbitMQはErlangプログラミング言語で記述されており、Python、NodeJS、Java、PHPなどのすべての主要なプログラミング言語のクライアントインターフェイスとライブラリをサポートしています。
このチュートリアルでは、Ubuntu18.04サーバーでRabbitMQクラスターを設定する方法を説明します。 3つのUbuntuサーバーを使用してRabbitMQクラスターをインストールし、RabbitMQ管理を有効にして、すべてのノードのHAポリシーを設定します。
- 3台以上のUbuntu18.04サーバー
- 10.0.15.21 hakase-ubuntu01
- 10.0.15.22 hakase-ubuntu02
- 10.0.15.23 hakase-ubuntu03
- root権限
何をしますか?
- Hostsファイルのセットアップ
- RabbitMQサーバーをインストールする
- 管理プラグインを有効にする
- UFWファイアウォールのセットアップ
- RabbitMQクラスターのセットアップ
- 新しい管理者ユーザーを設定する
- RabbitMQセットアップキューミラーリング
- テスト
このステップでは、すべてのサーバーの「/ etc / hosts」ファイルを編集し、各サーバーのIPアドレスをホスト名としてマップします。
vimエディタを使用して「/etc/hosts」ファイルを編集します。
sudo vim /etc/hosts
次に、次の構成をそこに貼り付けます。
10.0.15.21 hakase-ubuntu01 10.0.15.22 hakase-ubuntu02 10.0.15.23 hakase-ubuntu03
保存して終了します。
RabbitMQサーバーをインストールする前に、すべてのリポジトリが更新されていることを確認してください。
次のコマンドを実行します。
sudo apt update
sudo apt upgrade
次に、以下のaptコマンドを使用してUbuntuリポジトリからRabbitMQサーバーパッケージをインストールします。
sudo apt install rabbitmq-server -y
インストールが完了したら、RabbitMQサービスを開始し、システムの起動時に毎回起動できるようにします。
sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server
RabbitMQサーバーはUbuntu18.04にインストールされています。
このステップでは、RabbitMQ管理プラグインを有効にします。これは、デフォルトのTCPポート「15672」で実行されているWebブラウザからRabbitMQサーバーを監視および処理できるようにするインターフェイスです。
以下のコマンドを実行して、RabbitMQ管理プラグインを有効にします。
sudo rabbitmq-plugins enable rabbitmq_management
エラーがないことを確認してから、RabbitMQサービスを再起動します。
sudo systemctl restart rabbitmq-server
RabbitMQ管理プラグインが有効になっています。
このチュートリアルでは、UbuntuUFWファイアウォールを有効にします。 RabbitMQサーバーで使用されるいくつかのポートを開く必要があります。
sshサービスをUFWファイアウォールに追加し、ファイアウォールサービスを有効にします。
sudo ufw allow ssh
sudo ufw enable
次に、新しいRabbitMQtcpポート「5672,15672,4369,25672」を追加します。
sudo ufw allow 5672,15672,4369,25672/tcp
次に、UFWファイアウォールポートリストを確認します。
sudo ufw status
Ubuntu UFWファイアウォールの構成が完了し、RabbitMQクラスターをセットアップする準備が整いました。
RabbitMQクラスターをセットアップするには、「。erlang.cookie」ファイルがすべてのノードで同じであることを確認する必要があります。 '/ var / lib/rabbitmq'ディレクトリの'.erlang.cookie'ファイルを'hakase-ubuntu01'から他のノード'hakase-ubuntu02'および'hakase-ubuntu03'にコピーします。
'hakase-ubuntu01'から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/
両方のサーバーにエラーがないことを確認してください。
次に、クラスター「hakase-ubuntu01」に参加するために「hakase-ubuntu02」と「hakase-ubuntu03」を設定する必要があります。
注:
- hakase-ubuntu02'および'hakase-ubuntu03'サーバーで以下のコマンドを実行します。
RabbitMQサービスを再起動し、アプリを停止します。
sudo systemctl restart rabbitmq-server
sudo rabbitmqctl stop_app
次に、両方のノードのRabbitMQサーバーを「hakase-ubuntu01」のクラスターに参加させてから、アプリを起動します。
sudo rabbitmqctl join_cluster [email protected]
sudo rabbitmqctl start_app
完了したら、RabbitMQクラスターのステータスを確認します。
sudo rabbitmqctl cluster_status
そして、以下のような結果が得られます。
RabbitMQクラスターが作成され、hakase-ubuntu01、hakase-ubuntu02、およびhakase-ubuntu03がメンバーになっています。
このチュートリアルでは、RabbitMQサーバーの新しい管理者ユーザーを作成し、デフォルトの「ゲスト」ユーザーを削除します。 'hakase-ubuntu01'から新しいユーザーを作成し、クラスター上のすべてのノードに自動的に複製します。
「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」ユーザーが削除されます。
デフォルトでは、RabbitMQクラスター内のキューの内容は、単一のノード(キューが宣言されたノード)にあります。
この設定は必須です。キューミラーリングとすべてのクラスターノードへのレプリケーション用に「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」という名前の高可用性ポリシーを設定します。これには、名前が「nodes」で始まるすべてのキューが含まれます。クラスタ内の2つの特定のノード「hakase-ubuntu02」と「hakase-ubuntu03」にミラーリングします。
sudo rabbitmqctl set_policy ha-nodes "^nodes\." \
'{"ha-mode":"nodes","ha-params":["[email protected]", "[email protected]"]}'
RabbitMQリストhaポリシー。
sudo rabbitmqctl list_policies;
RabbitMQは特定のhaポリシーを削除します。
sudo rabbitmqctl clear_policy ha-two
Webブラウザを開き、ポート「15672」のノードのIPアドレスを入力します。
http://10.0.15.21:15672/
ユーザー名「hakase」とパスワード「[emailprotected]」を入力します。
そして、以下に示すようなRabbitMQ管理ダッシュボードが表示されます。
すべてのクラスターノードのステータスは稼働中です。
次に、[管理者]タブメニューをクリックし、横にある[ユーザー]メニューをクリックします。
そして、hakaseユーザーがリストに追加されます。
次に、[管理]タブメニューをクリックし、横にある[ポリシー]メニューをクリックします。
そして、私たちが作成したすべてのRabbitMQhaポリシーを取得します。
Ubuntu18.04サーバーへのRabbitMQクラスターのインストールと構成が正常に完了しました。