我是靠谱客的博主 缓慢天空,最近开发中收集的这篇文章主要介绍单机docker搭建rabbitmq集群RabbitMQ的主要优点:RabbitMQ 实战端口号作用使用docker 搭建RabbitMQ集群节点信息:认证方式:如何列出支持的功能标志,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Docker-Hub地址

RabbitMQ的主要优点:

1.erLang语言天生支持高并发
2.MQ的环境搭建比较简便
3.有着较好的消息确认机制以及消息的持久化
4.高度可定制的路由策略
5.页面管理方便,社区活跃度较高

RabbitMQ 实战

几个重要概念:
▷ Broker: 简单来说就是消息队列服务器实体。
▷ Exchange: 消息交换机,它指定消息按什么规则,路由到哪个队列。
▷ Queue: 消息队列载体,每个消息都会被投入到一个或多个队列。
▷ Binding: 绑定,它的作用就是把exchange和queue按照路由规则绑定起来。
▷ Routing Key:路由关键字,exchange根据这个关键字进行消息投递。
▷ vhost: 虚拟主机,一个broker里可以开设多个vhost,用作不同用户的权限分离。
▷ producer: 消息生产者,就是投递消息的程序。
▷ consumer: 消息消费者,就是接受消息的程序。
▷ channel: 消息通道,在客户端的每个连接里,可建立多个channel,每个channel代表一个会话任务。

使用过程:

1.客户端连接到消息队列服务器,打开一个channel。
2.客户端声明一个exchange,并设置相关属性。
3.客户端声明一个queue,并设置相关属性。
4.客户端使用routing key,在exchange和queue之间建立好绑定关系。
5.客户端投递消息到exchange。
6.exchange接收到消息后,就根据消息的key和已经设置的binding,进行消息路由,将消息投递到一个或多个队列里。

端口号作用

默认的端口15672:rabbitmq管理平台端口号。 默认的端口5672:rabbitmq消息中间内部通讯的端口。 默认的端口号25672:rabbitmq集群的端口号

rabbitmq-plugins enable rabbitmq_management 	#启动管理插件,下次无需再手动启动该插件 
rabbitmqctl list_users					    	#查看当前有多少用户
rabbitmqctl add_user zhao 123456 				#设置用户账号和密码 
rabbitmqctl set_user_tags zhao administrator 	#设置权限

使用docker 搭建RabbitMQ集群

RabbitMQ集群中节点包含内存节点RAM、磁盘节点(Disk,消息持久化)、集群中至少有一个Disk节点。集群分为两种集群模式普通模式 和 镜像模式。

普通模式(默认)

对于普通模式,集群中各节点有相同的队列结构,但消息只会存在于集群中的一个节点,对于消费者来说,若消息进入A节点的Queue中,当从B节点拉取时,RabbitMQ会将消息从A中取出,并经过B发送给消费者。
应用场景:该模式更适合于消息无需持久化的场景,如日志队列。当队列非持久化,且创建该队列的节点宕机,客户端才可以重连集群其他节点,并重新创建队列。若为持久化只能等故障节点恢复。
缺点:无法解决单点故障问题。

镜像模式

与普通模式不同之处时消息实体会主动在镜像节点见同步,而不是在取数据时临时拉取,高可用;该模式下 镜像队列(mirror queue)有一套选举算法,即1个master、n个slaver。 生产者、消费者的请求都会转至master。
应用场景:可靠性要求较高场合,如下单、库存队列。
缺点:若镜像队列过多,且消息体量大,集群内部网络带宽将会被此种同步通讯所消耗。

节点信息:

RAM node:内存节点将所有的队列、交换机、绑定、用户、权限和 vhost 的元数据定义存储在内存中。好处是可以使得像交换机和队列声明等操作更加的快速
Disk node:将元数据存储在磁盘中,单节点系统只允许磁盘类型的节点,防止重启 RabbitMQ 的时候,丢失系统的配置信息。
RabbitMQ 要求在集群中至少有一个磁盘节点,所有其他节点可以是内存节点。当节点加入或者离开集群时,必须要将该变更通知到至少一个磁盘节点。如果集群中唯一的一个磁盘节点崩溃的话,集群仍然可以保持运行,但是无法进行其他操作(增删改查),直到节点恢复。
解决方案:设置两个磁盘节点,至少有一个是可用的,可以保存元数据的更改。

认证方式:

