docker部署RabbitMQ集群

标签: java  IntelliJ IDEA  Shell

原创内容,纯手敲,转载请写明出处~

公司开发用rabbitmq,要部署集群,在此做个笔记

首先安装docker,并安装portainer,这里不介绍,有需要可以留言,我来补齐安装docker及portainer可视化工具的步骤

安装rabbitmq 我用的是 rabbitmq:3-management 

docker pull rabbitmq:3-management

下载好后,进入portainer可视化工具页面

创建rabbitmq配置文件

config内容如下

[
	{ rabbit, [
		{cluster_nodes, {[ 'rabbit1@rabbit1' ], disc}},
    {tcp_listen_options, [binary, {backlog, 1024}, {nodelay, true}, {keepalive, true} ]},
    {vm_memory_high_watermark, 0.6},
		{ loopback_users, [ ] },
		{ tcp_listeners, [ 5672 ] },
		{ ssl_listeners, [ ] },
		{ default_pass, <<"password">> },
		{ default_user, <<"admin">> },
		{ hipe_compile, false }
	] },

	{ rabbitmq_management, [ { listener, [
		{ port, 15672 },
		{ ssl, false }
	] },
		{load_definitions, "/etc/rabbitmq/definitions.json"}
	] }
].

json内容如下

{
  "rabbit_version":"3.6.3",
  "users": [
    {
      "name":"guest",
      "password_hash":"fd0GyzAf6C6hmgCJ5VU+TSyzUNlzypPlGb7VDKkqUvJqVxyd",
      "hashing_algorithm":"rabbit_password_hashing_sha256",
      "tags":"administrator"
    }
  ],
  "vhosts": [
    {
      "name":"/"
    }
  ],
  "permissions":[
    {
      "user":"guest",
      "vhost":"/",
      "configure":".*",
      "write":".*",
      "read":".*"
    }
  ],
  "parameters":[],
  "policies":[
    {"vhost":"/","name":"ha","pattern":"", "definition":{"ha-mode":"all","ha-sync-mode":"automatic","ha-sync-batch-size":5}}
  ],
  "queues":[
    {
      "name":"q.user.created",
      "vhost":"/",
      "durable":true,
      "auto_delete":true,
      "arguments":{}
    }
  ],
  "exchanges":[
    {
      "name":"e.user.created",
      "vhost":"/",
      "type":"topic",
      "durable":true,
      "auto_delete":false,
      "internal":false,
      "arguments":{}
    }
  ],
  "bindings":[
    {
      "source":"e.user.created",
      "vhost":"/",
      "destination":"q.user.created",
      "destination_type":"queue",
      "routing_key":"user.created",
      "arguments":{}
    }
  ]
}

配置完毕,添加一个stack

stack名称自己定义,配置如下:

version: "3.3"
services:
  rabbit1:
    image: rabbitmq:3-management
    hostname: rabbit1
    environment:
      RABBITMQ_ERLANG_COOKIE: "secret string"
      RABBITMQ_NODENAME: rabbit1
    configs:
      - source: rabbitmq_rabbitmq.config
        target: /etc/rabbitmq/rabbitmq.config
      - source: rabbitmq_definitions.json
        target: /etc/rabbitmq/definitions.json
    ports:
      - "4369:4369"
      - "5671:5671"
      - "5672:5672"
      - "15671:15671"
      - "15672:15672"
      - "25672:25672"

  rabbit2:
    image: rabbitmq:3-management
    hostname: rabbit2
    depends_on:
      - rabbit1
    environment:
      RABBITMQ_ERLANG_COOKIE: "secret string"
      RABBITMQ_NODENAME: rabbit2
    configs:
      - source: rabbitmq_rabbitmq.config
        target: /etc/rabbitmq/rabbitmq.config
      - source: rabbitmq_definitions.json
        target: /etc/rabbitmq/definitions.json
    
  rabbit3:
    image: rabbitmq:3-management
    hostname: rabbit3
    depends_on:
      - rabbit1
    environment:
      RABBITMQ_ERLANG_COOKIE: "secret string"
      RABBITMQ_NODENAME: rabbit3
    configs:
      - source: rabbitmq_rabbitmq.config
        target: /etc/rabbitmq/rabbitmq.config
      - source: rabbitmq_definitions.json
        target: /etc/rabbitmq/definitions.json

configs:
  rabbitmq_rabbitmq.config:
    external: true
  rabbitmq_definitions.json:
    external: true

点击update the stack

到此docker部署rabbitmq集群完毕。

