热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Docker搭建RabbitMQ集群(镜像模式)

一、创建桥接网络



一、创建桥接网络

docker network create rabbitmq_net

二、拉取镜像

docker pull rabbitmq
docker pull haproxy
#查看镜像
docker images rabbitmq
docker images haproxy

三、配置主机名

vi /etc/hosts
192.168.1.20 rabbitmq01
192.168.1.20 rabbitmq02
192.168.1.20 rabbitmq03

测试主机名:
ping rabbitmq01

四、创建容器


docker run -d --name=rabbitmq01 -p 5673:5672 -p 15673:15672 -e RABBITMQ_NODENAME=rabbitmq01 -e RABBITMQ_ERLANG_COOKIE='meetyou' -h rabbitmq01 -e RABBITMQ_DEFAULT_USER=meetyou -e RABBITMQ_DEFAULT_PASS=2019Meetyou --net=rabbitmq_net rabbitmq:latest
docker run -d --name=rabbitmq02 -p 5674:5672 -p 15674:15672 -e RABBITMQ_NODENAME=rabbitmq02 -e RABBITMQ_ERLANG_COOKIE='meetyou' -h rabbitmq02 -e RABBITMQ_DEFAULT_USER=meetyou -e RABBITMQ_DEFAULT_PASS=2019Meetyou --net=rabbitmq_net rabbitmq:latest
docker run -d --name=rabbitmq03 -p 5675:5672 -p 15675:15672 -e RABBITMQ_NODENAME=rabbitmq03 -e RABBITMQ_ERLANG_COOKIE='meetyou' -h rabbitmq03 -e RABBITMQ_DEFAULT_USER=meetyou -e RABBITMQ_DEFAULT_PASS=2019Meetyou --net=rabbitmq_net rabbitmq:latest

  • RABBITMQ_ERLANG_COOKIE:通过Erlang COOKIE,相当于共享秘钥的概念,长度任意,只要所有容器都一致即可。
  • -h: 设置容器hostname名称
  • –net: 设置所属网络

进入容器,启动管理页面

docker exec -it rabbitmq01 /bin/bash
rabbitmq-plugins enable rabbitmq_management
exit
docker exec -it rabbitmq02 /bin/bash
rabbitmq-plugins enable rabbitmq_management
exit
docker exec -it rabbitmq03 /bin/bash
rabbitmq-plugins enable rabbitmq_management
exit

访问MQ地址测试:

http://localhost:15673
http://localhost:15674
http://localhost:15675

五、salve加入集群操作


(注意做这个步骤的时候:需要配置/etc/hosts必须相互能够寻地到 我们已通过-h指定hostname)rabbitmq02、rabbitmq03容器(docker exec -it 容器id /bin/bash),执行一下:

rabbitmqctl stop_app
rabbitmqctl join_cluster --ram rabbitmq01@rabbitmq01
//(--ram:内存存储方式,默认磁盘存储)
rabbitmqctl start_app

移动节点
rabbitmqctl forget_cluster_node rabbitmq02@rabbitmq02

Removing node rabbitmq02@rabbitmq02 from cluster …


六、配置镜像队列

//设置镜像队列策略(在任意一个节点上执行)
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

*将所有队列设置为镜像队列,即队列会被同步复制到各个节点,RabbitMQ高可用集群就已经搭建好了,我们可以重启服务,查看队列是否在从节点同步。

查询集群状态

rabbitmqctl cluster_status

更改节点类型(内存型或磁盘型)


rabbitmqctl stop_app
#磁盘存储
rabbitmqctl change_cluster_node_type disc
#内存存储
rabbitmqctl change_cluster_node_type ram
rabbitmqctl start_app


