首页 > 其他分享 >docker-compose部署rabbitmq关键配置点

docker-compose部署rabbitmq关键配置点

时间:2023-09-26 15:33:26浏览次数:49  
标签:compose 192.168 rabbit02 rabbitmq RABBITMQ rabbit01 docker 节点

部署关键配置点


单一模式即单机情况不做集群,就单独运行一个rabbitmq而已。

普通模式默认模式,以两个节点(rabbit01、rabbit02)为例来进行说明。对于Queue来说,消息实体只存在于其中一个节点rabbit01(或者rabbit02),rabbit01和rabbit02两个节点仅有相同的元数据,即队列的结构。当消息进入rabbit01节点的Queue后,consumer从rabbit02节点消费时,RabbitMQ会临时在rabbit01、rabbit02间进行消息传输,把A中的消息实体取出并经过B发送给consumer。所以consumer应尽量连接每一个节点,从中取消息。即对于同一个逻辑队列,要在多个节点建立物理Queue。否则无论consumer连rabbit01或rabbit02,出口总在rabbit01,会产生瓶颈。当rabbit01节点故障后,rabbit02节点无法取到rabbit01节点中还未消费的消息实体。如果做了消息持久化,那么得等rabbit01节点恢复,然后才可被消费;如果没有持久化的话,就会产生消息丢失的现象。

镜像模式把需要的队列做成镜像队列,存在与多个节点属于RabbitMQ的HA方案。该模式解决了普通模式中的问题,其实质和普通模式不同之处在于,消息实体会主动在镜像节点间同步,而不是在客户端取数据时临时拉取。该模式带来的副作用也很明显,除了降低系统性能外,如果镜像队列数量过多,加之大量的消息进入,集群内部的网络带宽将会被这种同步通讯大大消耗掉。所以在对可靠性要求较高的场合中适用。


用户登录失败解决方法:

进入rabbitmq安装目录sbin下,设置新用户并授权:

1、rabbitmqctl add_user admin 123456 #用户名admin,密码123456,可随意设置

2、rabbitmqctl set_user_tags admin administrator #设置用户最高操作权限

节点1的yml:

[root@test1 rabbitmq]# cat docker-compose.yml

version: '3'

services:

  rabbit1:

  image: rabbitmq:3.10.1-management

  container_name: rabbit1

  hostname: rabbit1

  restart: always

  ports:

    - 4369:4369

    - 5672:5672

    - 15672:15672

    - 15674:15674

    - 25672:25672

    - 35197:35197

  volumes:

    - /data/rabbitmq:/var/lib/rabbitmq

    - /etc/localtime:/etc/localtime

  environment:

    - RABBITMQ_DEFAULT_USER=admin

    - RABBITMQ_DEFAULT_PASS=Jthl0901

    - RABBITMQ_ERLANG_COOKIE='SECERLANGCOOKIE'


  extra_hosts:

    - "rabbit2:192.168.100.97"            # 不能加入自己,否则会一直重启

    - "rabbit3:192.168.100.98"

节点2的yml:

[root@test2 rabbitmq]# cat docker-compose.yml

version: '3'

services:

  rabbit2:

  image: rabbitmq:3.10.1-management

  container_name: rabbit2

  hostname: rabbit2

  restart: always

  ports:

    - 4369:4369

    - 5672:5672

    - 15672:15672

    - 15674:15674

    - 25672:25672

    - 35197:35197

  volumes:

    - /data/rabbitmq:/var/lib/rabbitmq

    - /etc/localtime:/etc/localtime

  environment:

    - RABBITMQ_ERLANG_COOKIE='SECERLANGCOOKIE'

    - RABBITMQ_DEFAULT_VHOST=/

    - RABBITMQ_LOGS=/var/lib/rabbitmq/rabbitmq.log


  extra_hosts:

    - "rabbit1:192.168.100.96"

    - "rabbit3:192.168.100.98"


节点3的yml:

[root@test3 rabbitmq]# cat docker-compose.yml

version: '3'

services:

  rabbit3:

  image: rabbitmq:3.10.1-management

  container_name: rabbit3

  hostname: rabbit3

  ports:

    - 4369:4369

    - 5672:5672

    - 15672:15672

    - 15674:15674

    - 25672:25672

    - 35197:35197

  volumes:

    - /data/rabbitmq:/var/lib/rabbitmq

    - /etc/localtime:/etc/localtime

  environment:

    - RABBITMQ_ERLANG_COOKIE='SECERLANGCOOKIE'

    - RABBITMQ_DEFAULT_VHOST=/

    - RABBITMQ_LOGS=/var/lib/rabbitmq/rabbitmq.log


  extra_hosts:

    - "rabbit1:192.168.100.96"

    - "rabbit2:192.168.100.97"


