首页 > 其他分享 >docker 部署 rabbitmq集群

docker 部署 rabbitmq集群

时间:2023-11-12 18:55:57浏览次数:36  
标签:-- rabbitmq rabbitmqctl 集群 docker rabbitmq01

rabbitmq集群:
    pull:
        docker pull rabbitmq
        
        
    普通模式(默认):
        what:
            集群中各节点有相同的队列结构, 但消息只会存在于集群中的一个节点。 对于消费者来说, 若消息进入 A 节点的 Queue 中, 当从 B 节点拉取时, RabbitMQ 会将消息从 A 中取出, 并经过 B 发送给消费者
    
        应用场景: 
            该模式各适合于消息无需持久化的场合, 如日志队列。 当队列非持久化, 且创建该队列的节点宕机, 客户端才可以重连集群其他节点, 并重新创建队列。 若为持久化,只能等故障节点恢复。
            
    镜像模式:
        what:
            与普通模式不同之处是消息实体会主动在镜像节点间同步, 而不是在取数据时临时拉取, 高可用; 该模式下, mirror queue 有一套选举算法, 即 1 个 master、 n 个 slaver, 生产者、 消费者的请求都会转至 master
            
        应用场景:
             可靠性要求较高场合, 如下单、 库存队列
             
        缺点:
             若镜像队列过多, 且消息体量大, 集群内部网络带宽将会被此种同步通讯所消耗。
             镜像集群也是基于普通集群, 即只有先搭建普通集群, 然后才能设置镜像队列。
             若消费过程中, master 挂掉, 则选举新 master, 若未来得及确认, 则可能会重复消费。
             
    集群搭建:
        准备阶段:
            #创建rabbitmq用于存放rabbitmq集群映射信息
            mkdir /mydata/rabbitmq
            #分别创建各集群映射目录
            cd rabbitmq/
            mkdir rabbitmq01 rabbitmq02 rabbitmq03
            
        启动容器:    
            
            docker run -d --hostname rabbitmq01 --name rabbitmq01 -v /mydata/rabbitmq/rabbitmq01:/var/lib/rabbitmq -p 15673:15672 -p 5673:5672 -e RABBITMQ_ERLANG_COOKIE='fly' rabbitmq:latest-management
            
            docker run -d --hostname rabbitmq02 --name rabbitmq02 -v/mydata/rabbitmq/rabbitmq02:/var/lib/rabbitmq -p 15674:15672 -p 5674:5672 -e RABBITMQ_ERLANG_COOKIE='fly' --link rabbitmq01:rabbitmq01 rabbitmq:latest-management
            
            docker run -d --hostname rabbitmq03 --name rabbitmq03 -v /mydata/rabbitmq/rabbitmq03:/var/lib/rabbitmq -p 15675:15672 -p 5675:5672 -e RABBITMQ_ERLANG_COOKIE='fly' --link rabbitmq01:rabbitmq01 --link rabbitmq02:rabbitmq02 rabbitmq:latest-management
            

        主意事项:
            –hostname 设置容器的主机名
            RABBITMQ_ERLANG_COOKIE: 节点认证作用, 部署集成时 需要同步该值
            RABBITMQ_ERLANG_COOKIE 为rabbitmq多节点之间通信所用到的cookie,rabbitmq集群就是利用这一特性实现的
            
        设置rabbitmq01为主节点
            docker exec -it rabbitmq01 /bin/bash
            rabbitmqctl stop_app
            rabbitmqctl reset
            rabbitmqctl start_app
            Exit
            
        将rabbitmq02加入rabbitmq01
            docker exec -it rabbitmq02 /bin/bash
            rabbitmqctl stop_app
            rabbitmqctl reset
            rabbitmqctl join_cluster --ram rabbit@rabbitmq01
            rabbitmqctl start_app
            exit
            
        将rabbitmq03加入rabbitmq01
            docker exec -it rabbitmq03 /bin/bash
            rabbitmqctl stop_app
            rabbitmqctl reset
            rabbitmqctl join_cluster --ram rabbit@rabbitmq01
            rabbitmqctl start_app
            exit


        首先进入主节点查看当前策略:
            docker exec -it rabbitmq01 /bin/bash
            rabbitmqctl list_policies -p /
            
        改为镜像模式:
            rabbitmqctl set_policy -p / ha "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
            
            
        为rabbitmq安装可视化插件
            rabbitmq-plugins enable rabbitmq_management
            
        账号:guest

        密码:guest

            
            
        

 

