rabbit 测试机器 rabbit1  rabbit2 rabbit3 

开始独立的节点

rabbit1$ rabbitmq-server -detached
rabbit2$ rabbitmq-server -detached
rabbit3$ rabbitmq-server -detached

在每台机器上查看集群状态,每台应该都是独立模式

rabbitmqctl cluster_status

创建集群

把三个节点放到一个集群里面,以rabbit1为主

rabbit2$ rabbitmqctl stop_app
rabbit2$ rabbitmqctl join_cluster --ram rabbit@rabbit1
rabbit2$ rabbitmqctl start_app
rabbit3$ rabbitmqctl stop_app
rabbit3$ rabbitmqctl join_cluster rabbit@rabbit1
rabbit3$ rabbitmqctl start_app

在rabbit1 上查看状态

rabbit1$ rabbitmqctl cluster_statu


改变节点类型

rabbit2$ rabbitmqctl stop_app
rabbit2$ rabbitmqctl change_cluster_node_type disc
rabbit2$ rabbitmqctl start_app
rabbit3$ rabbitmqctl change_cluster_node_type ram
rabbit3$ rabbitmqctl start_app


重新启动集群节点


rabbit1$ rabbitmqctl stop
rabbit3$ rabbitmqctl stop
rabbit1$ rabbitmq-server -detached
rabbit3$ rabbitmq-server -detached

至少有一个磁盘节点,以防止数据丢失

最后一个节点关闭前要使第一个节点在线,如果没有这样操作,可以使用forget_cluster_node 命令



拆除一个集群


rabbit3$ rabbitmqctl stop_app
rabbit3$ rabbitmqctl reset
rabbit3$ rabbitmqctl start_app

远程删除一个节点

rabbit1$ rabbitmqctl stop_app
rabbit2$ rabbitmqctl forget_cluster_node rabbit@rabbit1
被删除的节点操作
rabbit1$ rabbitmqctl reset
rabbit1$ rabbitmqctl start_app


自动配置集群


配置文件:rabbitmq.config
[
  ...
  {rabbit, [
        ...
        {cluster_nodes, {['rabbit@rabbit1', 'rabbit@rabbit2', 'rabbit@rabbit3'], disc}},
        ...
  ]},
  ...
].

rabbit1$ rabbitmq-server -detached
rabbit2$ rabbitmq-server -detached
rabbit3$ rabbitmq-server -detached



参考文档:http://www.rabbitmq.com/clustering.html