• 华为云云耀云服务器L实例评测 | 实例使用教学之软件安装:华为云云耀云服务器环境下安装 RabbitMQ 集群
    • 介绍华为云云耀云服务器
      • 华为云云耀云服务器 (目前已经全新升级为 华为云云耀云服务器L实例)
        • 华为云云耀云服务器是什么
        • 华为云云耀云服务器和上一代的服务器对比有什么不同
        • 华为云云耀云服务器和弹性计算云服务器对比有什么不同
        • 华为云云耀云服务器和上一代的服务器对比有什么优势
    • 介绍华为云云耀云服务器适用于哪些场景
    • 介绍为什么选择华为云云耀云服务器
    • 通过 Docker Compose 构建 RabbitMQ 集群
      • RabbitMQ 简介
      • Docker Compose 简介
      • 准备工作
      • 编写 Compose 代码
      • 构建 Docker Compose 项目模板
      • 通过项目运行容器
      • 验证集群状态
      • 测试停掉其中一个实例

华为云云耀云服务器L实例评测 | 实例使用教学之软件安装:华为云云耀云服务器环境下安装 RabbitMQ 集群

介绍华为云云耀云服务器

华为云云耀云服务器 (目前已经全新升级为 华为云云耀云服务器L实例)

华为云云耀云服务器是什么
华为云耀云服务器(Hyper Elastic Cloud Server) HECS 是一种可以快速搭建且易于管理的新一代云服务器,支持全方位性能监测,快速锁定中高风险信息并及时提出建议,确保业务平稳运行;同时提供开箱即用的镜像,实现一键应用部署。
华为云云耀云服务器和上一代的服务器对比有什么不同
  • 一站式配置引导:支持一站式配置指导,预装第三方市场镜像,新手小白也可分钟级完成应用搭建
  • 关键信息高效获取:极简控制台可视化管理,关键信息详情一目了然。结合高效的可视化图表,所见即所得,让您更聚焦业务
  • 全方位安全保障:提供全方位性能监测,实时观测性能全貌,快速锁定中高风险资源。智能助手深挖业务适配度,智选推荐业务升级,多重保护性能无忧

华为云云耀云服务器和弹性计算云服务器对比有什么不同
与弹性云服务器相比,云耀云服务器简化了购买ECS过程中的一些高级配置,一站式融合购买、登录、磁盘配置、网络配置、云监控、主机安全等多种功能,帮助您更加便捷高效的部署、配置和管理应用。但是 HECS 底层使用的物理硬件资源与ECS一致,同CPU、内存的HECS与ECS计算能力在同一标准另外就是 HECS 和普通的 ECS 有足够的成本优势
华为云云耀云服务器和上一代的服务器对比有什么优势
中小企业便捷高效的在云端构建电商网站、Web应用、小程序、学习环境、各类开发测试等,简单上云快一步
  • 智能不卡顿:瑶光AI智能调度与新一代网络技术,软硬实力驱动性能倍增,成就更流畅、稳定的上云体验
  • 价优随心用:技术升级优化用云成本,普惠更多初创企业和开发者
  • 上手更简单:新手友好,即开即用,部署轻松,让您的业务开展快人一步
  • 管理特省心:运维、监控、资源分布一站式管理,运维更省心高效,让IT更聚焦业务

简而言之

  • 易搭建
  • 更实惠
  • 易维护
  • 更安全

介绍华为云云耀云服务器适用于哪些场景

适合于 IT 能力相对较弱的初创及成长型企业和入门开发者

介绍为什么选择华为云云耀云服务器

随着云计算时代的进一步深入,越来越多的中小企业和开发者需要一款简单易用、高能高效的云计算基础设施产品来
支撑自身业务运营和创新开发。华为云焕新推出的云耀云服务器L实例,正是满足企业和开发者需求的完美选择

主要解决如下的几个核心痛点问题

  • 选择困难
  • 部署困难
  • 运维困难
  • 成本难测
  • 轻量
  • 产品性能稳定性差

基础架构

  • HECS L基于华为云擎天架构打造
  • 包含数据面“软硬协同系统”和管控面“瑶光智慧云脑”两部分
  • 数据面针对L0/L1/L2进行垂直优化
  • 通过液冷实现高功耗CPU散热

通过 Docker Compose 构建 RabbitMQ 集群

RabbitMQ 简介

RabbitMQ是一个开源的消息代理系统,用于支持分布式应用程序间的消息传递。在实际生产环境中,我们通常需要搭建RabbitMQ的集群来提高可用性和性能

Docker Compose 简介

Docker Compose是一个用于定义和运行多容器Docker应用程序的工具,我们可以使用Docker Compose来轻松地搭建RabbitMQ镜像集群

准备工作

我们登录到宝塔面板,因为之前已经安装了 Docker 、Docker Compose ,本次不再安装,我们坐下验证工作即可,确保软件正常运行