通过 Erlang Cookie 相当于共享秘钥的概念,长度任意,只要所有节点都一致即可。rabbitmq server在启动的时候,erlang VM会自动创建一个随机的cookie文件。cookie文件的位置: /var/lib/rabbitmq/.erlang.cookie 或者/root/.erlang.cookie。我们的为保证cookie的完全一致,采用从一个节点copy的方式,实现各个节点的cookie文件一致。注意修改文件的权限:600

单机部署

环境搭建(创建三个RabbitMQ节点)

mkdir -p ~/data/rabbitmq
cd ~/data/rabbitmq
mkdir rabbitmq01 rabbitmq02 rabbitmq03
docker network create --subnet 172.18.0.1/16 --gateway 172.18.0.1 mq-net

创建rabbitmq01节点容器

docker run -d --hostname rabbitmq01 --name rabbitmq01 
-v /data/rabbitmq/rabbitmq01:/var/lib/rabbitmq 
-p 15672:15672 -p 5672:5672 
-e RABBITMQ_ERLANG_COOKIE=rabbitcookie 
--net mq-net 
rabbitmq:management

创建rabbitmq02节点容器

docker run -d --hostname rabbitmq01 --name rabbitmq02 
-v /data/rabbitmq/rabbitmq02:/var/lib/rabbitmq 
-p 15673:15672  -p 5673:5672 
-e RABBITMQ_ERLANG_COOKIE=rabbitcookie 
--net mq-net 
--link rabbitmq01:rabbitmq01  rabbitmq:management

创建rabbitmq03节点容器

docker run -d --hostname rabbitmq03 --name rabbitmq03 
-v /data/rabbitmq/rabbitmq03:/var/lib/rabbitmq  
-p 15674:15672 -p 5674:5672 -e RABBITMQ_ERLANG_COOKIE=rabbitcookie 
--net mq-net 
--link rabbitmq01:rabbitmq01 --link rabbitmq02:rabbitmq02 rabbitmq:management

注意:–hostname 设置容器主机名,RABBITMQ_ERLANG_COOKIE 节点认证作用,集群部署需要同步该值,且值必须相同。多个容器之间使用“–link”连接,此属性不能少;
安装好后访问测试,使用http://192.168.235.14:15672 进行访问了,默认账号密码是guest/guest。

加入普通模式集群

1.进入rabbitmq01容器,重新初始化一下,如果是新安装则reset可以忽略重置。

docker exec -it rabbitmq01 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
exit

2.进入rabbitmq02容器,重新初始化一下,将02节点加入到集群中

docker exec -it rabbitmq02 bash
rabbitmqctl stop_app
rabbitmqctl join_cluster --ram rabbit@rabbitmq01    #参数“--ram”表示设置为内存节点,忽略该参数默认为磁盘节点。
rabbitmqctl start_app
exit

3.进入rabbitmq03容器,重新初始化一下,将03节点加入到集群中

docker exec -it rabbitmq03 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbitmq01
rabbitmqctl start_app
exit

如何列出支持的功能标志

当节点第一次启动时,默认情况下所有支持的功能标志都是启用的。当一个节点升级到较新版本的RabbitMQ时,如果它是一个单独的节点,默认情况下会启用新功能标志,如果它属于一个集群,默认情况下会保持禁用状态。
要列出功能标志,请使用

rabbitmqctl list_feature_flags

为了提高表格的可读性,请切换到pretty_table格式化程序:

rabbitmqctl -q --formatter pretty_table list_feature_flags 
  name state provided_by desc doc_url

这将生成如下所示的表格:
在这里插入图片描述
如上例所示,list_feature_flags命令接受要显示的列列表。可用的列有:

name: 			功能标志的名称
state: 			启用或禁用(如果功能标记已启用或禁用),不支持(如果群集中的一个或多个节点不知道此功能标记,因此无法启用)
provided_by: 	提供特性标志的RabbitMQ组件或插件
desc: 			功能标志的描述
doc_url: 		了解有关功能标志的更多信息的网页的URL
stability: 		指示功能标志是稳定的还是实验性的

What I’m saying is never wait!

最后

以上就是缓慢天空为你收集整理的单机docker搭建rabbitmq集群RabbitMQ的主要优点:RabbitMQ 实战端口号作用使用docker 搭建RabbitMQ集群节点信息:认证方式:如何列出支持的功能标志的全部内容,希望文章能够帮你解决单机docker搭建rabbitmq集群RabbitMQ的主要优点:RabbitMQ 实战端口号作用使用docker 搭建RabbitMQ集群节点信息:认证方式:如何列出支持的功能标志所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部