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

集群环境下_Docker环境下的前后端分离项目部署(七)使用Docker部署RabbitMQ集群...

本文同名博客老炮说Java:https:www.laopaojava.com,每天更新SpringSpringMvcSpringBoot实战项目等文章资
f63126892019151e8b8b488c56a5a705.png
本文同名博客老炮说Java:https://www.laopaojava.com/,每天更新Spring/SpringMvc/SpringBoot/实战项目等文章资料

顺便再给大家推荐一套SpringCloud微服务教程,方便学习:

SpringCloud微服务电商项目教程 - 老炮说Java-程序员编程资料和编程经验分享平台​www.laopaojava.com
8ff2d56aa89eb2fd54f891abd41991ed.png

教程主要包含下面内容:

a701f9d8b07c8b569c5149d01a3c43ee.png

下载RabbitMQ镜像

  • 镜像地址 RabbitMQ Docker官方认证镜像地址:https://hub.docker.com/_/rabbitmq
  • 安装命令
    安装之前,切记把Docker Hub设置为阿里云的加速,方便安装。
    docker pull rabbitmq:3.7.14-management
    注意使用后缀为"-management"的镜像版本,是包含网页控制台的。
  • 查看安装
    使用命令:docker images查看下载的镜像,如下图所示:
70fde8f64fbc81b1e24bb4fb2bdaf3f2.png

启动RabbitMQ

docker run -d --hostname localhost --name myrabbit -p 15672:15672 -p 5672:5672 rabbitmq:3.7.14-management

参数说明:

-d 后台进程运行
--hostname RabbitMQ主机名称
--name 容器名称
-p port:port 本地端口:容器端口
-p 15672:15672 http访问端口
-p 5672:5672 amqp访问端口

启动完成之后,使用:docker ps 查看程序运行情况。

使用:http://宿主ip:15672 访问,用户名密码使用默认:guest/guest.

启动多个RabbitMQ

docker run -d --hostname localhost --name myrabbit -p 15672:15672 -p 5672:5672 rabbitmq:3.7.14-management
docker run -d --hostname localhost2 --name myrabbit2 -p 15673:15672 -p 5673:5672 rabbitmq:3.7.14-management

这样我们就可以使用,http://宿主ip:15672 和 http://宿主ip:15673 进行访问了,默认账号密码依旧是guest/guest.

搭建RabbitMQ集群

步骤一:安装RabbitMQ

具体的参数含义,参见上文“启动RabbitMQ”部分。

#集群1
docker run -d --hostname rabbit1 --name myrabbit1 -p 15672:15672 -p 5672:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitCOOKIE' rabbitmq:3.7.14-management
#集群2
docker run -d --hostname rabbit2 --name myrabbit2 -p 15673:15672 -p 5673:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitCOOKIE' --link myrabbit1:rabbit1 rabbitmq:3.7.14-management
#集群3
docker run -d --hostname rabbit3 --name myrabbit3 -p 15674:15672 -p 5674:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitCOOKIE' --link myrabbit1:rabbit1 --link myrabbit2:rabbit2 rabbitmq:3.7.14-management

注意点:

  1. 多个容器之间使用“--link”连接,此属性不能少;
  2. Erlang COOKIE值必须相同,也就是RABBITMQ_ERLANG_COOKIE参数的值必须相同,原因见下文“配置相同Erlang COOKIE”部分;

步骤二:加入RabbitMQ节点到集群

  • 设置节点1:
    docker exec -it myrabbit1 bash
    rabbitmqctl stop_app
    rabbitmqctl reset
    rabbitmqctl start_app
    exit
  • 设置节点2,加入到集群:
    docker exec -it myrabbit2 bash
    rabbitmqctl stop_app
    rabbitmqctl reset
    rabbitmqctl join_cluster --ram rabbit@rabbit1
    rabbitmqctl start_app
    exit
    参数“--ram”表示设置为内存节点,忽略次参数默认为磁盘节点。
  • 设置节点3,加入到集群:
    docker exec -it myrabbit3 bash
    rabbitmqctl stop_app
    rabbitmqctl reset
    rabbitmqctl join_cluster --ram rabbit@rabbit1
    rabbitmqctl start_app
    exit
    设置好之后,使用http://物理机ip:15672 进行访问了,默认账号密码是guest/guest,效果如下图:
885147888fd8d16dd5c4fe2409c02cc8.png

启动了3个节点,1个磁盘节点和2个内存节点。

配置相同Erlang COOKIE

有些特殊的情况,比如已经运行了一段时间的几个单个物理机,我们在之前没有设置过相同的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文件权a限:chmod 600 /var/lib/rabbitmq/.erlang.COOKIE
来源:https://www.cnblogs.com/wyt007/p/10904654.html



推荐阅读
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • position属性absolute与relative的区别和用法详解
    本文详细解读了CSS中的position属性absolute和relative的区别和用法。通过解释绝对定位和相对定位的含义,以及配合TOP、RIGHT、BOTTOM、LEFT进行定位的方式,说明了它们的特性和能够实现的效果。同时指出了在网页居中时使用Absolute可能会出错的原因,即以浏览器左上角为原始点进行定位,不会随着分辨率的变化而变化位置。最后总结了一些使用这两个属性的技巧。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 本文讨论了微软的STL容器类是否线程安全。根据MSDN的回答,STL容器类包括vector、deque、list、queue、stack、priority_queue、valarray、map、hash_map、multimap、hash_multimap、set、hash_set、multiset、hash_multiset、basic_string和bitset。对于单个对象来说,多个线程同时读取是安全的。但如果一个线程正在写入一个对象,那么所有的读写操作都需要进行同步。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 本文总结了Java中日期格式化的常用方法,并给出了示例代码。通过使用SimpleDateFormat类和jstl fmt标签库,可以实现日期的格式化和显示。在页面中添加相应的标签库引用后,可以使用不同的日期格式化样式来显示当前年份和月份。该文提供了详细的代码示例和说明。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的步骤和方法
    本文介绍了在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的详细步骤和方法。首先需要下载最新的Java SE Development Kit 9发行版,然后按照给出的Shell命令行方式进行安装。详细的步骤和方法请参考正文内容。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 基于Axis、XFire、CXF的webservice客户端调用示例
    本文介绍了如何使用Axis、XFire、CXF等工具来实现webservice客户端的调用,以及提供了使用Java代码进行调用的示例。示例代码中设置了服务接口类、地址,并调用了sayHello方法。 ... [详细]
  • 本文由编程笔记#小编整理,主要介绍了关于数论相关的知识,包括数论的算法和百度百科的链接。文章还介绍了欧几里得算法、辗转相除法、gcd、lcm和扩展欧几里得算法的使用方法。此外,文章还提到了数论在求解不定方程、模线性方程和乘法逆元方面的应用。摘要长度:184字。 ... [详细]
author-avatar
mobiledu2502917953
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有