热门标签 | 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



推荐阅读
  • 本文探讨了浏览器的同源策略限制及其对 AJAX 请求的影响,并详细介绍了如何在 Spring Boot 应用中优雅地处理跨域请求,特别是当请求包含自定义 Headers 时的解决方案。 ... [详细]
  • Spring Boot 中静态资源映射详解
    本文深入探讨了 Spring Boot 如何简化 Web 应用中的静态资源管理,包括默认的静态资源映射规则、WebJars 的使用以及静态首页的处理方法。通过本文,您将了解如何高效地管理和引用静态资源。 ... [详细]
  • SpringMVC RestTemplate的几种请求调用(转)
    SpringMVCRestTemplate的几种请求调用(转),Go语言社区,Golang程序员人脉社 ... [详细]
  • 搭建Jenkins、Ant与TestNG集成环境
    本文详细介绍了如何在Ubuntu 16.04系统上配置Jenkins、Ant和TestNG的集成开发环境,涵盖从安装到配置的具体步骤,并提供了创建Windows Slave节点及项目构建的指南。 ... [详细]
  • 本文探讨如何利用Java反射技术来模拟Webwork框架中的URL解析过程。通过这一实践,读者可以更好地理解Webwork及其后续版本Struts2的工作原理,尤其是它们在MVC架构下的角色。 ... [详细]
  • 本文档详细介绍了在 Kubernetes 集群中部署 ETCD 数据库的过程,包括实验环境的准备、ETCD 证书的生成及配置、以及集群的启动与健康检查等关键步骤。 ... [详细]
  • 本文探讨了Java编程中MVC模式的优势与局限,以及如何利用Java开发一款基于鸟瞰视角的赛车游戏。 ... [详细]
  • Docker入门与实践指南
    本文介绍了Docker的基础知识,包括其作为开源应用容器引擎的特点,以及如何利用Docker将应用程序及其依赖项打包成轻量级的容器镜像。同时,还详细讲解了Docker的核心概念、安装过程及基本命令操作。 ... [详细]
  • 一、搭建项目创建Maven项目导入rabbitmq包com.rabbitmqamqp-clien ... [详细]
  • 软件工程课堂测试2
    要做一个简单的保存网页界面,首先用jsp写出保存界面,本次界面比较简单,首先是三个提示语,后面是三个输入框,然 ... [详细]
  • springMVC JRS303验证 ... [详细]
  • 尽管PHP是一种强大且灵活的Web开发语言,但开发者在使用过程中常会陷入一些典型的陷阱。本文旨在列出PHP开发中最为常见的10种错误,并提供相应的预防建议。 ... [详细]
  • 本文介绍了如何在三台CentOS 7.5虚拟机上通过Docker部署RabbitMQ集群,包括环境准备、容器创建、集群配置及故障处理等内容。 ... [详细]
  • 从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ... [详细]
  • 可参照github代码:https:github.comrabbitmqrabbitmq-tutorialsblobmasterjavaEmitLogTopic.ja ... [详细]
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社区 版权所有