华为云耀云服务器(Hyper Elastic Cloud Server) HECS 是一种可以快速搭建且易于管理的新一代云服务器,支持全方位性能监测,快速锁定中高风险信息
并及时提出建议,确保业务平稳运行;同时提供开箱即用的镜像,实现一键应用部署。
与弹性云服务器相比,云耀云服务器简化了购买ECS过程中的一些高级配置,一站式融合购买、登录、磁盘配置、网络配置、云监控、主机安全等多种功能,帮助您更加便捷高效的部署、配置和管理应用。
但是 HECS 底层使用的物理硬件资源与ECS一致,同CPU、内存的HECS与ECS计算能力在同一标准
另外就是 HECS 和普通的 ECS 有足够的成本优势
中小企业便捷高效的在云端构建电商网站、Web应用、小程序、学习环境、各类开发测试等,简单上云快一步
简而言之
适合于 IT 能力相对较弱的初创及成长型企业和入门开发者
随着云计算时代的进一步深入,越来越多的中小企业和开发者需要一款简单易用、高能高效的云计算基础设施产品来
支撑自身业务运营和创新开发。华为云焕新推出的云耀云服务器L实例,正是满足企业和开发者需求的完美选择
主要解决如下的几个核心痛点问题
基础架构
RabbitMQ是一个开源的消息代理系统,用于支持分布式应用程序间的消息传递。在实际生产环境中,我们通常需要搭建RabbitMQ的集群来提高可用性和性能
Docker Compose是一个用于定义和运行多容器Docker应用程序的工具,我们可以使用Docker Compose来轻松地搭建RabbitMQ镜像集群
我们登录到宝塔面板,因为之前已经安装了 Docker 、Docker Compose ,本次不再安装,我们坐下验证工作即可,确保软件正常运行
version: '3'
services:
rabbitmq1:
image: rabbitmq:3-management
container_name: rabbitmq1
hostname: rabbitmq1
ports:
- "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-cluster
rabbitmq2:
image: rabbitmq:3-management
container_name: rabbitmq2
hostname: rabbitmq2
ports:
- "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-cluster
rabbitmq3:
image: rabbitmq:3-management
container_name: rabbitmq3
hostname: rabbitmq3
ports:
- "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-cluster
networks:
rabbitmq-cluster:
driver: bridge
我们先拉取镜像
进行容器编排,选择 MQ 模版,输入名称
等待执行结果,预计需要几分钟
意思是存在一些版本的问题,以及 cookie 目录需要 root 用户才可以访问的问题
那我们对症下药,变更一下 MQ 的版本,我们改为 3.8.2 版本,低于他说的 3.9 版本
再次运行还是不能成功,我们继续看日志,日志变了,只剩下一个问题了
version: '3'
services:
rabbitmq1:
image: rabbitmq:3.8.2-management
container_name: rabbitmq1
hostname: rabbitmq1
ports:
- "5672:5672"
- "15672:15672"
environment:
- RABBITMQ_ERLANG_COOKIE=secret_cookie
- RABBITMQ_NODENAME=rabbitmq1
- RABBITMQ_CLUSTERED=true
- RABBITMQ_CLUSTER_NODE_TYPE=disc
networks:
- rabbitmq-cluster
rabbitmq2:
image: rabbitmq:3.8.2-management
container_name: rabbitmq2
hostname: rabbitmq2
ports:
- "5673:5672"
- "15673:15672"
environment:
- RABBITMQ_ERLANG_COOKIE=secret_cookie
- RABBITMQ_NODENAME=rabbitmq2
- RABBITMQ_CLUSTERED=true
- RABBITMQ_CLUSTER_NODE_TYPE=disc
networks:
- rabbitmq-cluster
rabbitmq3:
image: rabbitmq:3.8.2-management
container_name: rabbitmq3
hostname: rabbitmq3
ports:
- "5674:5672"
- "15674:15672"
environment:
- RABBITMQ_ERLANG_COOKIE=secret_cookie
- RABBITMQ_NODENAME=rabbitmq3
- RABBITMQ_CLUSTERED=true
- RABBITMQ_CLUSTER_NODE_TYPE=disc
networks:
- rabbitmq-cluster
networks:
rabbitmq-cluster:
driver: bridge
我们开放一下端口:防火墙、安全组
尝试访问 MQ http://120.46.137.251:15672/
目前集群状态是没有成功了,只是运行了 3 个 MQ 实例,我们进行集群,进入实例执行命令
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &&
echo "Asia/Shanghai" >/etc/timezone
date "+%Y-%m-%d %H:%M:%S" ## 显示设置后,新的系统时间
exit
去第二个实例
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbitmq1@rabbitmq1
rabbitmqctl start_app
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbitmq1@rabbitmq1
rabbitmqctl start_app
登录到 MQ 控制台,我们看看
我们去关闭其中一个 MQ