网站域名费,做网站最好要买什么东西,wordpress一键部署,上海 网站平台开发文章目录 前言单机多节点搭建集群创建RabbitMQ节点停止服务并重置将节点加入到集群中查看集群状态宕机 结论 前言
RabbitMQ 作为消息中间件#xff0c;可以与多个生产者和消费者进行绑定#xff0c;但是如何只有一台 RabbitMQ 服务的话#xff0c;那么这个 RabbitMQ 就需要… 文章目录 前言单机多节点搭建集群创建RabbitMQ节点停止服务并重置将节点加入到集群中查看集群状态宕机 结论 前言
RabbitMQ 作为消息中间件可以与多个生产者和消费者进行绑定但是如何只有一台 RabbitMQ 服务的话那么这个 RabbitMQ 就需要处理很多的请求如果该 RabbitMQ 节点挂掉了之后那么所有与之相关的操作都无法进行了。我们可以升级 RabbitMQ 的硬件设施提升 RabbitMQ 的处理能力但是硬件的升级成本是很高的比较好的解决方法就是搭建 RabbitMQ 集群。
单机多节点搭建集群
一般的集群是指在多个不同的主机上搭建为什么我这里选择单机多节点搭建集群呢说白了就是我没有那个经济实力我手上没有那么多的云服务器但是呢知道了单机多节点的搭建那么多机集群的搭建也就很简单了步骤基本上是相同的。
我们先来看看主机上已经存在的 RabbitMQ 服务rabbimqctl status 可以看到我当前主机上已经存在一个 RabbitMQ 服务他绑定的端口是 5672、15672和25672这里绑定的端口的作用是啥就不具体介绍了要是不知道的可以看看前面的文章。
创建RabbitMQ节点
然后我们搭建的单机多节点就是一主两从的情况所以我们需要再启动两个 RabbitMQ 节点
Node NameAMQP协议端口号Web管理页面端口rabbit2567315673rabbit3567415674
RABBITMQ_NODE_PORT5673 RABBITMQ_SERVER_START_ARGS-rabbitmq_management
listener [{port,15673}] RABBITMQ_NODENAMErabbit2 rabbitmq-server -detachedRABBITMQ_NODE_PORT5674 RABBITMQ_SERVER_START_ARGS-rabbitmq_management
listener [{port,15674}] RABBITMQ_NODENAMErabbit3 rabbitmq-server -detachedRABBITMQ_NODE_PORT 指定启动的 RabbitMQ 的端口RABBITMQ_SERVER_START_ARGS 是 RabbitMQ 的配置选项rabbitmq_management listener 指定管理页面绑定的端口RABBITMQ_NODENAME 是节点的名称。
那么如何检查我们新的 RabbitMQ 启动成功了呢我们可以打开云服务器的 15673和15674端口然后看看管理页面是否能打开 这时我们一台主机上就存在三个 RabbitMQ 节点了接下来我们就将这三个几点加入到一个集群中。
停止服务并重置
在添加集群之前我们需要停止 RabbitMQ 服务并对其进行重置
rabbitmqctl -n rabbit2 stop_app
rabbitmqctl -n rabbit2 resetrabbitmqctl -n rabbit3 stop_app
rabbitmqctl -n rabbit3 reset将节点加入到集群中
我们将最先启动的 rabbit 节点作为主节点然后 rabbit2 和 rabbit3 作为从节点
rabbitmqctl -n rabbit2 join_cluster rabbitiZ2ze5bzkbeuwwqowjzo27Zrabbitmqctl -n rabbit3 join_cluster rabbitiZ2ze5bzkbeuwwqowjzo27ZrabbitiZ2ze5bzkbeuwwqowjzo27Z 是我们主节点的节点名称可以通过 rabbitmqctl status 查看节点名称 我们输入命令的时候可能会出现警告但是我们现在呢就先不管 将节点加入到集群之后呢我们重新启动 rabbit2 和 rabbit3
rabbitmqctl -n rabbit2 start_apprabbitmqctl -n rabbit3 start_app查看集群状态
RabbitMQ 节点加入集群之后我们通过 rabbitmqctl cluster_status -n rabbit 来查看集群的状态 然后登录到管理页面也是可以查看集群状态的 宕机
我们分别用 rabbit 和 rabbit2 节点来添加两个队列 用一个节点添加的队列然后观察其他节点可以发现在其他的节点中也存在这些创建的队列 然后我们向队列中发送消息 然后在其他的节点中也是可以看到这个发送的消息 然后我们关闭主节点 rabbit rabbitmqctl -n rabbit stop_app
从其他节点的管理平台可以看到我们的 rabbit 节点是挂掉了。
并且我们的 testQueue 是由 rabbit 节点创建的当 rabbit 节点挂掉之后testQueue 中的消息在其他节点中也不存在了而不是由 rabbit 节点创建的队列则还存在 也就是说由哪个节点创建的队列队列中的消息只会在这个节点中存在那么如何解决这个问题呢这就需要引入我们的 “仲裁队列” 了。
结论
感谢各位朋友们能够看到结尾找不到工作某直聘已读不回不妨看看这里超快回复助力每一位程序员早日找到理想的工作