普通集群模式:数据只存在于A节点, BC节点仅有相同的元数据即队列结构,当用户向C节点提出消费请求时,Rabbitmq会临时在AC之间进行消息传输,把A节点中的消息实体取出经过c发送给消费者consumer
consumer可以连接任何一个节点获取消息,缺点是,当A节点故障时,其他节点就无法取到还未消费的实体消息 (有用户消费请求的时候才会向没有数据的节点传输数据)
镜像集群模式: (有数据写入的时候就会向其他节点传输数据)
3台及以上机器的集群, 集群中可用服务器数量必须大于一半,等于一半不可以,双数节点宕机一台可能会脑裂,所以推荐奇数节点数
内存节点:数据只保存在内存
磁盘节点:数据保存在磁盘和内存
内存节点无访问速度更快,磁盘IO相对较慢可作为数据备份使用。所以集群中有1台磁盘节点足够。安全起见,集群中节点不可以全部都用内存节点,否则停服否数据将全部丢失
各节点配置/etc/hosts 中ip和主机名信息,配好后互ping测试
/var/lib/rabbitmq/.erlang.cookie 集群中这个文件内容必须一致
systemctl enable rabbitmq-server
systemctl start rabbitmq-server
rabbitmqctl cluster_status 集群节点状态
rabbitmqctl stop_app 停止app服务 start_app启动app服务
rabbitmqctl reset 置空,清空元数据
rabbitmqctl join_cluster rabbit@mq-server3 --ram 将主机加入到当前机器所在的集群中,并成为内存节点。不加--ram默认是磁盘节点
rabbitmqctl add_user xiaoming 123456
rabbitmqctl set_user_tags xiaoming administrator
在一个节点上创建的用户,在别的节点上也可以登录,集群建立成功数据就是同步的
curl -s -u guest:guest http://localhost:15672/api/whoami
curl -s -u guest:guest http://localhost:15672/api/users