docker中怎么搭建RabbitMQ集群


本篇文章为大家展示了docker中怎么搭建RabbitMQ集群,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。RabbitMQ集群中节点包含内存节点(RAM)、磁盘节点(Disk,消息持久化)、集群中至少有一个Disk节点。集群分为两种集群模式普通模式镜像模式普通模式(默认)对于普通模式,集群中各节点有相同的队列结构,但消息只会存在于集群中的一个节点,对于消费者来说,若消息进入A节点的Queue中,当从B节点拉取时,RabbitMQ会将消息从A中取出,并经过B发送给消费者。**应用场景:**该模式更适合于消息无需持久化的场景,如日志队列。当队列非持久化,且创建该队列的节点宕机,客户端才可以重连集群其他节点,并重新创建队列。若为持久化,只能等故障节点恢复。缺点:无法解决单点故障问题。镜像模式与普通模式不同之处时消息实体会主动在镜像节点见同步,而不是在取数据时临时拉取,高可用;该模式下 镜像队列(mirror queue)有一套选举算法,即1个master、n个slaver。 生产者、消费者 香港云主机的请求都会转至master。**应用场景:**可靠性要求较高场合,如下单、库存队列。缺点:若镜像队列过多,且消息体量大,集群内部网络带宽将会被此种同步通讯所消耗。安装好后访问测试,使用http://192.168.0.100:15672 进行访问了,默认账号密码是guest/guest,其中192.168.0.100 是我的宿主机IP。显示还未加入任何集群信息,只能看到我访问的该一个节点信息。设置好之后,使用http://192.168.0.100:15672 进行访问了,默认账号密码是guest/guest,其中192.168.0.100 是我的宿主机IP。启动了3个节点,到此为止,我们已经完成了RabbitMQ普通模式集群的建立,启动了3个节点,1个磁盘节点和2个内存节点。但是如果磁盘节点挂掉后,数据就丢失了。所以我们这个集群方案需要进一步改造为镜像模式集群。镜像队列是Rabbit2.6.0版本带来的一个新功能,允许内建双活冗余选项,与普通队列不同,镜像节点在集群中的其他节点拥有从队列拷贝,一旦主节点不可用,最老的从队列将被选举为新的主队列。**镜像队列的工作原理:**在某种程度上你可以将镜像队列视为,拥有一个隐藏的fanout交换器,它指示者信道将消息分发到从队列上。设置镜像队列命令:“rabbitmqctl set_policy 名称 匹配模式(正则) 镜像定义”, 例如,设置名称为ha的镜像队列,匹配所有名称是amp开头的队列都存储在2个节点上的命令如下:可以看出设置镜像队列,一共有四个参数,每个参数用空格分割。参数一:策略名称,可以随便填,此外我们命名为ha(高可用);参考二:-p / 设置哪个虚拟主机,可以使用rabbitmqctl list_policies -p / 查看vhost 下所有的策略(policies )。参数三:队列名称的匹配规则,使用正则表达式表示;参数四:为镜像队列的主体规则,是json字符串,分为三个属性:ha-mode | ha-params | ha-sync-mode,分别的解释如下:ha-mode:镜像模式,分类:all/exactly/nodes,all存储在所有节点;exactly存储x个节点,节点的个数由ha-params指定;nodes指定存储的节点上名称,通过ha-params指定;ha-params:作为参数,为ha-mode的补充;ha-sync-mode:镜像消息同步方式:automatic(自动),manually(手动);至此rabbitmq集群算是搭建完毕,访问创建一个队列测试一下!如图所示!各位可以自己在docker容器搭建试试。最后大家在生产环境下使用也不用自己搭建,目前市面上阿里云、腾讯云 也提高比较优秀成熟的开箱即用 消息中间件 供大家选择使用,如RocketMQ、Kafka、RabbitMQ;阿里云 消息队列 MQ 消息队列(Message Queue,简称 MQ)是构建分布式互联网应用的基础设施,通过 MQ 实现的松耦合架构设计可以提高系统可用性以及可扩展性,是适用于现代应用的最佳设计方案。如有消息队列 RocketMQ 版 阿里巴巴官方指定消息产品,成熟、稳定、先进的技术体系打造金融级消息服务,感受双十一产品的完美体验。腾讯云消息队列 TDMQ(Tencent Distributed Message Queue,下文中简称TDMQ)是一款基于 Apache 顶级开源项目 Pulsar 自研的金融级分布式消息中间件。其计算与存储分离的架构设计,使得它具备极好的云原生和 Serverless 特性,用户按量使用,无需关心底层资源。它拥有原生 Java 、 C++、Python、GO 等多种 API,同时支持 kafka 协议以及 HTTP 协议方式接入,可为分布式应用系统提供异步解耦和削峰填谷的能力,具备互联网应用所需的海量消息堆积、高吞吐、可靠重试等特性。TDMQ 目前已应用在腾讯计费绝大部分场景,包括支付主路径、实时对账、实时监控、大数据实时分析等方面。如出现改过期警告:RABBITMQ_ERLANG_COOKIE env variable support is deprecated and will be REMOVED in a future version. Use the $HOME/.erlang.cookie file or the –erlang-cookie switch instead.有些特殊的情况,比如已经运行了一段时间的几个单个物理机,我们在之前没有设置过相同的Erlang Cookie值,现在我们要把单个的物理机部署成集群,实现我们需要同步Erlang的Cookie值。1.为什么要配置相同的erlang cookie?因为RabbitMQ是用Erlang实现的,Erlang Cookie相当于不同节点之间相互通讯的秘钥,Erlang节点通过交换Erlang Cookie获得认证。2.Erlang Cookie的位置要想知道Erlang Cookie位置,首先要取得RabbitMQ启动日志里面的home dir路径,作为根路径。使用:“docker logs 容器名称”查看,如下图:所以Erlang Cookie的全部路径就是“/var/lib/rabbitmq/.erlang.cookie”。注意:每个人的erlang cookie位置可能不同,一定要查看自己的home dir路径。3.复制Erlang Cookie到其他RabbitMQ节点获取到第一个RabbitMQ的Erlang Cookie之后,只需要把这个文件复制到其他RabbitMQ节点即可。物理机和容器之间复制命令如下:容器复制文件到物理机:docker cp 容器名称:容器目录 物理机目录物理机复制文件到容器:docker cp 物理机目录 容器名称:容器目录设置Erlang Cookie文件权限:“chmod 600 /var/lib/rabbitmq/.erlang.cookie”。上述内容就是docker中怎么搭建RabbitMQ集群,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注开发云行业资讯频道。

相关推荐: 怎么查看和修改Windows实例远程桌面的默认端口

这篇文章主要介绍了怎么查看和修改Windows实例远程桌面的默认端口,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。选择开始>运行,输入regedit,打开注册表编辑器查找HKEY_LOCA…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 08/05 17:04
Next 08/05 17:04

相关推荐