RabbitMQ 镜像集群 宕机恢复、负载均衡、跨机房多活

RabbitMQ 镜像集群 宕机恢复、负载均衡、跨机房多活,第1张

起因:在实际项目开发过程中,需要使用RabbitMQ来实现消息队列的功能,但仅仅实现功能之后并不能对自己满足,既然学一次,就要更深的了解她,吃一吃架构方面的相关内容,提升自己。

RabbitMQ在镜像集群中,机器其实是平行关系,所有的节点都是互相复制的

场景描述:

A是Master

B是Slave

A正常运行,B宕机了,只需要启动B即可,B就会自动加入集群

A和B都宕机了,只要A在B之前启动就可以了

A和B都宕机了,A启动不起来了,即便是B启动了,有可以B直接启动不了啦

B和C都加入了A为Master的集群,这个时候都需要将B和C从A的集群中forget,B和C启动不起来了

RabbitMQv32版本以后提供了一个离线清除集群节点的命令参数,也就是节点无法启动状态下

HAProxy是一款提供高可用的负载均衡器(之前大家都是使用的Nginx居多,upstream反向代理实现负载均衡非常容易),HAProxy可以基于TCP四层(Lvs也是TCP四层的),>        在Mac电脑本机上安装了一个RabbitMq,并通过web管理界面远程访问。 紧接着在自己搭建的spring boot项目中,整合了RabbitMq,本地启动项目,发现控制台一直报错。。。如下图所示:
 1、安装后的rabbitMq默认的账户:guest,密码:guest。查阅资料了解到这个账户不能用于项目连接rabiitMq-server;之后就创建了一个admin用户。

 2、通过命令方式创建了amdin用户,分配administrator权限,重启rabbitMq服务,紧接着启动项目,结果还是报上面的错误。

 3、明明已经分配了administrator权限了,为什么还是javanetConnectException: Connection refused (Connection refused);

 4、怀疑是不是命令 *** 作有误等原因,紧接着登录rabbitMq web端,通过控制台方式创建admin账户,紧接着分配了administrator权限。
5、重启rabbitMq服务器,然后重启项目,发现还是一样的错误。

6、查看配置,发现yml配置文件中,有一个配置叫做virtualhost,在web控制台上发现也有这么一个配置。
7、配置了一个与项目中映射的一个名称。
8、重新启动项目,启动正常。

RabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据,或者简单地将作业队列以便让分布式服务器进行处理

它现实了AMQP协议,并且遵循Mozilla Public License开源协议,它支持多种语言,可以方便的和spring集成

消息队列使用消息将应用程序连接起来,这些消息通过像RabbitMQ这样的消息代理服务器在应用程序之间路由

AMQP:advanced Message Queuing Protocol(高级消息队列协议)
2004年开发
从一开始就设计成为开发标准,以解决众多的消息队列需求和拓扑结构问题
凭借开放,任何人都可以执行这一标准,针对标准编码的任何人都可以和任意AMQP供应商提供的MQ服务器进行交互

兔子是行动非常迅速的动物而且繁殖起来也非常疯狂

(注:内容整理自《RabbitMQ实战》)


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zz/13506995.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-21
下一篇 2023-08-21

发表评论

登录后才能评论

评论列表(0条)

保存