はじめに
経験豊富なシステム管理者なら誰でも、タスクを後回しにすることが非常に有用であり、特にタスクに時間がかかり、多くのリソースを消費する場合に必要であることを知っています。これを行うには、メッセージ ブローカーが必要です。これは、さまざまな送信者 (Web アプリケーション) からメッセージ (タスク) を受信し、それらからキューを形成し、作業プロセス間でそれらを分散するプログラムです。
この記事では、RabbitMQ プロジェクトに焦点を当てます。これは、Advanced Message Queuing Protocol (AMQP) を実装するメッセージ ブローカーの機能を実装するための一連のオープン アプリケーションです。
メッセージ、メッセージ ブローカー、およびシーケンス
メッセージングは、プロセス、アプリケーション、仮想および物理サーバー間で特定のデータを交換する方法です。いくつかの計算機能を実行するこれらのメッセージには、プレーン テキストからバイナリ データの大きなブロックまで、ほとんど何でも含めることができます。このプロセスを正しく実行するには、サードパーティ プログラムが必要です。これがメッセージ ブローカーです。
メッセージブローカは通常、アプリケーションのグループであり、その個々のコンポーネントは、メッセージの特定の段階を処理するように設計されています。つまり、メッセージを受信し、キューで定義し、そのメッセージをその実行を担当するワークプロセスに転送します。多くの場合、本格的なソリューションの代わりに、もともとこの作業を意図していなかったプログラム (データベース、cron デーモンなど) が使用されます。単純にメッセージ キュー (技術的には無限バッファを表します) を作成し、それらを自動処理またはポーリングに渡します。
なぜメッセージ ブローカーが必要なのですか?
メッセージ ブローカーは、さまざまなサービス (Web アプリケーション) 間の仲介者として機能します。処理に時間がかかるタスクは、これらのタスクを実行するためだけに設計されたワークフロー間で分散されるため、負荷が大幅に軽減され、メッセージの配信時間が短縮されます。あるアプリケーションから別のアプリケーションにメッセージを送信するための信頼できるチャネルを提供します。
いつメッセージ ブローカーが必要ですか?
一般に、メッセージ ブローカーの基本機能は、次のような多くの領域をカバーしていますが、これらに限定されません:
- リクエストに対するウェブ サーバーの応答時間を短縮する (リソースを大量に消費するタスクを実行する必要がないため)
- 複数の受信者へのメッセージの配信 (たとえば、処理のため)
- オフライン ユーザーは後ですべてのデータを取得できます。
- サーバー システムとの完全な非同期モードの操作
- タスクの順序付けと優先順位付け;
- 作業プロセス間の負荷分散
- アプリケーションの信頼性とアップタイムを改善する
RabbitMQ の簡単なレビュー
RabbitMQ (2007 年にリリース) は、Advanced Message Queuing Protocol の実装として Mozilla Public License v1.1 の下でライセンスされている、最も人気のあるオープンソース メッセージ ブローカーの 1 つです。 Erlang で設計された RabbitMQ は、使用とインストールが非常に簡単です。
RabbitMQ の仕組み
RabbitMQ は、適切なリスト (メッセージ キュー) にデータを配布するブローカーを使用して、送信者 (パブリッシャー) と受信者 (コンシューマー) を接続するインターフェイスを提供します。
APPLICATION EXCHANGE TASK LIST WORKER [DATA] -------> [DATA] ------> [D]+[D][D][D] ---> [DATA] Publisher EXCHANGE Queue Consumer
RabbitMQ の利点
他のソリューションとは異なり、RabbitMQ は本格的なアプリケーション スタックであり、選択したアプリケーションの単純なベースではありません。複合体に必要なすべてのツールを提供します。
AMQP の簡単なレビュー
AMQP (Advanced Message Queuing Protocol) は、メッセージの配布と送信のための広く普及しているオープン スタンダードです。プロトコルおよび標準として、さまざまなアプリケーションとメッセージ ブローカーの相互作用のための共通フレームワークを確立し、個々のプログラム設計によって引き起こされる問題を排除します。
RabbitMQ のインストール
RabbitMQ パッケージは、CentOS / RHEL および Ubuntu / Debian で提供されています。しかし、原則として、そのようなパッケージは時代遅れです。したがって、RabbitMQ を手動でダウンロードしてインストールすることをお勧めします。
注意 :以前に起動したアプリケーションの動作を中断したり、構成エラーを引き起こしたりしないように、すべての手動操作は新しいサーバーで実行することをお勧めします。RabbitMQ を CentOS/RHEL にインストール
RabbitMQ のインストールを開始する前に、プログラムの依存関係をインストールする必要があります。そのうちの 1 つは Erlang です。ただし、まず、システムと標準アプリケーションを更新する必要があります。これを行うには、次を実行します:
# yum -y update
Erlang のインストールには、以下を使用できます:
# Add and enable relevant application repositories: # Note: We are also enabling third party remi package repositories. wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm sudo rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm # Finally, download and install Erlang: yum install -y erlang
これで、RabbitMQ をインストールできます:
# Download the latest RabbitMQ package using wget: wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.2.2/rabbitmq-server-3.2.2-1.noarch.rpm # Add the necessary keys for verification: rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc # Install the .RPM package using YUM: yum install rabbitmq-server-3.2.2-1.noarch.rpm
Ubuntu に RabbitMQ をインストールする
Ubuntu/Debian での RabbitMQ のインストール プロセスは、CentOS での場合とほぼ同じです。まず、ソフトウェアを更新する必要があります:
# apt-get update # apt-get -y upgrade
rabbitmq キーを追加:
# curl -fsSL https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc | sudo apt-key add -
パッケージの更新を行う:
# apt-get update
これで、rabbitmq RabbitMQ をインストールできます:
$ sudo apt-get install rabbitmq-server
RabbitMQ の管理
前述のように、RabbitMQ ブローカーは非常に使いやすいです。このセクションでは、RabbitMQ の管理と構成について説明します。
管理コンソールを有効にする
RabbitMQ 管理コンソール (RabbitMQ 管理コンソール) は、グラフィカル Web ベースのユーザー インターフェイスを介して RabbitMQ サーバーのプロセスを監視できるプラグインの 1 つです。
このコンソールを使用すると、次のことができます:
- メッセージング、メッセージ キュー、接続、およびユーザーを管理する
- メッセージ キュー、接続、メッセージ レートを追跡する
- メッセージの送受信
- Erlang プロセスとメモリ使用量を追跡します。
RabbitMQ 管理を有効にするには、次のコマンドを実行します:
$ sudo rabbitmq-plugins enable rabbitmq_management
これで、your_ip:15672 にアクセスして、ブラウザで管理コンソールを開くことができます。
Default rabbitmq user – guest. Default rabbitmq password – guest
CentOS/RHEL での RabbitMQ の管理
RabbitMQ 自動起動を有効にするには、以下を実行する必要があります:
# chkconfig rabbitmq-server on
開始、停止、再起動、およびステータスの確認には、以下のコマンドを使用します:
# start: /sbin/service rabbitmq-server start # stop: /sbin/service rabbitmq-server stop # restart: /sbin/service rabbitmq-server restart # status: /sbin/service rabbitmq-server status
Ubuntu/Debian での RabbitMQ の管理
Ubuntu/Debian で rabbitmq のステータスを開始、停止、再起動、確認するには、以下のコマンドを使用します:
# start: service rabbitmq-server start # stop: service rabbitmq-server stop # restart: service rabbitmq-server restart # status: service rabbitmq-server status
これで、rabbitmq サーバーを使用する準備が整いました!
RabbitMQ 構成
RabbitMQ には標準設定が付属しています。一般に、これらは非常に信頼性が高く、編集する必要はありません。