分别登录节点2节点3,分别加入到集群中:

节点2:

docker exec -it rabbit2 bash

rabbitmqctl stop_app

rabbitmqctl reset

rabbitmqctl join_cluster rabbit@rabbit1

rabbitmqctl start_app

节点3:

docker exec -it rabbit3 bash

rabbitmqctl stop_app

rabbitmqctl reset

rabbitmqctl join_cluster rabbit@rabbit1

rabbitmqctl start_app

docker-compose部署rabbitmq关键配置点_docker

标签:compose,192.168,rabbit02,rabbitmq,RABBITMQ,rabbit01,docker,节点
From: https://blog.51cto.com/shitouququ/7609183

相关文章

  • rabbitmq持久化
    一:消息持久化RabbitMQ并不是用来存储数据的,而是用来传输消息的中间件。因此,如果需要存储数据,应该使用数据库或者其他合适的工具,而不是RabbitMQ。如果需要使用RabbitMQ来传输消息,并且希望消息能够被持久化存储,可以采取以下措施:1.使用持久化队列:在声明队列的时候设置durable=tr......
  • docker 安装superset
    docker安装superset目录docker安装superset1.安装docker和dockercompose2.克隆Superset的GitHub3.通过DockerCompose4.配置DockerCompose5.登录Superset6.将Superset连接到本地数据库实例7.解决无法登录一直还在登录界面问题内容安全策略(CSP)8.此处为修改的文......
  • Docker 学习笔记(一)
    一、Docker和虚拟机有什么区别初次看到Docker的功能,直觉就是:这是简化版的虚拟机!但它和虚拟机是有本质区别的,最根本的区别在于:虚拟机真的是完全虚拟出一台电脑,普通PC机有啥,它就给你虚拟出啥来,我们几乎可以在上面安装普通PC上的任何操作系统和软件;而Docker只是做出一个进程之间......
  • Ubuntu 22.04上安装docker方法及oracle 11g方法
    1.切换到管理员登录ubt2204@ubt2204-Virtual-Machine:~/database$suPassword:2.执行安装docker命令root@ubt2204-Virtual-Machine:/home/ubt2204/database#sudoaptinstalldocker.io3.启动docker服务systemctlstartdocker#或者sudoservicedockerstart4.......
  • nginx-clojure nginx 1.25.2 版本docker 镜像
    主要是测试下nginx-clojure有nginx1.25.2的兼容性,顺便基于原有的构建弄一个方便测试的debug版本的镜像构建构建命令实际结合业务修改下./configure--prefix=--sbin-path=nginx--conf-path=conf/nginx.conf--error-log-path=logs/error.log--http-log-path......
  • centos安装rabbitmq消息队列
    开源的消息队列系统很多如erlang开发的rabbitmq,java开发的activemq,redis的list也可以实现,workerman也有消息队列我们项目用的是rabbitmq,它的优点1、基于erlang语言开发具有高可用高并发的优点,适合集群服务器2、健壮、稳定、易用、跨平台、支持多种语言、文档齐全3、有消息确认机......
  • 四种OS下安装Docker的方法
    支持的平台Docker目前已经支持非常多的Linux平台,Ubuntu、RedHat企业版Linux、Debian、CentOs、Fedora、OracleLinux等。如果使用虚拟环境,甚至可以在OSX和windows中运行。安装的条件Docker目前只能在64位CPU架构的计算机上运行(目前只能是x86_64、amd64)。Linux3.8或更......
  • docker安装
    一、安装DockerCE先决条件1.1、系统要求DockerCE支持64位版本CentOS7,并且要求内核版本不低于3.10。CentOS7满足最低内核的要求,但由于内核版本比较低,部分功能(如overlay2存储层驱动)无法使用,并且部分功能可能不太稳定。1.2、查看系统内核版本[root@server04~]#cat/proc......
  • 查看docker容器使用的cpu和内存
    转载请注明出处:使用dockerps命令列出正在运行的Docker容器,并获取目标容器的ID或名称。使用dockerstats<容器ID或名称>命令来实时监测指定容器的资源使用情况。该命令将显示容器的CPU利用率、内存使用量、网络流量等信息。例如,要查看名为my_container的容器的资源使用情......
  • RabbitMQ报错:Shutdown Signal: channel error; protocol method
    ShutdownSignal:channelerror;protocolmethod:#method<channel.close>(reply-code=406,reply-text=PRECONDITION_FAILED-unknowndeliverytag1,class-id=60,method-id=80)默认情况下RabbitMQ是自动ACK(确认签收)机制,就意味着MQ会在消息发送完毕后,自动帮我们去AC......