2013年5月8日水曜日

rabbitmq clusterやってみた

■概要
rabbitmqでclusterを構成を組んだ上でキューの作成やメッセージの送受信をしてみました

■rabbitmqインストール
以下の記事を参考に2台のrabbitmqサーバを作成します
chefによるインストールを紹介していますが、普通にchefじゃなくても大丈夫です
http://kakakikikeke.blogspot.com/2013/05/rabbitmq.html

■cluster構成作成
・スレーブ側操作
rabbitmqctl stop_app
rabbitmqctl join_cluster --ram rabbit@マスタ側サーバIP
rabbitmqctl start_app
・マスタ側操作
rabbitmqctl cluster_status

クラスタとして追加したサーバはRAMモードとDISKモードというキューの保存方法が異なる形式を選択することができます
DISKモードに変更したい場合は以下の操作をスレーブ側で実行します
rabbitmqctl stop_app
rabbitmqctl change_cluster_node_type disc
rabbitmqctl start_app

クラスタから外したいときは以下の操作をスレーブ側で実行します
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app

■キュー作成とメッセージのやりとり
※guestユーザでvhost「/」に対して実行した場合です
rabbitmqadmin --host サーバのIPアドレス declare queue name=testqueue001
rabbitmqadmin --host サーバのIPアドレス list queues
rabbitmqadmin --host サーバのIPアドレス publish routing_key=testqueue001 payload="test message 001" exchange=amq.default
rabbitmqadmin --host サーバのIPアドレス get queue=testqueue001 requeue=false

上記実施後にマスタサーバとスレーブサーバ両方でキューの確認をすると両方のサーバに情報が反映されていることがわかります

■注意事項
The nodes provided are either offline or not running
上記のエラーが出るときはerlang.cookiesという設定ファイルがサーバ同志で共有されてない場合にでます
/var/lib/rabbitmq/.erlang.cookie
上記を共有したあとにrabbitmqを再起動すると直ります

0 件のコメント:

コメントを投稿