docker compose部署rabbitmq集群,并使用haproxy负载均衡

 一、创建rabbitmq的data目录

mkdir data

mkdir data/rabbit1

mkdir data/rabbit2

mkdir data/rabbit3

 二、创建.erlang.cookie文件(集群cookie用)

echo "secretcookie" > .erlang.cookie

三、创建haproxy.cfg配置文件

global

    log stdout format raw local0

defaults

    log global

    mode http

    option httplog

    timeout connect 5000ms

    timeout client 50000ms

    timeout server 50000ms

frontend rabbitmq_front_tcp

    mode tcp

    bind *:5672

    default_backend rabbitmq_back_tcp

frontend rabbitmq_front_web

    bind *:15672

    default_backend rabbitmq_back_web

backend rabbitmq_back_tcp

    mode tcp

    balance roundrobin

    server rabbit1 rabbit1:5672 check

    server rabbit2 rabbit2:5672 check

    server rabbit3 rabbit3:5672 check

backend rabbitmq_back_web

    balance source

    server rabbit1 rabbit1:15672 check

    server rabbit2 rabbit2:15672 check

    server rabbit3 rabbit3:15672 check

listen stats

    bind *:8080

    stats enable

    stats uri /stats

    stats auth admin:123456

四、创建docker-compose.yml文件

services:

  rabbit1:

    restart: always

    image: rabbitmq

    container_name: rabbit1

    hostname: rabbit1

    environment:

      TZ: Asia/Shanghai

      RABBITMQ_DEFAULT_USER: guest

      RABBITMQ_DEFAULT_PASS: guest

    volumes:

      - /home/sumengnan/rabbitmq/data/rabbit1:/var/lib/rabbitmq

      - /home/sumengnan/rabbitmq/.erlang.cookie:/var/lib/rabbitmq/.erlang.cookie

  rabbit2:

    restart: always

    image: rabbitmq

    container_name: rabbit2

    hostname: rabbit2

    environment:

      TZ: Asia/Shanghai

      RABBITMQ_DEFAULT_USER: guest

      RABBITMQ_DEFAULT_PASS: guest

    volumes:

      - /home/sumengnan/rabbitmq/data/rabbit2:/var/lib/rabbitmq

      - /home/sumengnan/rabbitmq/.erlang.cookie:/var/lib/rabbitmq/.erlang.cookie

  rabbit3:

    restart: always

    image: rabbitmq

    container_name: rabbit3

    hostname: rabbit3

    environment:

      TZ: Asia/Shanghai

      RABBITMQ_DEFAULT_USER: guest

      RABBITMQ_DEFAULT_PASS: guest

    volumes:

      - /home/sumengnan/rabbitmq/data/rabbit3:/var/lib/rabbitmq

      - /home/sumengnan/rabbitmq/.erlang.cookie:/var/lib/rabbitmq/.erlang.cookie

  haproxy:

    restart: always

    image: haproxy

    container_name: haproxy

    hostname: haproxy

    environment:

      TZ: Asia/Shanghai

    ports:

      - "5672:5672"

      - "15672:15672"

      - "8080:8080"

    volumes:

      - /home/sumengnan/rabbitmq/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg

 五、启动docker-compose.yml文件

docker compose up -d

 六、创建加入集群的shell脚本,并执行

vim join_cluster.sh

