rabbitmq集群搭建_rabbitmq创建队列

rabbitmq集群搭建_rabbitmq创建队列一普通集群以如下两台服务器为例ip:172.16.9.8hostname:rabbitmq1(master)ip:172.16.9.9hostname:rabbitmq2(slave)1.修改host文件编辑/etc/hosts文件,添加172.16.9.8rabbitmq1172.16.9.9rabbitmq22.复制cookie内容打开文件然后需要先把172.16.9.8服务器的/var/lib/rabbitmq/.erla…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

一 普通集群

以如下两台服务器为例

ip: 172.16.9.8 hostname: rabbitmq1 (master)

ip: 172.16.9.9 hostname: rabbitmq2 (slave)

1. 修改host文件

编辑/etc/hosts文件,添加

172.16.9.8   rabbitmq1 
172.16.9.9   rabbitmq2
两台机器分别设置hostname
hostnamectl set-hostname rabbitmq1(对应的名字)

2. 复制cookie内容

打开文件然后需要先把172.16.9.8 服务器的 /var/lib/rabbitmq/.erlang.cookie中的内容复制到172.16.9.9上

cd /var/lib/rabbimq

scp .erlang.cookie root@172.16.9.9:/var/lib/rabbitmq/.erlang.cookie

赋予权限

chmod 600 .erlang.cookie

chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie

3. 服务器配置

主服务执行:

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app

如果启动不成功,因为修改了hosts文件,可以重启试试

节点服务执行:

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbitmq1  (--ram表示内存节点)
rabbitmqctl start_app

 和主服务配置脚本的唯一区别是多了第三行的内容,其中–ram指的是作为内存节点,要是想做为磁盘节点的话,就不用加–ram这个参数了

4.只要在节点列表里包含了本身,它就成为一个磁盘节点。在RabbitMQ集群里,必须至少有一个磁盘节点存在。

现在先执行主节点上的脚本,等待执行完成之后再执行服务节点的脚本,顺序不要错了

执行完之后分别在每台机器上查看节点状态

rabbitmqctl cluster_status

往任意一台集群节点里写入消息队列,会复制到另一个节点上。

对于Queue来说,消息实体只存在于其中一个节点,A、B两个节点仅有相同的元数据,即队列结构。当消息进入A节点的Queue中后,consumer从B节点拉取时,RabbitMQ会临时在A、B间进行消息传输,把A中的消息实体取出并经过B发送给consumer。

所以consumer应尽量连接每一个节点,从中取消息。即对于同一个逻辑队列,要在多个节点建立物理Queue。否则无论consumer连A或B,出口总在A,会产生瓶颈。

该模式存在一个问题就是当A节点故障后,B节点无法取到A节点中还未消费的消息实体。如果做了消息持久化,那么得等A节点恢复,然后才可被消费;如果没有持久化的话,然后就没有然后了……

二 设置镜像队列策略

上面配置RabbitMQ默认集群模式,并不能保证队列的高可用性,尽管交换机、绑定这些可以复制到集群里的任何一个节点,但是队列内容不会复制,虽然该模式解决一部分节点压力,但队列节点宕机直接导致该队列无法使用,只能等待重启,所以要想在队列节点宕机或故障也能正常使用,就要复制队列内容到集群里的每个节点,需要创建镜像队列并使用负载均衡器。

在普通集群的中任意节点启用策略,策略会自动同步到集群节点

rabbitmqctl set_policy -p vhost名称  ha-all "^" '{"ha-mode":"all"}'

这行命令在名称为“/”的vhost创建了一个策略,策略名称为ha-all,策略模式为 all 即复制到所有节点,包含新增节点,策略正则表达式为 “^” 表示所有匹配所有队列名称。

例如rabbitmqctl set_policy -p ewmsinfo ha-all “^message” ‘{“ha-mode”:”all”}’

注意:”^message” 这个规则要根据自己修改,这个是指同步”message”开头的队列名称,配置时使用的应用于所有队列,所以表达式为”^”

set_policy使用方式如下:

set_policy [-p vhostpath] {name} {pattern} {definition} [priority]

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/195140.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • intval()和int()

    intval()和int()

    2021年11月7日
    57
  • sm2和sm4加密算法浅析

    sm2和sm4加密算法浅析sm2和sm4加密算法浅析一:SM2简介:SM2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法,SM2为非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。ECC256位(SM2采用的就是ECC256位的一种)安全强度比RSA2048位高,但运算速度快于RSA。SM2和RSA算法比较SM2性能更优更安全:密码复杂度高、处理速度快、机器性能消耗更小①:加密算法以及流程:输入:需要发送的消息为比特串M,klen为M的比特

    2022年10月6日
    4
  • Circos入门_circor

    Circos入门_circor是那个基于perl的CircosMac/Linux的安装可以参考之前的文章【传送门】Window安装会有点麻烦01官网教程必读内容这不是一个手把手教程,所以如果想解circos的使用,推荐…

    2025年7月14日
    2
  • Vue(10)表单输入绑定v-model「建议收藏」

    Vue(10)表单输入绑定v-model「建议收藏」v-modelv-model指定可以实现表单值与属性的双向绑定。即表单元素中更改了值会自动的更新属性中的值,属性中的值更新了会自动更新表单中的值绑定的属性和事件v-model在内部为不同的输入元

    2022年7月29日
    11
  • cglib实现动态代理_cglib和jdk动态代理

    cglib实现动态代理_cglib和jdk动态代理一、前言  说到动态代理,开发者们第一时间想到的就是JDK动态代理和cglib动态代理。了解Spring的同学应该知道,SpringAOP功能的底层实现,就是使用的这两种动态代理。两者区别JDK的动态代理机制只能代理实现了接口的类,而没有实现接口的类就不能实现JDK的动态代理;cglib动态代理是针对类来实现代理的,它的原理是对指定的目标类生成一个子类,并覆盖其中方法实现增强。使用cglib实现动态代理,完全不受代理类必须实现接口的限制。cglib底层采用ASM字节码生成框架,使用字节码技术生

    2022年10月20日
    2
  • java swing视频教程下载_JAVA Swing 教程

    java swing视频教程下载_JAVA Swing 教程JAVASwing教程,包含所有练习源码和讲解教程!初级界面篇练习01分解颜色练习02画板练习03帧练习04画布练习05密码验证界面练习06对话框练习07滚动条练习08边框练习09单选框图片浏览器练习10卡片布局管理器练习11边界布局管理器练习12进程条练习13列表框和组合框练习14选项卡练习15菜单练习16菜单快捷键练习17模式对话框练习18网格布局管理器练习19复选框练习20单选框练习21…

    2025年9月14日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号