radditmq镜像问题

2019-11-18  本文已影响0人  君子愁

1.做了镜像,那么一个队列,就有master队列和slave队列,当客户端连接slave的时候,向slave发送创建信息或者消费信息的时候,都是发送给slave,然后slave发送给master,master处理完后,把结果交给slave,然后slave也执行,然后返回给客户端。其实都是master在执行,然后返回给slave。

2. kill  -9  master的pid  ,这样突然down掉master,此时slave会切换为master。如果是正常  stop或者shutdown  master的时候,slave不会切换为master的。

3.在master创建queues的时候,这些队列都是主队列来的。

通过图片,箭头处表示这个队列在哪个结点是主队列。

4.如果镜像的命令如下,那么如果有一个结点挂了,那么需要手动同步队列信息

rabbitmqctl set_policy -p / ha-allqueue"^" '{"ha-mode":"all"}'

通过上面的命令,启动的镜像,如果master或者slave挂了,从新启动后,队列的新消息是不会同步给他们的,需要手动同步

rabbitmqctl sync_queue ab   #ab为队列名字

如下图,红色框里面的+1表示,我们停止了slave结点,然后又启动了,但是此时不会同步队列信息过去给slave

rabbitmqctl set_policy -p / ha-all-queue "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'

通过把ha-sync-mode设置为automatic,当slave或者其他结点挂了,从新启动,那么队列信息也会自动同步过去。如下图:

5.用负载均衡在rabbit上,进行负载均衡,其实这个并不起到负载均衡的作用。因为负载到不通的物理主机上,比如负载到slave结点,但是命令还是salve会发送给master处理,然后再同步给slave的。所以起不到负载均衡的作用,全部压力还是给了master。

6.如果一个结点执行了  rabbitmqctl reset  ,那么这些结点的所有信息全部都被清掉,比如交换机,队列,账号等这些,都被清除掉了。

上一篇下一篇

猜你喜欢

热点阅读