rabbitmq-3.5.7クラスタインストール構成


この文だけで踏まれた穴を記録します...
試験環境:
  - CentOS6.7_x64
  - rabbitmq-3.5.7
一、rabbitmqのインストール
ここではyum方式でrabbitmqをインストールします
1.依存パッケージとコンパイル環境の準備:
yum -y install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc glibc-devel gcc-c++ autoconf kernel-devel m4 ncurses-devel tk tc

2、Erlangのインストール
RabbitMQはErlangベースなので、まずErlang環境を構成する必要があります.
yum -y install erlang

 
3、rabbitmq-serverのインストール
rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc  
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.5.7/rabbitmq-server-3.5.7-1.noarch.rpm
rpm -ivh rabbitmq-server-3.5.7-1.noarch.rpm

または、
yum -y install rabbitmq-server-3.5.7-1.noarch.rpm

次の操作の前に、本機のselinuxとiptablesが閉じていることを確認してください.そうしないと...
4、サーバーホストの構成:
ホストのhostsファイルを編集して、ホスト名とipアドレスの対応関係を書いてください.rabbitmqのすべてのホストは書きます.例:
vim /etc/hosts

192.168.71.128  demo1
192.168.71.134  CentOS67-01

5、rabbitmqを起動する
2台のマシンでそれぞれ次のコマンドを実行します.
service rabbitmq-server start

6、編集erlang.クッキーファイル
すべてのrabbitmqクラスタノード上のファイルを確認します.erlang.クッキーの内容は一致しています.
いずれかのノードの上の内容を、他の各ノードのすべてにコピーすることができる.erlang.クッキーファイル.
.erlang.クッキーファイルのディレクトリは次のとおりです.
$HOME/.erlang.cookie
/var/lib/rabbitmq/.erlang.cookie

以上の2つの経路のうちの.erlang.クッキーはすべて修正しなければなりません.
パーミッションの問題が発生した場合は、次の手順に従います.
chmod 600 $HOME/.erlang.cookie
chmod 600 /var/lib/rabbitmq/.erlang.cookie

次のエラーが発生します.
ERROR: epmd error for host demo1: address (cannot connect to host/port)
* TCP connection succeeded but Erlang distribution failed
Error: unable to connect to nodes [root@iZ23j868sadZ]: nodedown
Error: mnesia_unexpectedly_running
...

このように多くの問題がある.
7.rabbitmqマスターノード(CentOS 67-01)を選択し、rabbitmqを起動する
service rabbitmq-server start

注意:hsotsファイルの修正後および.erlang.クッキーファイルが変更されたら、rabbitmq(すべてのノード)を再起動します.
service rabbitmq-server restart

8、ノードdemo 1をクラスタに加える
[root@demo1 ~]# rabbitmqctl stop_app
Stopping node rabbit@demo1 ...
[root@demo1 ~]# rabbitmqctl reset
[root@demo1 ~]# rabbitmqctl join_cluster --ram rabbit@CentOS67-01        
Clustering node rabbit@demo1 with 'rabbit@CentOS67-01' ...
[root@demo1 ~]# rabbitmqctl cluster_status                               
Cluster status of node rabbit@demo1 ...
[{nodes,[{disc,['rabbit@CentOS67-01']},{ram,[rabbit@demo1]}]}]

プライマリノードでのクラスタ情報の表示
[root@CentOS67-01 ~]# rabbitmqctl cluster_status
Cluster status of node 'rabbit@CentOS67-01' ...
[{nodes,[{disc,['rabbit@CentOS67-01']}]},
 {running_nodes,['rabbit@CentOS67-01']},
 {cluster_name,<>},
 {partitions,[]}]

 
ノードのクラスタへの参加に失敗した場合は、次の手順で操作します.
[root@demo1 ~]# rabbitmqctl stop_app
Stopping node rabbit@demo1 ...
[root@demo1 ~]# rabbitmqctl reset
[root@demo1 ~]# rabbitmqctl join_cluster --ram rabbit@CentOS67-01

それでも失敗する場合は、上記の第6ステップが操作済みかどうかを確認し、各ノードの.erlang.クッキーファイルの内容が一致しています.
また、サーバのファイアウォールとselinuxが閉じていることを確認します.
全部チェックしてもだめなら、伝言を残して交流してください...
次にrabbitmqクラスタの使用およびクラスタノードの管理に関するドキュメントを整理します...