仅以此文记录哪些被踩过的坑...


试验环境:

  - 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

在两台机器上面分别执行如下命令:

service rabbitmq-server start


6、编辑.erlang.cookie文件

确保所有rabbitmq集群节点上的文件.erlang.cookie 中的内容一致。

可以复制其中一个节点上面的内容,到其他各个节点上的所有.erlang.cookie 文件。


.erlang.cookie文件所在目录如下:

$HOME/.erlang.cookie
/var/lib/rabbitmq/.erlang.cookie


以上两个路径中的.erlang.cookie都要修改。


如果出现权限问题,请接着操作:

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主节点(CentOS67-01),启动rabbitmq

service rabbitmq-server start

注意:hsots文件修改后以及.erlang.cookie文件修改后,都要重启下rabbitmq(所有节点)

service rabbitmq-server restart


8、将节点demo1加入集群

[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,<<"rabbit@CentOS67-01">>},
 {partitions,[]}]


 

如果节点加入集群失败,则按如下顺序进行操作

[root@demo1 ~]# rabbitmqctl stop_app
Stopping node rabbit@demo1 ...
[root@demo1 ~]# rabbitmqctl reset
[root@demo1 ~]# rabbitmqctl join_cluster --ram rabbit@CentOS67-01


如果仍然失败,请检查上述第六步骤是否操作过了,确保各个节点的.erlang.cookie 文件内容一致。

另:确保服务器的防火墙和selinux关闭。


如果都检查过了还不行,请留言交流...



接下来整理rabbitmq集群使用以及集群节点的管理相关文档...