美文网首页
RabbitMQ RabbitMQ镜像集群构建

RabbitMQ RabbitMQ镜像集群构建

作者: dylan丶QAQ | 来源:发表于2020-10-12 11:39 被阅读0次

起因:在实际项目开发过程中,需要使用RabbitMQ来实现消息队列的功能,比如说我发布一个动态之后,需要在30分钟使用默认用户给他点几个赞,之前考虑使用redis的zset对他进行操作,之后决定使用RabbitMQ,专业的事情使用专业的工具来操作。


1. RabbitMQ镜像集群构建

我们再来看一下镜像集群的结构

所有的RabbitMQ都是平行结构,在搭建的过程中有一个加入主机的概念

所有机器的服务和控制台都应该提前安装好

# 单机安装参考上次课程
# 0.给集群中的服务设置hostname和IP的映射
vi /etc/hostname
RMQ146
vi /etc/hosts
192.168.0.146 RMQ146
192.168.0.159 RMQ159
192.168.0.160 RMQ160
# 1.先停掉三个节点的服务
rabbitmqctl stop
# 2.进行文件同步将RMQ146上的文件复制给159和160,相当于服务中的cookie文件
scp /var/lib/rabbitmq/.erlang.cookie root@192.168.0.159:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie root@192.168.0.160:/var/lib/rabbitmq/
# 3.三台机器启动服务
rabbitmq-server -detached
# 4.其他节点加入集群,相当于寻址操作,slave加入master
159: rabbitmqctl stop_app
159: rabbitmqctl join_cluster rabbit@RMQ146
159: rabbitmqctl start_app
160: rabbitmqctl stop_app
160: rabbitmqctl join_cluster rabbit@RMQ146
160: rabbitmqctl start_app
# 5.查看集群的状态,可以在任何节点上执行
rabbitmqctl cluster_status

加入集群的时候以IP方式可能会报错:join_cluster rabbit@192.168.0.146 ,这个地方必须是hostname

还需要一个镜像队列数据复制开通的命令

  • 将集群中所有队列设置成镜像队列,让数据进行互相复制,状态一致

  • master节点上有个一个消息,其他节点上也会同步

# 在集群的任何节点执行都可以
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

将节点设置成内存模式

# 可以停掉服务后进行修稿
# 在需要修改的机器上
rabbitmqctl stop_app
rabbitmqctl change_cluster_node_type ram
rabbitmqctl start_app

如何将节点从集群中去掉

# 先停掉自己,在自己机器上执行
rabbitmqctl stop_app
# 去其他live的机器将刚刚停掉机器移除
rabbitmqctl forget_cluster_node rabbit@RMQ159
# 在加入集群的时候就设置成RAM模式
# 在要加入的节点上执行
rabbitmqctl join_cluster --ram rabbit@RMQ146

2. 集群核心参数配置

  • tcp_listerners : 端口

  • disk_free_limit : 磁盘的低水位线,高于磁盘水平线就不能写入数据了,单位是byte

    • 三台机器如果一台20G,一台15G,一台30G,他们是镜像关系,最小的机器就是磁盘的底线
  • vm_memory_high_watermark : 内存的最高水位线,默认值0.4,为内存总量的40%


不要以为每天把功能完成了就行了,这种思想是要不得的,互勉~!

相关文章

网友评论

      本文标题:RabbitMQ RabbitMQ镜像集群构建

      本文链接:https://www.haomeiwen.com/subject/obuupktx.html