読者です 読者をやめる 読者になる 読者になる

heki1224の適当な日記

技術知識を忘れないように書き留めておくブログ

RabbitMQ 3.0.0でのクラスタリング設定

プログラム RabbitMQ

つい数日前、RabbitMQ 3.0.0がリリースされました。

リリースノート
http://www.rabbitmq.com/release-notes/README-3.0.0.txt
InfoQの紹介記事
RabbitMQがSTOMP,MQTTをより単純に、更に良くサポート

これから仕事で使おうと思っているところなので
クラスタリングの方法などまとめておこうと思います。

0. 準備

今回は3ノードでRabbitMQクラスタリングを組んでみます。
ノード各マシンのIPとホスト名は以下の通りです。

IP ホスト名
192.168.0.10 dev-rabbitmq01
192.168.0.11 dev-rabbitmq02
192.168.0.12 dev-rabbitmq03

OSはCentOS 6.2 x86_64です。
ミドルウェアはErlang R14B-04.1.el6を使います。

早速設定していきます。

1. RabbitMQのインストール

yum install erlang -y
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.0.0/rabbitmq-server-3.0.0-1.noarch.rpm
rpm -ivh rabbitmq-server-3.0.0-1.noarch.rpm

2. 起動確認

/etc/init.d/rabbitmq-server start
/etc/init.d/rabbitmq-server stop

3. クッキーのコピー

クラスタ内の各ノードは同一のクッキーを使用する必要があるので、下記のファイルを各ノードにコピーしていきます。

/var/lib/rabbitmq/.erlang.cookie

4. hosts設定

各ノードに/etc/hostsの設定をします。

vim /etc/hosts
192.168.0.10 dev-rabbitmq01
192.168.0.11 dev-rabbitmq02
192.168.0.12 dev-rabbitmq03

5. 全ノード起動

ここまでで一度全てのノードを起動します。

/etc/init.d/rabbitmq-server start

6. クラスタリング構成

クラスタを組みます。
dev-rabbitmq02,dev-rabbitmq03の2ノードで以下のコマンドを実行します。

/usr/sbin/rabbitmqctl cluster_status
/usr/sbin/rabbitmqctl stop_app
/usr/sbin/rabbitmqctl reset
/usr/sbin/rabbitmqctl join_cluster rabbit@dev-rabbitmq01
/usr/sbin/rabbitmqctl start_app

7. クラスタリング確認

クラスタリングされているかどうかを確認します。
dev-rabbitmq01で以下のコマンドを実行します。

/usr/sbin/rabbitmqctl cluster_status
Cluster status of node 'rabbit@dev-rabbitmq01' ...
[{nodes,[{disc,['rabbit@dev-rabbitmq01','rabbit@dev-rabbitmq02',
                'rabbit@dev-rabbitmq03']}]},
 {running_nodes,['rabbit@dev-rabbitmq03','rabbit@dev-rabbitmq02',
                 'rabbit@dev-rabbitmq01']},
 {partitions,[]}]
...done.

※RabbitMQには2種類のノードがあります。
discノードとramノードです。(デフォルトはdisc)
クラスタリングやキューの定義情報をディスクに書き込んでいるか
メモリだけに持っているかの違いになります。
discノードはクラスタに最低1台必要です。
またノードの増減は全てのdiscノードがオンラインでないと行えません。

8. rabbitmq management pluginのインストール

RabbitMQの各種情報を見るため、rabbitmq management pluginを全てのノードにインストールします。

/usr/sbin/rabbitmq-plugins enable rabbitmq_management
/etc/init.d/rabbitmq-server restart

9. プラグイン管理画面の確認

管理画面は以下のURLからアクセスできます。
http://192.168.0.10:15672/
※初期IDとパスワードはguestです。

ざっとこんな感じです。

注意点

公式のドキュメントにもあるのですが、RabbitMQ 2.8.7とはクラスタリングに関連するコマンドが変更になっています。
僕も最初に設定したとき前回のスクリプトが使えなくて、ちとびっくりしました。
あとMirrored Queueの設定も変更されています。
こちらについては別の記事で書きます。