云服务器内容精选

  • 操作步骤 进入购买RabbitMQ实例页面。 选择“计费模式”、“区域”、“项目”和“可用区”。 设置“实例名称”和“企业项目”。 设置实例信息。 版本:RabbitMQ的版本号,当前仅支持RabbitMQ 3.8.35和AMQP-0-9-1。 部署架构:支持“单机”和“集群”。 单机:表示部署一个RabbitMQ代理。 集群:表示部署多个RabbitMQ代理,实现高可靠的消息存储。 代理规格:根据实际情况选择规格。RabbitMQ 3.8.35版本需要设置此参数。 为了保证服务的稳定可靠,RabbitMQ采用了默认的40%高水位配置。当内存占用率到达40%后,可能会触发内存高水位,内存高水位会触发流控,导致生产者发送消息被阻塞。为了避免高水位的产生,请及时消费积压在队列中的消息。 实例规格:根据实际情况选择规格。RabbitMQ AMQP-0-9-1版本需要设置此参数。 代理数量:根据实例情况选择代理个数。RabbitMQ AMQP-0-9-1版本没有此参数。 设置RabbitMQ实例的磁盘类型和储存空间。 RabbitMQ 3.8.35版本:单个代理存储空间,设置RabbitMQ实例单个代理的磁盘类型和储存空间。 RabbitMQ AMQP-0-9-1版本:存储空间,设置RabbitMQ实例所有代理的磁盘类型和存储空间总和。 如何选择磁盘类型请参考磁盘类型及性能介绍。 单机实例的取值范围:100GB~30000GB。 集群实例的取值范围(RabbitMQ 3.8.35版本):代理数*(100GB~30000GB)。 集群实例的取值范围(RabbitMQ AMQP-0-9-1版本):如表1所示。 表1 存储空间范围 型号 存储空间范围(GB) amqp.b2.large.2 200~60000 amqp.b2.large.4 amqp.b2.large.8 amqp.b2.large.12 虚拟私有云:选择已经创建好的虚拟私有云和子网。 虚拟私有云可以为您的RabbitMQ实例构建隔离的、能自主配置和管理的虚拟网络环境。 安全组:选择已经创建好的安全组。 安全组是一组对RabbitMQ实例的访问规则的集合。您可以单击右侧的“管理安全组”,跳转到网络控制台的安全组页面,查看或创建安全组。 设置“SSL”。 客户端连接实例时SSL认证的开关。开启SSL,则 数据加密 传输,安全性更高。 SSL开关在实例创建完成后不支持修改,请明确是否需要开启。 RabbitMQ AMQP-0-9-1版本不支持此参数。 图1 设置实例信息 设置连接RabbitMQ实例的用户名和密码。仅RabbitMQ 3.8.35版本需要设置此参数。 设置实例购买时长。 当选择了“包年/包月”计费模式时,页面才显示“购买时长”参数,您需要根据业务需要选择。 单击“更多配置”,设置更多相关信息。 设置“公网访问”。 您可以选择是否打开公网访问开关。 如果选择了开启,表示访问RabbitMQ实例可以通过弹性IP访问。这时页面会显示“弹性IP地址”,在“弹性IP地址”区域,您可下拉选择已有的弹性IP。另外,您可单击右侧的“创建弹性IP”,跳转到网络控制台的弹性公网IP页面,购买弹性公网IP。 图2 购买RabbitMQ实例时公网访问设置 公网访问与VPC内访问相比,可能存在网络丢包和抖动等情况,且访问时延有所增加,因此建议仅在业务开发测试阶段开启公网访问进行调试。 如果用户在虚拟私有云的服务页面手动解绑定或删除EIP,相应RabbitMQ实例的公网访问功能会自动关闭。 RabbitMQ AMQP-0-9-1版本如果要开启公网访问,需要在弹性负载均衡控制台绑定公网。 设置“标签”。 标签用于标识云资源,当您拥有相同类型的许多云资源时,可以使用标签按各种维度(例如用途、所有者或环境)对云资源进行分类。 如您的组织已经设定分布式消息服务RabbitMQ版的相关标签策略,则需按照标签策略规则为RabbitMQ实例添加标签。标签如果不符合标签策略的规则,则可能会导致RabbitMQ实例创建失败,请联系组织管理员了解标签策略详情。 如果您已经预定义了标签,在“标签键”和“标签值”中选择已经定义的标签键值对。另外,您可以单击右侧的“查看预定义标签”,系统会跳转到标签管理服务页面,查看已经预定义的标签,或者创建新的标签。 您也可以直接在“标签键”和“标签值”中设置标签。 当前每个RabbitMQ实例最多支持设置20个不同标签,标签的命名规格,请参考管理实例标签章节。 设置实例的描述信息。 填写完上述信息后,单击“立即购买”,进入“规格确认”页面。 确认实例信息无误且阅读并同意《华为云用户协议》后,如果“计费模式”选择“包年/包月”,单击“去支付”。根据界面提示信息,支付费用。如果“计费模式”选择“按需付费”,单击“提交”。 在实例列表页面查看实例是否创建成功。 创建实例大约需要3到15分钟,此时实例的“状态”为“创建中”。 当实例的“状态”变为“运行中”时,说明实例创建成功。 当实例的“状态”变为“创建失败”,请参考删除实例,删除创建失败的RabbitMQ实例,然后重新购买。如果重新购买仍然失败,请联系客服。
  • 操作场景 RabbitMQ实例采用物理隔离的方式部署,租户独占RabbitMQ实例。支持用户自定义规格和自定义特性,您可以根据业务需要定制相应计算能力和存储空间的RabbitMQ实例。 RabbitMQ是一款基于AMQP协议的开源服务,用于在分布式系统中存储转发消息,支持多种语言的客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP、AJAX等。 AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层的一个开放标准协议。
  • 维度 Key Value rabbitmq_instance_id RabbitMQ实例 rabbitmq_node RabbitMQ实例节点 rabbitmq_queue RabbitMQ实例队列 rabbitmq_vhost RabbitMQ实例Vhost rabbitmq_vhost_exchange RabbitMQ实例Exchange rabbitmq_vhost_queue RabbitMQ实例Queue
  • 操作场景 本章节主要介绍清空Queue中所有消息的操作,有以下几种方式,您可以根据实际情况选择任意一种方式: 方法一:在控制台清空Queue的消息 方法二:使用RabbitMQ WebUI清空Queue的消息 清空Queue消息后,Queue中的所有消息会被永久删除,且不可恢复,请谨慎操作。 RabbitMQ 3.8.35版本支持以上两种清空Queue中所有消息的方式,RabbitMQ AMQP-0-9-1版本只支持在控制台清空Queue中所有消息。
  • 准备依赖资源 RabbitMQ实例所需资源的具体要求和创建指导如表1所示。 表1 RabbitMQ实例依赖资源 准备资源 要求 创建指导 VPC和子网 RabbitMQ实例可以使用当前账号下已创建的VPC和子网,也可以使用新创建的VPC和子网,还可以使用共享VPC和子网,请根据实际需要进行配置。 共享VPC是基于 资源访问管理 (Resource Access Manager,简称 RAM )服务的机制,VPC的所有者可以将VPC内的子网共享给一个或者多个账号使用。通过共享VPC功能,可以简化网络配置,帮助您统一配置和运维多个账号下的资源,有助于提升资源的管控效率,降低运维成本。有关VPC子网共享的更多信息,请参见共享VPC。 在创建VPC和子网时应注意如下要求: 创建的VPC与RabbitMQ实例在相同的区域。 创建VPC和子网时,配置参数建议使用默认配置。 创建VPC和子网的操作指导请参考创建虚拟私有云和子网,若需要在已有VPC上创建和使用新的子网,请参考为虚拟私有云创建新的子网。 安全组 不同的RabbitMQ实例可以重复使用相同的安全组,也可以使用不同的安全组,请根据实际需要进行配置。 使用RabbitMQ实例前,添加表2所示安全组规则,其他规则请根据实际需要添加。 说明: 创建安全组后,系统默认添加入方向“允许安全组内的弹性云服务器彼此通信”规则和出方向“放通全部流量”规则,此时使用内网通过同一个VPC访问RabbitMQ实例,无需添加表2或表3的规则。 创建安全组的操作指导请参考创建安全组,为安全组添加规则的操作指导请参考添加安全组规则。 弹性IP地址 在创建弹性IP地址时,应注意如下要求: 创建的弹性IP地址与RabbitMQ实例在相同的区域。 弹性IP地址的数量必须与RabbitMQ实例的代理个数相同。 RabbitMQ控制台无法识别开启IPv6转换功能的弹性IP地址。 创建弹性IP地址的操作指导请参考申请弹性公网IP。 表2 安全组规则(RabbitMQ 3.8.35版本) 方向 协议 端口 源地址 说明 入方向 TCP 5672 0.0.0.0/0 访问RabbitMQ实例(关闭SSL加密) 入方向 TCP 5671 0.0.0.0/0 访问RabbitMQ实例(开启SSL加密) 入方向 TCP 15672 0.0.0.0/0 访问Web界面UI地址(关闭SSL加密) 入方向 TCP 15671 0.0.0.0/0 访问Web界面UI地址(开启SSL加密) 表3 安全组规则(RabbitMQ AMQP-0-9-1版本) 方向 协议 端口 源地址 说明 入方向 TCP 5672 0.0.0.0/0 访问RabbitMQ实例
  • 约束与限制 2020年7月1日之前购买的RabbitMQ实例,不支持在控制台开启插件,如果需要开启,请在控制台提工单,技术人员在后台开启插件。 2020年11月14日之前购买的RabbitMQ实例,不支持在控制台开启rabbitmq_consistent_hash_exchange插件,如果需要开启,请在控制台提工单,技术人员在后台开启插件。 开启插件过程中,不会重启实例。 rabbitmq_shovel和rabbitmq_federation插件在特定场景下才支持开启,具体如表2所示。 表2 支持开启插件的场景 实例 rabbitmq_shovel rabbitmq_federation 未开启SSL的单机实例 支持 支持 已开启SSL的单机实例 不支持 不支持 未开启SSL的集群实例 不支持 支持 已开启SSL的集群实例 不支持 不支持
  • 方式二:使用RabbitMQ WebUI创建 登录RabbitMQ WebUI。 在顶部导航栏选择“Admin”,进入Admin页面。 在右侧导航栏选择“Virtual Hosts”,进入Virtual Hosts页面。 图4 Virtual Hosts 在“Add a new virtual host”区域,输入Vhost名称,单击“Add virtual host”。 图5 创建Vhost(WebUI) 创建成功后,在“All virtual hosts”区域,显示创建成功的Vhost。 图6 Vhost列表(WebUI)
  • 方式三:调用API创建 在Linux中,连接RabbitMQ实例。 执行以下命令,创建Vhost。 curl -i -X PUT http://${USERNAME}:${PASSWORD}@${HOST}:${PORT}/api/vhosts/${VHOST_NAME} 参数说明如下: USERNAME:创建RabbitMQ实例时,设置的用户名。在实例详情页的“连接信息”区域,查看用户名。 PASSWORD:创建RabbitMQ实例时,设置的密码。如果忘记密码,参考重置实例密码,重新设置密码。 HOST:WebUI的地址。在实例详情页的“连接信息”区域,查看Web界面UI地址。 PORT:WebUI的端口号。在实例详情页的“连接信息”区域,查看Web界面UI地址中的端口号。 VHOST_NAME:待创建Vhost的名称。 示例如下: curl -i -X PUT http://root:txxxt@192.168.1.3:15672/api/vhosts/vhost-demo 创建成功后,回显如下所示。 图7 Vhost创建成功
  • 操作场景 每个Vhost(Virtual Hosts)相当于一个相对独立的RabbitMQ服务器。Vhost用作逻辑隔离,分别管理Exchange、Queue和Binding,使得应用安全地运行在不同的Vhost上,相互之间不会干扰。一个实例下可以有多个Vhost,一个Vhost里可以有若干个Exchange和Queue。生产者和消费者连接RabbitMQ实例时,需要指定一个Vhost。Vhost的相关介绍,请参考官网文档Virtual Hosts。 本章节主要介绍创建Vhost的操作,有以下几种方式,您可以根据实际情况选择任意一种方式: 方式一:在控制台创建 方式二:使用RabbitMQ WebUI创建 方式三:调用API创建 RabbitMQ 3.8.35版本支持以上三种创建Vhost的方式,RabbitMQ AMQP-0-9-1版本只支持在控制台创建Vhost。 图1 Vhost架构图
  • 操作步骤 登录RabbitMQ实例的Web UI。 在菜单栏,选择“Admin”。 图1 选择Admin菜单 (可选)选择右侧导航栏“Virtual Hosts”,然后输入“Name”,单击“Add virtual host”,创建Vhost。 如果您需要设置指定Vhost,请执行本步骤;如果不需要,请直接执行4。 图2 创建Vhost 选择右侧导航栏“Policies”,为Vhost设置规则。 如果为指定的Vhost设置,请在“Virtual Host”选择3创建的Vhost;如果没有,则默认为“/”。 图3 设置Vhost规则 参数解释如下: Name: policy的名称,用户自定义。 Pattern: queue的匹配模式(正则表达式)。 Definition: 镜像定义,包括三个部分ha-sync-mode、ha-mode、ha-params。 ha-sync-mode: 表示镜像队列中消息的同步方式,有效取值范围为:automatic和manual。 automatic:表示自动向master同步数据。 manual:表示手动向master同步数据。 ha-mode: 指明镜像队列的模式,有效取值范围为:all、exactly和nodes。 all:表示在集群所有的节点上进行镜像。 exactly:表示在指定个数的节点上进行镜像,节点的个数由ha-params指定。 nodes:表示在指定的节点上进行镜像,节点名称通过ha-params指定。 ha-params: ha-mode模式需要用到的参数。 Priority: 可选参数,policy的优先级。 单击“Add policy”。 规则添加成功后如下图所示。 图4 Vhost规则
  • 使用场景 默认情况下,RabbitMQ生产者生产的消息存储在内存中,当节点宕机或重启时,如何确保消息不丢失呢?RabbitMQ通过持久化机制实现,持久化包括Exchange持久化、Queue持久化和Message持久化。持久化是将内存中的消息写入到磁盘中,以防异常情况导致内存中的消息丢失。但是磁盘的读写速度远不如内存,开启消息持久化后,RabbitMQ的性能会下降。与惰性队列不同,持久化消息会在磁盘和内存中各存储一份,只有在内存空间不够时,才会将内存中的消息删除,存储到磁盘中。 非持久化Queue、Exchange在重启之后会丢失。 非持久化Message在重启之后会丢失(经过持久化Queue/Exchange的消息不会自动变为持久化消息)。 持久化消息在尚未完成持久化时,如果服务器重启,消息会丢失。 RabbitMQ AMQP-0-9-1版本Exchange、Queue、Message默认开启持久化。
  • 方式二:使用RabbitMQ WebUI删除 登录RabbitMQ WebUI。 在顶部导航栏选择“Admin”,进入Admin页面。 在右侧导航栏选择“Virtual Hosts”,进入Virtual Hosts页面。 图1 Virtual Hosts页面 单击待删除的Vhost名称,进入Vhost详情页。 图2 待删除的Vhost 在“Delete this vhost”区域,单击“Delete this virtual host”,弹出确认删除对话框。 图3 删除Vhost 单击“确定”,完成Vhost的删除。
  • 方式三:调用API删除 在Linux中,连接RabbitMQ实例。 执行以下命令,删除Vhost。 curl -i -X DELETE http://${USERNAME}:${PASSWORD}@${HOST}:${PORT}/api/vhosts/${VHOST_NAME} 参数说明如下: USERNAME:创建RabbitMQ实例时,设置的用户名。在实例详情页的“连接信息”区域,查看用户名。 PASSWORD:创建RabbitMQ实例时,设置的密码。如果忘记密码,参考重置实例密码,重新设置密码。 HOST:WebUI的地址。在实例详情页的“连接信息”区域,查看Web界面UI地址。 PORT:WebUI的端口号。在实例详情页的“连接信息”区域,查看Web界面UI地址中的端口号。 VHOST_NAME:待删除Vhost的名称。 示例如下: curl -i -X DELETE http://root:txxxt@192.168.1.3:15672/api/vhosts/vhost-demo 删除成功后,回显如下所示。 图4 Vhost删除成功
  • 方法五:调用API批量删除队列 在RabbitMQ实例未开启SSL时,通过编写Shell脚本循环调用API执行删除命令,实现批量删除队列。 在Linux系统中连接RabbitMQ实例,具体步骤请参考连接未开启SSL的RabbitMQ实例。 创建“delete_queues.sh”脚本文件。 touch delete_queues.sh 执行以下命令,编辑脚本。 vim delete_queues.sh 将以下内容复制到脚本中,其中USERNAME、PASSWORD、HOST和QUEUES_LIST的值,请根据实际情况修改。 #!/usr/bin/env bash USERNAME=root PASSWORD=Zsxxxdx HOST=192.168.0.241 PORT=15672 VHOST='%2F' QUEUES_LIST="test1 test2 test3"; for QUEUE_NAME in $QUEUES_LIST : do curl -i -XDELETE http://$USERNAME:$PASSWORD@$HOST:$PORT/api/queues/$VHOST/$QUEUE_NAME done 参数说明如下: USERNAME:创建实例时设置的用户名。 PASSWORD:创建实例时设置的密码,如果忘记密码,参考重置实例密码,重新设置密码。 HOST:在实例详情页,查看Web界面UI地址。 PORT:在实例详情页,查看Web界面UI端口号。 VHOST:Vhost名称,默认为“/”,在命令中设置为“%2F”。 QUEUES_LIST:待删除队列的名称,队列名称之间使用空格隔开。 保存脚本内容。 对脚本进行授权。 chmod 777 delete_queues.sh 执行脚本。 sh delete_queues.sh 删除成功后,回显如下: 图6 批量删除队列成功 您还可以在WebUI页面的“Queues”页签,查看队列是否成功删除。
  • 操作场景 本章节主要介绍删除Queue的操作,有以下几种方式,您可以根据实际情况选择任意一种方式: 方法一:在控制台删除Queue:在RabbitMQ控制台删除队列 方法二:在WebUI页面删除单个队列:在WebUI页面的“Queues”页签中,删除单个队列。 方法三:通过Policy批量删除队列:新增与待删除队列的前缀名称相同、且队列过期时间(TTL)为1毫秒的策略,通过此策略实现批量删除队列。 方法四:调用API删除单个队列:在RabbitMQ实例未开启SSL时,通过调用API删除单个队列。 方法五:调用API批量删除队列:在RabbitMQ实例未开启SSL时,通过编写Shell脚本循环调用API执行删除命令,实现批量删除队列。 删除Queue后,该Queue下的所有配置将会被删除,且无法恢复,请谨慎操作。 RabbitMQ 3.8.35版本支持以上五种删除Queue的方式,RabbitMQ AMQP-0-9-1版本只支持在控制台删除Queue。