#!/bin/bash#reset first node
echo "Reset first rabbitmq node."
docker exec rabbit1 /bin/bash -c 'rabbitmqctl stop_app'
docker exec rabbit1 /bin/bash -c 'rabbitmqctl reset'
docker exec rabbit1 /bin/bash -c 'rabbitmqctl start_app'
docker exec rabbit1 /bin/bash -c 'rabbitmq-plugins enable rabbitmq_management'
docker exec rabbit1 /bin/bash -c 'echo management_agent.disable_metrics_collector = false > /etc/rabbitmq/conf.d/management_agent.disable_metrics_collector.conf'#build cluster
echo "Starting to build rabbitmq cluster with two ram nodes."
docker exec rabbit2 /bin/bash -c 'rabbitmqctl stop_app'
docker exec rabbit2 /bin/bash -c 'rabbitmqctl reset'
docker exec rabbit2 /bin/bash -c 'rabbitmqctl join_cluster --ram rabbit@rabbit1'
docker exec rabbit2 /bin/bash -c 'rabbitmqctl start_app'
docker exec rabbit2 /bin/bash -c 'rabbitmq-plugins enable rabbitmq_management'
docker exec rabbit2 /bin/bash -c 'echo management_agent.disable_metrics_collector = false > /etc/rabbitmq/conf.d/management_agent.disable_metrics_collector.conf'docker exec rabbit3 /bin/bash -c 'rabbitmqctl stop_app'
docker exec rabbit3 /bin/bash -c 'rabbitmqctl reset'
docker exec rabbit3 /bin/bash -c 'rabbitmqctl join_cluster --ram rabbit@rabbit1'
docker exec rabbit3 /bin/bash -c 'rabbitmqctl start_app'
docker exec rabbit3 /bin/bash -c 'rabbitmq-plugins enable rabbitmq_management'
docker exec rabbit3 /bin/bash -c 'echo management_agent.disable_metrics_collector = false > /etc/rabbitmq/conf.d/management_agent.disable_metrics_collector.conf'#check cluster status
echo "ok"

chmod 755 join_cluster.sh

sh join_cluster.sh

七、重启docker-compose.yml文件

docker compose restart

 作用是使shell脚本中开启的管理代理的度量收集功能生效。

八、访问rabbitmq控制台

查看集群情况。可以看到集群成功。

 九、访问haproxy统计页面

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/51954.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习基础—正则化

正则化:解决模型过拟合的手段,本质就是减小模型参数取值,从而使模型更简单。常用范数如下: 使用最多的是L2范数正则项,因此加入正则项的损失函数变为: 使用梯度下降法的权重调整公式: 推导后得到…

项目实战:Qt+Opencv相机标定工具v1.3.0(支持打开摄像头、视频文件和网络地址,支持标定过程查看、删除和动态评价误差率,支持追加标定等等)

若该文为原创文章,转载请注明出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/141334834 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、Op…

二十二、状态模式

文章目录 1 基本介绍2 案例2.1 Season 接口2.2 Spring 类2.3 Summer 类2.4 Autumn 类2.5 Winter 类2.6 Person 类2.7 Client 类2.8 Client 类的运行结果2.9 总结 3 各角色之间的关系3.1 角色3.1.1 State ( 状态 )3.1.2 ConcreteState ( 具体的状态 )3.1.3 Context ( 上下文 )3.…

Airtest 的使用

Airtest 介绍 Airtest Project 是网易游戏推出的一款自动化测试框架,其项目由以下几个部分构成 Airtest : 一个跨平台的,基于图像识别的 UI 自动化测试框架,适用于游戏和 App , 支持 Windows, Android 和 iOS 平台&#xff0c…

解决银河麒麟V10登录循环的方法

解决银河麒麟V10登录循环的方法 一:进入命令行二:删除.Xauthority文件三:重启系统 💖The Begin💖点点关注,收藏不迷路💖 在使用银河麒麟桌面操作系统V10时,有时可能会遇到一个令人头…

【题解】—— LeetCode一周小结32

🌟欢迎来到 我的博客 —— 探索技术的无限可能! 🌟博客的简介(文章目录) 【题解】—— 每日一道题目栏 上接:【题解】—— LeetCode一周小结31 5.不含连续1的非负整数 题目链接:600. 不含连续…

redis列表若干记录

2、列表 ziplist ziplist参数 entry结构 entry-data:节点存储的元素prelen:记录前驱节点长度encoding:当前节点编码格式encoding encoding属性 使用多个子节点存储节点元素长度,这种多字节数据存储在计算机内存中或者进行网络传输的时的字节…

小型超声波清洗机哪个品牌好用?小型超声波清洗机排名前四

第一次见识到超声波清洗机的神奇是在几年前,当时我去眼镜店配眼镜。等待的过程中,店员把旧的眼镜拿去清洁了,30秒,我就看到了到小污渍和油污被震出来了,感觉特别神奇。几分钟后,清洁完毕,擦干镜…