推荐阅读
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • ThinkPHP模板中函数调用的开发技巧与实践 ... [详细]
  • 本文作为探讨PHP依赖注入容器系列文章的开篇,将首先通过具体示例详细阐述依赖注入的基本概念及其重要性,为后续深入解析容器的实现奠定基础。 ... [详细]
  • 本文详细探讨了Java中Unicode编码的二进制转换方法及其具体实现。通过分析\u开头的字符串,解释了每组\uxxxx如何对应一个特定的Unicode字符,并提供了相关代码示例以加深理解。希望读者在实际开发中能有效应用这些知识。 ... [详细]
  • 本文全面解析了 Python 中字符串处理的常用操作与技巧。首先介绍了如何通过 `s.strip()`, `s.lstrip()` 和 `s.rstrip()` 方法去除字符串中的空格和特殊符号。接着,详细讲解了字符串复制的方法,包括使用 `sStr1 = sStr2` 进行简单的赋值复制。此外,还探讨了字符串连接、分割、替换等高级操作,并提供了丰富的示例代码,帮助读者深入理解和掌握这些实用技巧。 ... [详细]
  • 深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案
    深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案 ... [详细]
  • 在安装并配置了Elasticsearch后,我在尝试通过GET /_nodes请求获取节点信息时遇到了问题,收到了错误消息。为了确保请求的正确性和安全性,我需要进一步排查配置和网络设置,以确保Elasticsearch集群能够正常响应。此外,还需要检查安全设置,如防火墙规则和认证机制,以防止未经授权的访问。 ... [详细]
  • 本指南详细介绍了在Linux环境中高效连接MySQL数据库的方法。用户可以通过安装并使用`mysql`客户端工具来实现本地连接,具体命令为:`mysql -u 用户名 -p 密码 -h 主机`。例如,使用管理员账户连接本地MySQL服务器的命令为:`mysql -u root -p pass`。此外,还提供了多种配置优化建议,以确保连接过程更加稳定和高效。 ... [详细]
  • 本文深入探讨了Ajax的工作机制及其在现代Web开发中的应用。Ajax作为一种异步通信技术,改变了传统的客户端与服务器直接交互的模式。通过引入Ajax,客户端与服务器之间的通信变得更加高效和灵活。文章详细分析了Ajax的核心原理,包括XMLHttpRequest对象的使用、数据传输格式(如JSON和XML)以及事件处理机制。此外,还介绍了Ajax在提升用户体验、实现动态页面更新等方面的具体应用,并讨论了其在当前Web开发中的重要性和未来发展趋势。 ... [详细]
  • 并发编程入门:初探多任务处理技术
    并发编程入门:探索多任务处理技术并发编程是指在单个处理器上高效地管理多个任务的执行过程。其核心在于通过合理分配和协调任务,提高系统的整体性能。主要应用场景包括:1) 将复杂任务分解为多个子任务,并分配给不同的线程,实现并行处理;2) 通过同步机制确保线程间协调一致,避免资源竞争和数据不一致问题。此外,理解并发编程还涉及锁机制、线程池和异步编程等关键技术。 ... [详细]
  • 本文详细介绍了 Python 中字符串处理的各种技巧,包括查找、复制、替换、删除、截取、连接、比较、包含检测及大小写转换等操作。特别强调了如何使用 `strip()`、`lstrip()` 和 `rstrip()` 方法去除字符串中的空格和特殊符号,以及如何通过简单的赋值语句实现字符串的复制。此外,还提供了丰富的示例代码,帮助读者更好地理解和应用这些技巧。 ... [详细]
  • Vue 实战基础教程第9讲:深入理解计算属性与侦听器的高效使用
    Vue 实战基础教程第9讲:深入理解计算属性与侦听器的高效使用 ... [详细]
  • 在处理遗留数据库的映射时,反向工程是一个重要的初始步骤。由于实体模式已经在数据库系统中存在,Hibernate 提供了自动化工具来简化这一过程,帮助开发人员快速生成持久化类和映射文件。通过反向工程,可以显著提高开发效率并减少手动配置的错误。此外,该工具还支持对现有数据库结构进行分析,自动生成符合 Hibernate 规范的配置文件,从而加速项目的启动和开发周期。 ... [详细]
  • 本文介绍了一种利用PHP cURL库高效提取Sohu邮箱联系人列表的方法。通过设置错误报告级别、定义Cookie文件路径等关键步骤,确保了代码的稳定性和可靠性。经过实际测试,该方法在2012年3月24日被验证为有效,能够快速准确地获取联系人信息。此外,文章还提供了详细的代码示例和注意事项,帮助开发者更好地理解和应用这一技术。 ... [详细]
  • RxJava 中 Observable.singleElement() 方法详解与实例代码分析 ... [详细]
author-avatar
手机用户2602908893
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有