Rabbitmq集群的搭建

jopen 9年前

RabbitMQ集群的搭建

系统环境

三台机器分别为centos6.6 64位

  1. vm61 192.168.1.61
  2. vm62 192.168.1.62
  3. vm63 192.168.1.63

安装

由于RabbitMQ是由erlang写的,所以需要erlang的运行环境,直接使用yum进行安装

yum install erlang 安装完erlang后,安装RabbitMQ

rpm -ivh rabbitmq-server-3.5.3-1.noarch.rpm

三台机器安装完rabbitmq后,首先在vm61上启动rabbitmq

service rabbitmq-server start 然后将vm61上的/var/lib/rabbitmq/.erlang.cookie中的内容复制到vm62和vm63上的/var/lib/rabbitmq/.erlang.cookie文件中即三台服务器必须具有相同的cookie,如果不相同的话,无法搭建集群

配置

查看vm61上的集群的状态

rabbitmqctl cluster_status 得到如下结果

Cluster status of node rabbit@vm61 ... [{nodes,[{disc,[rabbit@vm61]}]}, {running_nodes,[rabbit@vm61]}, {cluster_name,<"rabbit@localhost.localdomain">}, {partitions,[]}]

启动vm62、vm63上的rabbitmq

service rabbitmq-server start 将vm62加入集群

rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl join_cluster rabbit@vm61 rabbitmqctl start_app 将vm63加入集群

rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl join_cluster rabbit@vm61 rabbitmqctl start_app

查看集群的状态

rabbitmqctl cluster_status 得到如下结果

Cluster status of node rabbit@vm61 ... [{nodes,[{disc,[rabbit@vm61,rabbit@vm62,rabbit@vm63]}]}, {running_nodes,[rabbit@vm63,rabbit@vm62,rabbit@vm61]}, {cluster_name,<"rabbit@localhost.localdomain">}, {partitions,[]}] 说明集群创建成功

错误

  1. 如果3台服务器的cookie不一致的话,会导致集群通信失败,无法创建集群
  2. 如果出现如下问题的话

    Clustering node rabbit@vm62 with rabbit@vm61 ... Error: unable to connect to nodes [rabbit@vm61]: nodedown DIAGNOSTICS

    attempted to contact: [rabbit@vm61] rabbit@VMS00386:

    • unable to connect to epmd (port 4369) on VM61: nxdomain (non-existing domain) current node details:

      • node name: 'rabbitmqctl-rabbit@vm62'
      • home dir: /var/lib/rabbitmq
      • cookie hash: 50YO3zK+HJHos0tab1vHjg== 则需要在每台服务器上添加

      vi /etc/hosts vm61 192.168.1.61 vm62 192.168.1.62 vm63 192.168.1.63 即可解决,问题原因为无法解析地址导致的

  3. cluster搭建起来后若在web管理工具中rabbitmq_management的Overview的Nodes部分看到“Node statistics not available”的信息,说明在该节点上web管理插件还未启用。直接在显示提示信息的节点上运行

    rabbitmq-plugins enable rabbitmq_management 即可。