3个常用zip压缩包文件打来密码删除方法

ZIP压缩包作为一种广泛使用的文件压缩格式,常常用于节省存储空间或便于文件传输。一般情况下为保护文件数据的安全我们会给zip压缩文件设置密码安全保护,但如果后续不需要密码保护了,如何删除密码呢?下面小编给大家介绍三种常用的…

java 函数接口Consumer简介与示例【函数式编程】【Stream】

Java 8 中的 消费者接口Consumer 是一个函数接口,它可以接受一个泛型 类型参数,它属于java.util.function包。 accept(T) 方法:是 Consumer 函数式接口的方法,传入单个输入参数,无返回值,可以用于 Lambda 表…

电脑监控软件有哪些,哪款更好用?一网打尽!电脑监控软件大搜罗,总有一款适合你!

甲:哎,您听说了吗?这年头,电脑监控软件那是五花八门,跟变戏法似的! 乙:哦?怎么个五花八门法? 甲:嘿,您还别说,从实时监控到网络追踪…

最佳实践:敏捷需求管理——如何写好用户故事丨IDCF

丁仿,圣略咨询首席敏捷教练,研发效能(DevOps)工程师(中级)课程学员 在敏捷项目管理中,用户故事(User Stories)是需求管理的核心工具。本篇文章将从用户故事的基本概念、编…

复习之 java 锁

裁员在家,没有面试机会,整理整理面试知识点吧! 不得不知道的java 锁 Java 中,提供了两种方式来实现同步互斥访问(也就是锁):synchronized 和 Lock 多线程编程中,有可能会出现多个线…

期权中非常重要的行权!不懂行权先别交易!

今天带你了解期权中非常重要的行权!不懂行权先别交易!期权是金融市场中一种常见的衍生品工具,它给予持有者在特定时间内以特定价格购买或出售某个资产的权利。而“行权”是指期权持有者行使期权权利的行为。 期权行权是指期权持有者选择执行…

超网和无类间路由是什么?

​一、超网概述 超网是将多个连续的网络地址组合成一个增加的网络地址的技术。常用于减少路由器的路由表大小,网络的可扩展性。通过合并连续的子网,超网可以减少路由入侵的数量,从而提高网络的效率。 超网的实现基于合并多个具有连续IP地址…

java知识点详解——异常

当输入的数不是整数时 会报错 当输入的被除数为0时 会报错 在以前我们会使用if—else语句用来堵住漏洞,但是那样相当繁琐,很难穷举所有错误 Scanner in new Scanner(System.in); System.out.print("请输入被除数:"); int num1 in.nextInt(…

【Python快速入门和实践016】Python常用脚本-对视频抽取指定帧数并保存

一、功能介绍 这段代码的功能是从一个视频文件中抽取指定数量的帧,并将这些帧保存为图像文件。步骤如下: 设置路径和参数: video_path:视频文件的路径。image_folder:保存抽取图像的目录。num_frames_to_extract&#…

工业相机图像采集卡

什么是图像采集卡? 图像采集卡又称为图像卡,它将相机的图像视频信号,以帧为单位传送到计算机的内存和VGA帧存,供计算机处理,存储,显示和传输等使用。在机器视觉系统中,图像采集卡采集到的图像供…

【C语言】双链表

🦄个人主页:小米里的大麦-CSDN博客 🎏所属专栏:C语言数据结构_小米里的大麦的博客-CSDN博客 🎁代码托管:黄灿灿/数据结构 (gitee.com) ⚙️操作环境:Visual Studio 2022 目录 一、什么是双链表? 二、双链表温习 1. 双链表的结构…

【Django开发】前后端分离django美多商城项目第2篇:展示用户注册页面,1. 创建用户模块子应用【附代码文档】

全套笔记资料代码移步: 前往gitee仓库查看 感兴趣的小伙伴可以自取哦~ 本教程的知识点为: 项目准备 项目准备 配置 1. 修改settings/dev.py 文件中的路径信息 2. INSTALLED_APPS 3. 数据库 用户部分 图片 1. 后端接口设计: 视图原型 2. 具体…