目录集群模式介绍1、普通集群的搭建1.1、普通集群架构介绍1.2、环境准备1.3、集群搭建2、镜像集群的搭建2.1、配置镜像集群的策略集群模式介绍 RabbitMQ集群模式有两种:普
RabbitMQ集群模式有两种:普通模式和镜像模式
架构图
拉取RabbitMQ镜像
Docker pull rabbitmq:3.7-management
创建并运行三个RabbitMQ容器节点,一主两从
命令如下:
#rabbitmqCluster01 主节点
docker run -d --hostname rabbitmq01 --name rabbitmqCluster01 -v `pwd`/rabbitmq01:/var/lib/rabbitmq -p 15672:15672 -p 5672:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitmqCookie' rabbitmq:3.7-management
#rabbitmqCluster02 从节点
docker run -d --hostname rabbitmq02 --name rabbitmqCluster02 -v `pwd`/rabbitmq02:/var/lib/rabbitmq -p 7002:15672 -p 5673:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitmqCookie' --link rabbitmqCluster01:rabbitmq01 rabbitmq:3.7-management
#rabbitmqCluster03 从节点
docker run -d --hostname rabbitmq03 --name rabbitmqCluster03 -v `pwd`/rabbitmq03:/var/lib/rabbitmq -p 8002:15672 -p 5674:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitmqCookie' --link rabbitmqCluster01:rabbitmq01 --link rabbitmqCluster02:rabbitmq02 rabbitmq:3.7-management
-d 后台运行容器;
–name 指定容器名;
-p 指定服务运行的端口(5672:应用访问端口;15672:控制台WEB端口号),控制台端口用于管理rabbitmq,应用访问端口号为rabbitclient等应用访问。;
-v 映射目录或文件,pwd 当前目录;
–hostname 主机名(RabbitMQ的一个重要注意事项是它根据所谓的 “节点名称” 存储数据,默认为主机名);
-e 指定环境变量;(RABBITMQ_DEFAULT_VHOST:默认虚拟机名;RABBITMQ_DEFAULT_USER:默认的用户名;RABBITMQ_DEFAULT_PASS:默认用户名的密码,RABBITMQ_ERLANG_COOKIE 节点认证作用,部署集成时 需要同步该值)
–link 用于容器的链接
查看运行中的三个RabbitMQ容器:
登录 RabbitMQ 控制台界面:
rabbitmq01 节点:
rabbitmq02 节点:
rrabbitmq03 节点
将rabbitmqCluster02 节点和 rabbitmqCluster03 节点加入 rabbitmqCluster01 创建集群
进入 rabbitmqCluster02 节点和 rabbitmqCluster03 节点,在两个节点分别执行一下加入集群的命令:
rabbitmqctl stop_app
rabbitmqctl reset
#rabbitmq01为rabbitmqCluster01容器中的hostname
rabbitmqctl join_cluster --ram rabbit@rabbitmq01
rabbitmqctl start_app
rabbitmqCluster02 节点:
rabbitmq-slave1 节点:
执行完后在任意节点查看集群状态:
rabbitmqctl cluster_status
如果出现如下显示,集群搭建成功:
之后我们在主节点的web管理页可以看到两个从节点了:
镜像集群的结构图
1、使用命令配置策略:
rabbitmqctl set_policy [-p Vhost] [--priority <priority>] [--apply-to <apply-to>] Name Pattern Definition
参数说明:
-p Vhost: 可选参数,针对指定 vhost 下的 queue 进行设置
Name: policy 的名称
Pattern: queue 的匹配模式(正则表达式)
Definition:镜像定义,包括三个部分 ha-mode, ha-params, ha-sync-mode
ha-mode:指明镜像队列的模式,有效值为 all/exactly/nodes
all:表示在集群中所有的节点上进行镜像
exactly:表示在指定个数的节点上进行镜像,节点的个数由 ha-params 指定
nodes:表示在指定的节点上进行镜像,节点名称通过 ha-params 指定
ha-params:作为参数,为 ha-mode 的补充
ha-sync-mode:进行队列中消息的同步方式,有效值为 automatic 和 manual
pririty:可选参数,policy的优先级
在任意节点上添加策略:
#^hello 匹配hello开头的队列
rabbitmqctl set_policy ha-all "^hello" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
在所有节点的以hello开头的队列上都添加了策略:以后当主节点宕机时,hello队列里未消费的消息也不会丢失,会复制到其他节点上。
删除策略:
#rabbitmqctl clear_policy 策略名称
rabbitmqctl clear_policy ha-all
2、管理界面配置策略
登录 rabbitmq 管理页面 ——> Admin ——> Policies ——> Add / update a policy
name:策略名称
Pattern:^
匹配符,只有一个^
代表匹配所有。^
message指同步“message”开头的队列名称
Definition:ha-mode=all 为匹配类型,分为3种模式:all(表示所有的queue)
Priority:优先级,首先根据priority
排序,值越大的优先级越高;相同priority
则根据创建时间排序,越晚创建的优先级越高。
Operator Policy 和 User Policy 的区别:
到此这篇关于Docker搭建RabbitMQ集群的方法步骤的文章就介绍到这了,更多相关Docker搭建RabbitMQ集群内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: Docker搭建RabbitMQ集群的方法步骤
本文链接: https://www.lsjlt.com/news/162676.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-11
2024-05-11
2024-05-10
2024-05-07
2024-04-30
2024-04-30
2024-04-30
2024-04-29
2024-04-29
2024-04-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0