标签:--,rabbitmq,rabbitmqctl,集群,docker,rabbitmq01
From: https://www.cnblogs.com/wyf20190411-/p/17827565.html

相关文章

  • 脚本安装docker和docker-composed
    该脚本支持centos7和centos8系统#!/bin/bash#一键安装docker-ce和docker-compose,本脚本适用于CentOS7和8functionos7_install_docker(){rpm-qa|grepdocker&>/etc/nullif[$?-ne0]thenecho"开始安装docker..."#step1:安装必要的一些系统工具......
  • Docker容器基础学习
    Docker的基本概念镜像(Image),容器(Container)和仓库(Repository)。镜像(Image):Docker镜像是一个只读的模板,可以用来创建Docker容器。它包含一个完整的操作系统环境,里面可以安装运行应用程序所需的所有内容,包括代码、运行时环境、系统工具、系统库和设置。镜像是通过联合文件系统(Unio......
  • 如何使用docker编排生产环境?
    在生产环境中使用Docker编排,可以通过DockerCompose或Kubernetes这两种主要的工具实现。DockerCompose:DockerCompose是一个用于定义和运行多容器Docker应用程序的工具。它使用YAML文件定义应用程序的服务、网络和卷,并通过一个命令运行整个应用程序。以下是使用Docker......
  • Docker容器报权限不足,如何配置权限?
    当Docker容器报告权限不足时,可能是由于容器内部的用户与主机操作系统的用户不匹配导致的。解决这个问题的一种常见方法是在容器内部设置适当的用户和权限。以下是几种配置容器权限的方法:在Dockerfile中配置用户和权限:你可以在Dockerfile中使用USER和RUN命令来配置容器内......
  • phpstorm中配置docker远程解释器?
    要在PhpStorm中配置Docker远程解释器,请按照以下步骤进行操作:1.首先,确保你已经在本地安装了Docker。你可以在终端执行docker--version来确认Docker是否已成功安装。在PhpStorm中,打开项目并进入"Settings/Preferences"菜单。在Windows或Linux上,菜单位于"File"->......
  • 安装本地化docker registry,使其他机器能够发布容器
    sudodockerpullregistry:latestdockerrun-d-p5000:5000--nameregistryregistry:latest http://localhost:5000/v2/_catalog, 检查运行成功此时在子机3号上访问:http://192.168.170.130:5000/v2/_catalog,  ......
  • 部署 cri-dockerd
    下载cri-dockerdwgethttps://github.com/Mirantis/cri-dockerd/releases/download/v0.3.7/cri-dockerd-0.3.7.amd64.tgz解压cri-dockerdtarxfcri-dockerd-0.3.7.amd64.tgzcdcri-dockerd安装cri-dockerdinstall-oroot-groot-m0755cri-dockerd/usr/local/bin/c......
  • milvus本地集群部署非k8s
    (milvus本地集群部署非k8s)部署etcd和minio使用docker-compose部署,docker-compose.yml内容如下:version:'3.5'services:etcd:container_name:milvus-etcdimage:quay.io/coreos/etcd:v3.5.5environment:-ETCD_AUTO_COMPACTION_MODE=revision......
  • 大数据集群备份
    今天又备份了虚拟机集群。然后删除D盘的大数据,备份的放在F盘,让D盘有更多空间,因为我的Anaconda安装在D盘中,而我创建了很多python虚拟环境,D盘当时有点空间不够了,所以备份大数据到F盘。D可以更多空间。......
  • 如何在IDEA中实现快速将项目部署在docker上?
    Linux系统端1、安装docker,此过程略。附上在阿里云服务器上部署docker和docker-compose的链接:如何部署并使用Docker_云服务器ECS-阿里云帮助中心(aliyun.com)2、安装完docker后,随便找一个目录(本例的路径是/ocos/docker/cert,也可以选其他的路径,下面要用)创建安全连接docker所需的......