编写 Compose 代码

version: '3'services:rabbitmq1:image: rabbitmq:3-managementcontainer_name: rabbitmq1hostname: rabbitmq1ports:- "5672:5672"- "15672:15672"environment:- RABBITMQ_ERLANG_COOKIE=secret_cookie- RABBITMQ_NODENAME=rabbitmq1- RABBITMQ_CLUSTERED=true- RABBITMQ_CLUSTER_NODE_TYPE=disc- RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-rabbitmq_clusterer formation.minimal_master_nodes 3"networks:- rabbitmq-clusterrabbitmq2:image: rabbitmq:3-managementcontainer_name: rabbitmq2hostname: rabbitmq2ports:- "5673:5672"- "15673:15672"environment:- RABBITMQ_ERLANG_COOKIE=secret_cookie- RABBITMQ_NODENAME=rabbitmq2- RABBITMQ_CLUSTERED=true- RABBITMQ_CLUSTER_NODE_TYPE=disc- RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-rabbitmq_clusterer formation.minimal_master_nodes 3"networks:- rabbitmq-clusterrabbitmq3:image: rabbitmq:3-managementcontainer_name: rabbitmq3hostname: rabbitmq3ports:- "5674:5672"- "15674:15672"environment:- RABBITMQ_ERLANG_COOKIE=secret_cookie- RABBITMQ_NODENAME=rabbitmq3- RABBITMQ_CLUSTERED=true- RABBITMQ_CLUSTER_NODE_TYPE=disc- RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-rabbitmq_clusterer formation.minimal_master_nodes 3"networks:- rabbitmq-clusternetworks:rabbitmq-cluster:driver: bridge

构建 Docker Compose 项目模板


添加完成

通过项目运行容器

我们先拉取镜像

然后到容器中添加容器

进行容器编排,选择 MQ 模版,输入名称

等待执行结果,预计需要几分钟


运行完毕,我们发现运行失败了


我们查看一下日志


意思是存在一些版本的问题,以及 cookie 目录需要 root 用户才可以访问的问题

那我们对症下药,变更一下 MQ 的版本,我们改为 3.8.2 版本,低于他说的 3.9 版本


修改完成后,我们删除之前的项目,然后重新添加

再次运行还是不能成功,我们继续看日志,日志变了,只剩下一个问题了


重新调整了一下 Compose 文件,可以正常启动了

version: '3'services:rabbitmq1:image: rabbitmq:3.8.2-managementcontainer_name: rabbitmq1hostname: rabbitmq1ports:- "5672:5672"- "15672:15672"environment:- RABBITMQ_ERLANG_COOKIE=secret_cookie- RABBITMQ_NODENAME=rabbitmq1- RABBITMQ_CLUSTERED=true- RABBITMQ_CLUSTER_NODE_TYPE=discnetworks:- rabbitmq-clusterrabbitmq2:image: rabbitmq:3.8.2-managementcontainer_name: rabbitmq2hostname: rabbitmq2ports:- "5673:5672"- "15673:15672"environment:- RABBITMQ_ERLANG_COOKIE=secret_cookie- RABBITMQ_NODENAME=rabbitmq2- RABBITMQ_CLUSTERED=true- RABBITMQ_CLUSTER_NODE_TYPE=discnetworks:- rabbitmq-clusterrabbitmq3:image: rabbitmq:3.8.2-managementcontainer_name: rabbitmq3hostname: rabbitmq3ports:- "5674:5672"- "15674:15672"environment:- RABBITMQ_ERLANG_COOKIE=secret_cookie- RABBITMQ_NODENAME=rabbitmq3- RABBITMQ_CLUSTERED=true- RABBITMQ_CLUSTER_NODE_TYPE=discnetworks:- rabbitmq-clusternetworks:rabbitmq-cluster:driver: bridge


验证集群状态

我们开放一下端口:防火墙、安全组



尝试访问 MQ http://120.46.137.251:15672/

目前集群状态是没有成功了,只是运行了 3 个 MQ 实例,我们进行集群,进入实例执行命令

rabbitmqctl stop_apprabbitmqctl resetrabbitmqctl start_appln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &&echo "Asia/Shanghai" >/etc/timezonedate "+%Y-%m-%d %H:%M:%S" ## 显示设置后,新的系统时间exit

去第二个实例

rabbitmqctl stop_apprabbitmqctl resetrabbitmqctl join_cluster --ram rabbitmq1@rabbitmq1rabbitmqctl start_app


去第三个实例

rabbitmqctl stop_apprabbitmqctl resetrabbitmqctl join_cluster --ram rabbitmq1@rabbitmq1rabbitmqctl start_app

登录到 MQ 控制台,我们看看


集群成功了,三个实例运行正常

测试停掉其中一个实例

我们去关闭其中一个 MQ



节点 2 显示未运行