想要具体了解配置文件属性,请自行百度

版权声明:本文为qq_39413186原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_39413186/article/details/106692059

智能推荐

Mybatis基础(part 1)

一.mybatis调用SQL语句 1.使用XML配置SQL语句 在SqlMapConfig.xml配置数据源并指定映射配置文件的位置(每个DAO对应的XML文件,该文件映射了DAO的全限定类名)   2.使用注解配置sql语句 在SqlMapConfig.xml配置数据源和class属性(指定被注解的dao全限定类名),在DAO上写注解。 用注解来配置,故此处使用class属性指定被注解...

Docker 容器内运行 Dubbo 服务

原文:http://www.aqcoder.com/post/content?id=41 在使用 Docker 容器内运行 Dubbo 服务的时候一个令人很头痛的问题就是服务地址注册。 Docker 容器内有自己的 IP 段,和宿主主机是隔离的,Dubbo 会使用容器内的 IP 注册到 zookeeper 注册中心上。这样其他的服务是无法访问的。 方式一:–host 一个很直接的方案就...

python基础教程

Python基础教程 一、简介 1.1 python语言介绍 python的创始人:Guido Van Rossum Python下载地址:https://www.python.org/ Python文档下载地址:https://www.python.org/doc/ Pycharm下载地址:https://www.runoob.com/w3cnote/pycharm-windows-instal...

1、Git安装与配置

1、Git安装与配置 一:版本控制 定义:版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。 为什么要用版本控制:在起初的项目开发中,我们会不断的编写代码,但是,害怕有一天系统突然挂掉了,完蛋,辛苦写的代码就这么没了,所有为了防止这一点,都会开发一点就以目录拷贝的形式保存下来,自己这么1.0、2.0、3.0…的这么去标记,开始的还好,后面的话你压根就不知道...

Golang net/rpc 包的深度解读和学习

Golang 提供了一个开箱即用的RPC服务,实现方式简约而不简单。本文对net/rpc 包做深度解读和学习实战。 RPC 简单介绍 远程过程调用 (Remote Procedure Call,RPC) 是一种计算机通信协议。允许运行在一台计算机的程序调用另一个地址空间的子程序(一般是开放网络中的一台计算机),而程序员就像调用调用本地程序一样,无需额外做交互编程。RPC 是一种 CS (Clien...

猜你喜欢

merge sort

归并排序(merge sort) 具体算法: I.对原数组进行分组:对数组进行遍历,每检测出一个有序序列则记录一个分组,一般分组都是上升序列,下降序列也会被转换成上升序列 II.对两两相邻的分组进行合并,合并后的分组也将被记录 III.迭代合并之前合并后的分组直到出现最后的一个有序的大分组,也就是排序的最终结果 java.util.DualPivotQuicksort类中的static void ...

Java函数的学习

java学习 百知教育学习 - 胡鑫喆 - Java函数的学习 01_函数的定义 函数的定义 概念:实现特定功能的一段代码,可反复使用 定义语法: 函数名称许遵循命名规范 函数定义在类的内部,与main函数并列,并且使函数产生作用,需进行函数的调用 使用函数去掉冗余代码 02_函数的参数 函数的参数(函数名称() 其中()就是一个参数表) 无参函数(01_函数的定义中的下划线就为无参函数) 有参函...

03-段寄存器属性探测

1.段属性探测 要点回顾: 要点回顾: 上一节课我们讲过段寄存器有96位: 我们可以通过MOV指令进行读写(LDTR和TR除外) 但我们只能看见16位,那如果证明Attribute、Base、Limit的存在呢? 1、段寄存器成员简介 2、探测Attribute 3、探测Base 3、探测Limit 课后练习:...

解决swagger返回map复杂结构不能解析 Resolver error at definitions

解决:  没错,重点就是加上alternateTypeRules进行解析。   关注公众号获取更多内容,有问题也可在公众号提问哦:   强哥叨逼叨 叨逼叨编程、互联网的见解和新鲜事...

Android 插件化实现中遇错: PackageParser$PackageParserException: Failed to parse xxx

本文解决以下两个问题 一、在尝试使用apk本地路径获取packageInfo时,报出: 二、使用newInstance()时,报出: 解决问题 1. 第一个错误确实没找到原因,只在模拟器会出现,真机没有任何问题 在使用apk本地路径获取packageInfo时, 也就是调用这样一个api, 假设我本地apk存储的路径为: /storage/emulated/0/a.apk 返回给我的package...