华为云用户手册

  • 创建云服务器的metadata字段数据结构说明 该字段被如下接口使用: 创建云服务器 /v1/{project_id}/cloudservers 创建云服务器 /v1.1/{project_id}/cloudservers 表11 metadata预留字段数据结构说明 参数 是否必选 参数类型 描述 op_svc_userid 否 String 用户ID。 说明: 当extendparam结构中的chargingMode为prePaid(即创建包年包月付费的云服务器),且使用SSH秘钥方式登录云服务器时,该字段为必选字段。 agency_name 否 String 委托的名称。 委托是由租户管理员在统一身份认证服务(Identity and Access Management,IAM)上创建的,可以为弹性云服务器提供访问云服务的临时凭证。 说明: 委托获取、更新请参考如下步骤: 使用IAM服务提供的查询委托列表接口,获取有效可用的委托名称。 使用更新云服务器元数据接口,更新metadata中agency_name字段为新的委托名称。 __support_agent_list 否 String 云服务器是否支持主机安全服务、主机监控。 "ces":主机监控 "hss":主机安全服务基础版 "hss,hss-ent":主机安全服务企业版 取值样例: __support_agent_list:“hss,ces” 可以通过查询镜像详情判断创建云服务器使用的镜像是否支持主机安全服务或主机监控。
  • publicip字段数据结构说明 该字段被如下接口使用 创建云服务器 /v1/{project_id}/cloudservers 创建云服务器 /v1.1/{project_id}/cloudservers 表1 publicip字段数据结构说明 参数 是否必选 参数类型 描述 id 否 String 为待创建云服务器分配已有弹性公网IP时,分配的弹性公网IP的ID,UUID格式。 约束:只能分配状态(status)为DOWN的弹性公网IP。 eip 否 Object 配置云服务器自动分配弹性公网IP时,创建弹性公网IP的配置参数。 详情请参见表3。 delete_on_termination 否 Boolean 弹性公网IP随实例释放策略。 true:弹性公网IP随实例释放。 false:弹性公网IP不随实例释放。 默认值:false。 说明: 该字段仅按需弹性公网IP支持。 输入publicip字段数据结构中的id和eip的值时,只能选择其中一个参数值输入。
  • security_groups字段数据结构说明 该字段被如下接口使用 创建云服务器 /v1/{project_id}/cloudservers 创建云服务器 /v1.1/{project_id}/cloudservers 表2 security_groups字段数据结构说明 参数 是否必选 参数类型 描述 id 否 String 待创建云服务器的安全组,会对创建云服务器中配置的网卡生效。需要指定已有安全组的ID,UUID格式;若不传id字段,底层会创建默认安全组。
  • 数据结构导航 publicip字段数据结构说明 security_groups字段数据结构说明 eip字段数据结构说明 bandwidth字段数据结构说明 ipv6_bandwidth字段数据结构说明 创建弹性公网IP的extendparam字段数据结构说明 创建磁盘的extendparam字段数据结构说明 创建云服务器的extendparam字段数据结构说明 创建磁盘的metadata字段数据结构说明 创建云服务器的metadata字段数据结构说明 os:scheduler_hints字段数据结构说明 server_tags字段数据结构说明
  • eip字段数据结构说明 该字段被如下接口使用 创建云服务器 /v1/{project_id}/cloudservers 创建云服务器 /v1.1/{project_id}/cloudservers 表3 eip字段数据结构说明 参数 是否必选 参数类型 描述 iptype 是 String 弹性公网IP地址类型。 详情请参见“申请弹性公网IP”章节的“publicip”字段说明。 bandwidth 是 Object 弹性公网IP地址带宽参数。 详情请参见bandwidth字段数据结构说明。 extendparam 否 Object 创建弹性公网IP的附加信息。 详情请参见表6 说明: 当创建云服务器的extendparam结构中chargingMode为prePaid时(即创建包年包月付费的云服务器),若需要创建按需计费的弹性IP,该字段必选,需要在该结构中增加chargingMode为postPaid(按需付费)。
  • 准备Dockerfile Dockerfile是用于构建镜像的文本文件,其中包含了构建镜像所需的指令和说明。了解Dockerfile更详细说明,请参见Docker官网。 单击仓库名称,进入代码仓库。 单击文件列表上方“新建”,在下拉列表中选择“新建文件”。 图1 新建文件 输入文件名Dockerfile,文件详情输入以下命令行。 FROM openjdk:8-alpine ADD target /demo COPY ./target/demoapp.jar /demo CMD ["java","-jar","/demo/demoapp.jar"] 输入备注信息,单击“确定”。
  • 产品功能 在使用云日志服务LTS之前,建议您先通过表1了解LTS提供的主要功能。 表1 产品功能 功能 说明 端云全场景日志接入 支持40+云服务、主机/容器、移动端、跨云、多语言SDK、多账号汇聚,满足全场景客户丰富的日志接入需求。 海量日志存储搜索 对采集的日志数据,可以通过关键字查询、模糊查询等方式简单快速地进行查询,支持百亿日志秒级搜索,千亿日志迭代搜索,PB级智能冷存储。 SQL统计和可视化图表 LTS提供多种开箱即用的日志仪表盘模板,用户接入日志后即可快速分析。 将日志分析的结果使用可视化图表呈现出来,支持表格、折线图、饼图、柱状图、地图等统计图表,或将统计图表汇聚在仪表盘上统一呈现,方便运营分析。 日志监控与日志告警 支持对存储在云日志服务中的日志数据进行关键词统计或SQL统计,通过在一定时间段内日志中关键字出现次数,实时监控服务运行状态;支持自定义告警内容,支持短信/邮件/微信/钉钉/HTTP多渠道通知。 日志转储 主机和云服务的日志数据上报至云日志服务后,支持自定义存储时间。超出存储时间的日志数据将会被自动删除,对于需要长期存储的日志数据(日志持久化),云日志服务提供转储功能,可以将日志转储至对象存储服务(OBS)中长期保存。日志转储基于复制的转储机制,在LTS设置的存储时间内转储至OBS的日志,不会在LTS被删除。 同时LTS还支持转储DWS/DIS/DLI/DMS,让用户实现日志数据便捷在云服务间流转,快速构建水平解决方案。 日志消费与加工 LTS提供DSL日志加工的能力,内置200+函数,可以实现一站式日志规整、富化、脱敏、过滤、分裂等功能;另外结合定时SQL统计,可以对数据实现聚合统计。 支持用户使用SDK消费LTS日志,可以获取全量日志数据,可以作为流计算的数据源(SDK消费功能邀测中,暂未开放)。
  • 查询消息轨迹 在待查询消息所在行,单击“消息轨迹”。 查看消息的轨迹,确定是否生产/消费成功。 消息轨迹的参数说明如表1所示。 表1 消息轨迹的参数说明 参数 参数说明 生产者状态 生产者状态如下: 发送成功:消息发送成功,服务端已经成功存储消息。 提交成功:允许消费者消费此事务消息。 回滚:事务消息将被丢弃,不允许消费者消费此事务消息。 未知,待确认:事务消息状态暂时无法确定,等待固定时间后,服务端向生产者进行消息回查。 生产耗时 生产者发送消息的耗时。 生产地址 生产者的IP地址和端口号。 消费者状态 消费者状态如下: 消费成功 消费超时 消费异常 消费返回NULL 消费失败 消费时间 消费消息的时间。 消费耗时 消费者消费消息的耗时。 消费地址 消费者的IP地址和端口号。
  • 操作场景 本章节指导您通过查询消息功能查看具体的消息内容,以及确定消息是否生产/消费成功。 分布式消息服务RocketMQ版提供三种消息查询的方法:按Topic查询、按Message ID查询和按Message Key查询。 按Topic查询:查询某时间段内指定Topic下所有的消息。此方法属于范围查询,查询到的消息可能比较多。 按Message ID查询:查询指定Message ID的消息。此方法属于精确查找,可以快速查询到某一条消息。 按Message Key查询:查询指定Message Key的消息。此方法属于精确查找,可以快速查询到某一条消息。
  • 消息清理机制 无论消息是否被消费,RocketMQ的消息默认保留时间为48小时,最长保留时间为720小时。RocketMQ消息存储在CommitLog文件中,CommitLog文件大小为1GB,当一个CommitLog文件写满后,会生成一个新的CommitLog文件。RocketMQ删除消息是删除CommitLog文件,而不是删除一条消息。CommitLog文件为顺序写入,当最后写入的一条消息过期时,表示CommitLog文件过期。满足如下任意一个条件,CommitLog文件将会被清理: 每天凌晨4点会清理过期的文件,部分老实例由于未设置时区,清理时间为每天中午12点。 当磁盘使用率达到70%时,会立刻清理过期的文件。 当磁盘使用率达到85%时,会从最早创建的文件开始清理,不管文件是否已过期,直到磁盘空间充足。
  • 命令行模式连接实例 下载“rocketmq-tutorial”示例软件包。 wget https://dms-demos.obs.cn-north-1.myhuaweicloud.com/rocketmq-tutorial.zip 解压“rocketmq-tutorial”。 unzip rocketmq-tutorial.zip (可选)如果RocketMQ实例开启了ACL访问控制,执行mqadmin命令时,需要鉴权。 切换到解压后的软件包目录下,在“conf/tools.yml”文件中,增加如下内容。 accessKey:******* secretKey:******* accessKey和secretKey表示在控制台“用户管理”页面,创建的用户名和密钥。 进入“rocketmq-tutorial/bin”目录。 cd rocketmq-tutorial/bin 运行生产普通消息示例。 JAVA_OPT=-Dtls.enable=true sh mqadmin sendMessage -n "${连接地址}" -t ${Topic名称} -p "hello rocketmq" 参数说明如下: 连接地址:表示RocketMQ实例的“连接地址”(内网访问)/“公网连接地址”(公网访问)。 Topic名称:RocketMQ实例下创建的Topic名称。 示例如下,其中“100.xxx.xxx.89:8200;100.xxx.xxx.144:8200”为RocketMQ实例的元数据公网连接地址,“topic-test”为Topic名称。 JAVA_OPT=-Dtls.enable=true sh mqadmin sendMessage -n "100.xxx.xxx.89:8200;100.xxx.xxx.144:8200" -t topic-test -p "hello rocketmq" 使用Ctrl+C命令退出。 运行消费普通消息示例。 JAVA_OPT=-Dtls.enable=true sh mqadmin consumeMessage -n "${连接地址}" -t ${Topic名称} 参数说明如下: 连接地址:表示RocketMQ实例的“连接地址”(内网访问)/“公网连接地址”(公网访问)。 Topic名称:RocketMQ实例下创建的Topic名称。 示例如下,其中“100.xxx.xxx.89:8200;100.xxx.xxx.144:8200”为RocketMQ实例的元数据公网连接地址,“topic-test”为Topic名称。 JAVA_OPT=-Dtls.enable=true sh mqadmin consumeMessage -n "100.xxx.xxx.89:8200;100.xxx.xxx.144:8200" -t topic-test 如需停止消费使用Ctrl+C命令退出。 运行生产带消息轨迹的消息示例。 JAVA_OPT=-Dtls.enable=true sh mqadmin sendMessage -n "${连接地址}" -t ${Topic名称} -p "hello rocketmq" -m true 参数说明如下: 连接地址:表示RocketMQ实例的“连接地址”(内网访问)/“公网连接地址”(公网访问)。 Topic名称:RocketMQ实例下创建的Topic名称。 示例如下,其中“100.xxx.xxx.89:8200;100.xxx.xxx.144:8200”为RocketMQ实例的元数据公网连接地址,“topic-test”为Topic名称。 JAVA_OPT=-Dtls.enable=true sh mqadmin sendMessage -n "100.xxx.xxx.89:8200;100.xxx.xxx.144:8200" -t topic-test -p "hello rocketmq" -m true 使用Ctrl+C命令退出。 运行消费消息示例,并发送消息轨迹。 JAVA_OPT=-Dtls.enable=true sh mqadmin consumeMessage -n "${连接地址}" -t ${Topic名称} -m true 参数说明如下: 连接地址:表示RocketMQ实例的“连接地址”(内网访问)/“公网连接地址”(公网访问)。 Topic名称:RocketMQ实例下创建的Topic名称。 示例如下,其中“100.xxx.xxx.89:8200;100.xxx.xxx.144:8200”为RocketMQ实例的元数据公网连接地址,“topic-test”为Topic名称。 JAVA_OPT=-Dtls.enable=true sh mqadmin consumeMessage -n "100.xxx.xxx.89:8200;100.xxx.xxx.144:8200" -t topic-test -m true 使用Ctrl+C命令退出。
  • 操作场景 本章节指导您迁移其他厂商或自建RocketMQ实例的元数据到云上RocketMQ实例。 主要提供以下两种迁移方法,请根据实际情况选择: 方法一:通过mqadmin命令导出源实例的元数据,然后在云上RocketMQ实例中创建迁移任务。 方法二:导出源实例的Topic和消费组列表,然后通过脚本将Topic和消费组列表导入到云上RocketMQ实例中(适用于不支持通过mqadmin命令导出元数据的场景)。
  • 操作场景 RocketMQ实例4.8.0版本创建成功后,您可以根据业务需要,进行扩容,RocketMQ实例支持的变更配置如表1所示。 表1 变更配置列表(RocketMQ实例4.8.0版本) 变更配置类型 是否支持扩容 是否支持缩容 代理个数 √ × 存储空间 √ × 代理规格 √ × RocketMQ实例5.x版本创建成功后,您可以根据业务需要,进行扩容,RocketMQ实例支持的变更配置如表2所示。 表2 变更配置列表(RocketMQ实例5.x版本) 变更配置类型 是否支持扩容 是否支持缩容 存储空间(单机实例) √ × 实例规格(单机实例) × × 存储空间(集群实例) √ × 实例规格(集群实例) √ ×
  • CTS支持的DMS for RocketMQ操作 表1 云审计服务支持的分布式消息服务RocketMQ版操作列表 操作名称 资源类型 事件名称 创建Topic成功 reliability RocketMQ_Topic_CreationSuccess 创建Topic失败 reliability RocketMQ_Topic_CreationFailure 修改Topic成功 reliability RocketMQ_Topic_ModifySuccess 修改Topic失败 reliability RocketMQ_Topic_ModifyFailure 删除Topic成功 reliability RocketMQ_Topic_DeletionSuccess 删除Topic失败 reliability RocketMQ_Topic_DeletionFailure 批量删除Topic成功 reliability RocketMQ_Batch_Topic_DeletionSuccess 批量删除Topic失败 reliability RocketMQ_Batch_Topic_DeletionFailure 批量修改Topic成功 reliability RocketMQ_Batch_Topic_ModifySuccess 批量修改Topic失败 reliability RocketMQ_Batch_Topic_ModifyFailure 创建消费组成功 reliability RocketMQ_Create_GroupSuccess 创建消费组失败 reliability RocketMQ_Create_GroupFailure 编辑消费组成功 reliability RocketMQ_Group_ModifySuccess 编辑消费组失败 reliability RocketMQ_Group_ModifyFailure 删除消费组成功 reliability RocketMQ_Group_DeletionSuccess 删除消费组失败 reliability RocketMQ_Group_DeletionFailure 批量删除消费组成功 reliability RocketMQ_Batch_Group_DeletionSuccess 批量删除消费组失败 reliability RocketMQ_Batch_Group_DeletionFailure 批量编辑消费组成功 reliability RocketMQ_Batch_Group_ModifySuccess 批量编辑消费组失败 reliability RocketMQ_Batch_Group_ModifyFailure 重启实例节点成功 reliability restartInstanceBrokerSuccess 重启实例节点失败 reliability restartInstanceBrokerFailure 删除后台任务成功 reliability deleteDMSBackendJobSuccess 删除后台任务失败 reliability deleteDMSBackendJobFailure 创建DMS实例订单成功 reliability createDMSInstanceOrderSuccess 创建DMS实例订单失败 reliability createDMSInstanceOrderFailure 提交修改DMS实例订单请求成功 reliability modifyDMSInstanceOrderSuccess 提交修改DMS实例订单请求失败 reliability modifyDMSInstanceOrderFailure 提交扩容实例请求成功 reliability extendDMSInstanceSuccess 提交扩容实例请求失败 reliability extendDMSInstanceFailure 删除创建失败的DMS实例成功 reliability deleteDMSCreateFailureInstancesSuccess 删除创建失败的DMS实例失败 reliability deleteDMSCreateFailureInstancesFailure 提交批量删除DMS实例请求成功 reliability batchDeleteDMSInstanceSuccess 提交批量删除DMS实例请求失败 reliability batchDeleteDMSInstanceFailure 提交修改DMS实例信息请求成功 reliability modifyDMSInstanceInfoSuccess 提交修改DMS实例信息请求失败 reliability modifyDMSInstanceInfoFailure 批量删除DMS实例任务 reliability batchDeleteDMSInstanceTask 解冻DMS实例任务执行成功 reliability unfreezeDMSInstanceTaskSuccess 解冻DMS实例任务执行失败 reliability unfreezeDMSInstanceTaskFailure 冻结DMS实例任务执行成功 reliability freezeDMSInstanceTaskSuccess 冻结DMS实例任务执行失败 reliability freezeDMSInstanceTaskFailure 删除DMS实例任务执行成功 reliability deleteDMSInstanceTaskSuccess 删除DMS实例任务执行失败 reliability deleteDMSInstanceTaskFailure 创建DMS实例任务执行成功 reliability createDMSInstanceTaskSuccess 创建DMS实例任务执行失败 reliability createDMSInstanceTaskFailure 扩容DMS实例任务执行成功 reliability extendDMSInstanceTaskSuccess 扩容DMS实例任务执行失败 reliability extendDMSInstanceTaskFailure 修改DMS实例信息任务执行成功 reliability modifyDMSInstanceInfoTaskSuccess 修改DMS实例信息任务执行失败 reliability modifyDMSInstanceInfoTaskFailure
  • 命令行模式连接实例 下载“rocketmq-tutorial”示例软件包。 wget https://dms-demos.obs.cn-north-1.myhuaweicloud.com/rocketmq-tutorial.zip 解压“rocketmq-tutorial”。 unzip rocketmq-tutorial.zip (可选)如果RocketMQ实例开启了ACL访问控制,执行mqadmin命令时,需要鉴权。 切换到解压后的软件包目录下,在“conf/tools.yml”文件中,增加如下内容。 accessKey:******* secretKey:******* accessKey和secretKey表示在控制台“用户管理”页面,创建的用户名和密钥。 进入“rocketmq-tutorial/bin”目录。 cd rocketmq-tutorial/bin 运行生产普通消息示例。 sh mqadmin sendMessage -n "${连接地址}" -t ${Topic名称} -p "hello rocketmq" 参数说明如下: 连接地址:表示RocketMQ实例的“连接地址”(内网访问)/“公网连接地址”(公网访问)。 Topic名称:RocketMQ实例下创建的Topic名称。 示例如下,其中“100.xxx.xxx.89:8200;100.xxx.xxx.144:8200”为RocketMQ实例的元数据公网连接地址,“topic-test”为Topic名称。 sh mqadmin sendMessage -n "100.xxx.xxx.89:8200;100.xxx.xxx.144:8200" -t topic-test -p "hello rocketmq" 使用Ctrl+C命令退出。 运行消费普通消息示例。 sh mqadmin consumeMessage -n "${连接地址}" -t ${Topic名称} 参数说明如下: 连接地址:表示RocketMQ实例的“连接地址”(内网访问)/“公网连接地址”(公网访问)。 Topic名称:RocketMQ实例下创建的Topic名称。 示例如下,其中“100.xxx.xxx.89:8200;100.xxx.xxx.144:8200”为RocketMQ实例的元数据公网连接地址,“topic-test”为Topic名称。 sh mqadmin consumeMessage -n "100.xxx.xxx.89:8200;100.xxx.xxx.144:8200" -t topic-test 如需停止消费使用Ctrl+C命令退出。 运行生产带消息轨迹的消息示例。 sh mqadmin sendMessage -n "${连接地址}" -t ${Topic名称} -p "hello rocketmq" -m true 参数说明如下: 连接地址:表示RocketMQ实例的“连接地址”(内网访问)/“公网连接地址”(公网访问)。 Topic名称:RocketMQ实例下创建的Topic名称。 示例如下,其中“100.xxx.xxx.89:8200;100.xxx.xxx.144:8200”为RocketMQ实例的元数据公网连接地址,“topic-test”为Topic名称。 sh mqadmin sendMessage -n "100.xxx.xxx.89:8200;100.xxx.xxx.144:8200" -t topic-test -p "hello rocketmq" -m true 使用Ctrl+C命令退出。 运行消费消息示例,并发送消息轨迹。 sh mqadmin consumeMessage -n "${连接地址}" -t ${Topic名称} -m true 参数说明如下: 连接地址:表示RocketMQ实例的“连接地址”(内网访问)/“公网连接地址”(公网访问)。 Topic名称:RocketMQ实例下创建的Topic名称。 示例如下,其中“100.xxx.xxx.89:8200;100.xxx.xxx.144:8200”为RocketMQ实例的元数据公网连接地址,“topic-test”为Topic名称。 sh mqadmin consumeMessage -n "100.xxx.xxx.89:8200;100.xxx.xxx.144:8200" -t topic-test -m true 使用Ctrl+C命令退出。
  • 操作步骤 进入购买RocketMQ实例页面。 选择“计费模式”、“区域”、“项目”和“可用区”。 设置实例信息。 实例名称:实例的名称,用于区分不同的实例。 企业项目:根据实际业务情况选择企业项目。 规格选择模式:选择“默认”或者“规格测算”。 选择“默认”,且“版本”为“4.8.0”时,您需要根据实际情况选择RocketMQ实例支持的规格、代理个数和代理存储空间。 部署架构:仅支持“集群”,保持默认值即可。 CPU架构:仅支持“x86计算”,保持默认值即可。 代理规格:根据实际业务情况选择实例规格。 代理数量:RocketMQ实例的代理个数。 代理存储空间:选择RocketMQ实例的磁盘类型和单个代理的储存空间。 磁盘类型支持高I/O、超高I/O、通用型SSD和极速型SSD,如何选择磁盘类型请参考磁盘类型及性能介绍。 图1 默认的规格类型(RocketMQ实例4.8.0版本) 选择“默认”,且“版本”为“5.x”时,您需要根据实际情况选择RocketMQ实例支持的规格和代理存储空间。 实例类型:仅支持“基础版”,保持默认值即可。 部署架构:支持“单机”和“集群”。 单机:表示部署一个RocketMQ代理。单机仅用于测试环境,不可用于生产环境。 集群:表示部署多个RocketMQ代理。 CPU架构:仅支持“x86计算”,保持默认值即可。 实例规格:根据实际业务情况选择实例规格。 存储空间:选择RocketMQ实例的磁盘类型和储存空间总量。 磁盘类型支持高I/O、超高I/O、通用型SSD和极速型SSD,如何选择磁盘类型请参考磁盘类型及性能介绍。 图2 默认的规格类型(RocketMQ实例5.x版本) 选择规格测算时,系统根据您输入的参数(Topic个数、生产tps峰值、消费tps峰值、平均消息大小和日生产消息数),为您计算出不同规格所需的代理个数和代理存储空间,您根据实际情况选择。 图3 规格测算 设置实例网络环境信息。 在“虚拟私有云”下拉列表,选择已经创建好的虚拟私有云和子网。 虚拟私有云可以为您的RocketMQ实例构建隔离的、能自主配置和管理的虚拟网络环境。 虚拟私有云和子网在RocketMQ实例创建完成后,不支持修改。 在“安全组”下拉列表,可以选择已经创建好的安全组。 安全组是一组对RocketMQ实例访问规则的集合。 设置SSL。 客户端连接RocketMQ实例时,是否开启SSL认证。开启SSL,则数据加密传输,安全性更高。 创建实例后,SSL开关不支持修改,请慎重选择。如果创建后需要修改,需要重新创建实例。 RocketMQ实例5.x基础版不支持此功能。 设置ACL访问控制。 开启ACL访问控制后,为不同用户赋予不同的Topic和消费组权限,以达到用户之间的权限隔离。 设置实例购买时长。 当选择了“包年/包月”付费模式时,页面才显示“购买时长”参数,您需要根据业务需要选择。 单击“更多配置”,设置更多相关信息。 设置“公网访问”。 “公网访问”默认为关闭状态,您可以选择是否开启。开启公网访问后,还需要为每个节点设置对应的IPv4弹性IP地址。 设置标签。 标签用于标识云资源,当您拥有相同类型的许多云资源时,可以使用标签按各种维度(例如用途、所有者或环境)对云资源进行分类。 如您的组织已经设定分布式消息服务RocketMQ版的相关标签策略,则需按照标签策略规则为RocketMQ实例添加标签。标签如果不符合标签策略的规则,则可能会导致RocketMQ实例创建失败,请联系组织管理员了解标签策略详情。 如果您已经预定义了标签,在“标签键”和“标签值”中选择已经定义的标签键值对。另外,您可以单击右侧的“查看预定义标签”,跳转到标签管理服务页面,查看已经预定义的标签,或者创建新的标签。 您也可以直接在“标签键”和“标签值”中设置标签。 每个RocketMQ实例最多支持设置20个不同标签,标签的命名规格,请参考配置RocketMQ实例标签章节。 设置实例的描述信息。 填写完上述信息后,单击“立即购买”,进入规格确认页面。 确认实例信息无误且阅读并同意《华为云用户协议》后,如果“计费模式”选择“包年/包月”,单击“去支付”。根据界面提示信息,支付费用。如果“计费模式”选择“按需付费”,单击“提交”。 在实例列表页面查看实例是否创建成功。 创建实例大约需要3到15分钟,此时实例的“状态”为“创建中”。 当实例的“状态”变为“运行中”时,说明实例创建成功。 当实例的“状态”变为“创建失败”,请参考删除RocketMQ实例,删除创建失败的实例,然后重新创建。如果重新创建仍然失败,请联系客服。
  • 前提条件 在购买RocketMQ实例前,您需要提前准备相关依赖资源,包括虚拟私有云(Virtual Private Cloud,以下简称VPC)、子网和安全组,并配置安全组策略。每个RocketMQ实例都部署在某个VPC中,并绑定具体的子网和安全组,通过这样的方式为RocketMQ提供一个隔离的、用户自主配置和管理的虚拟网络环境以及安全保护策略,提升实例的安全性。 RocketMQ实例所需资源的具体要求和创建指导如表1所示。 表1 RocketMQ实例依赖资源 准备资源 要求 创建指导 VPC和子网 RocketMQ实例可以使用当前账号下已创建的VPC和子网,也可以使用新创建的VPC和子网,还可以使用共享VPC和子网,请根据实际需要进行配置。 共享VPC是基于资源访问管理(Resource Access Manager,简称RAM)服务的机制,VPC的所有者可以将VPC内的子网共享给一个或者多个账号使用。通过共享VPC功能,可以简化网络配置,帮助您统一配置和运维多个账号下的资源,有助于提升资源的管控效率,降低运维成本。有关VPC子网共享的更多信息,请参见共享VPC。 在创建VPC和子网时应注意如下要求: 创建的VPC与使用的RocketMQ实例应在相同的区域。 创建VPC和子网时,配置参数建议使用默认配置。 创建VPC和子网的操作指导请参考创建虚拟私有云和子网,若需要在已有VPC上创建和使用新的子网,请参考为虚拟私有云创建新的子网。 安全组 不同的RocketMQ实例可以重复使用相同的安全组,也可以使用不同的安全组,请根据实际需要进行配置。 使用RocketMQ实例必须添加表2或表3所示安全组规则,其他规则请根据实际需要添加。 说明: 创建安全组后,系统默认添加入方向“允许安全组内的弹性云服务器彼此通信”规则和出方向“放通全部流量”规则,此时使用内网通过同一个VPC访问RocketMQ实例,无需添加表2或表3的规则。 创建安全组的操作指导请参考创建安全组,为安全组添加规则的操作指导请参考添加安全组规则。 弹性IP地址 在创建弹性IP地址时,应注意如下要求: 创建的弹性IP地址与RocketMQ实例在相同的区域。 RocketMQ控制台无法识别开启IPv6转换功能的弹性IP地址。 创建弹性IP地址的操作指导请参考申请弹性公网IP。 表2 安全组规则(RocketMQ实例4.8.0版本) 方向 协议 端口 源地址 说明 入方向 TCP 8100 0.0.0.0/0 通过内网访问元数据节点的端口 入方向 TCP 8200 0.0.0.0/0 公网访问元数据节点的端口 入方向 TCP 10100-10199 0.0.0.0/0 访问业务节点的端口 表3 安全组规则(RocketMQ实例5.x版本) 方向 协议 端口 源地址 说明 入方向 TCP 8100 0.0.0.0/0 使用TCP协议,通过内网访问实例的端口 入方向 TCP 8200 0.0.0.0/0 使用TCP协议,通过公网访问实例的端口 入方向 TCP 10100-10199 0.0.0.0/0 使用TCP协议,访问业务节点的端口 入方向 TCP 8080 0.0.0.0/0 使用gRPC协议,通过内网访问实例的端口 入方向 TCP 8081 0.0.0.0/0 使用gRPC协议,通过公网访问实例的端口
  • 操作场景 分布式消息服务RocketMQ版控制台支持重启实例的某个Broker节点,或者所有Broker节点。 主节点重启过程中,客户端的生产和消费请求会被拒绝,持续时间不超过30s,建议在业务量少时重启节点。重启备节点,不会影响业务的使用。 怎么判断哪个是主节点? 主节点为“Broker ID”显示“0”的节点。 图1 重启节点 仅在RocketMQ实例4.8.0版本支持重启节点,5.x版本不支持。
  • 操作步骤(Go) 在客户端开启消息轨迹的方法如下: 执行以下命令,检查是否已安装Go。 go version 返回如下回显时,说明Go已经安装。 [root@ecs-test sarama]# go version go version go1.16.5 linux/amd64 如果未安装Go,请下载并安装。 新建一个“go.mod”,并增加以下代码,添加依赖。 module rocketmq-example-go go 1.13 require ( github.com/apache/rocketmq-client-go/v2 v2.1.0 ) 生产者开启消息轨迹(以下加粗内容需要替换为实例自有信息,请根据实际情况替换)。 package main import ( "context" "fmt" "os" "time" "github.com/apache/rocketmq-client-go/v2" "github.com/apache/rocketmq-client-go/v2/primitive" "github.com/apache/rocketmq-client-go/v2/producer" ) func main() { namesrvs := []string{"192.168.0.1:8100"} traceCfg := &primitive.TraceConfig{ Access: primitive.Local, Resolver: primitive.NewPassthroughResolver(namesrvs), } p, _ := rocketmq.NewProducer( producer.WithNsResolver(primitive.NewPassthroughResolver([]string{"192.168.0.1:8100"})), producer.WithRetry(2), producer.WithTrace(traceCfg)) err := p.Start() if err != nil { fmt.Printf("start producer error: %s", err.Error()) os.Exit(1) } res, err := p.SendSync(context.Background(), primitive.NewMessage("topic1", []byte("Hello RocketMQ Go Client!"))) if err != nil { fmt.Printf("send message error: %s\n", err) } else { fmt.Printf("send message success: result=%s\n", res.String()) } time.Sleep(10 * time.Second) err = p.Shutdown() if err != nil { fmt.Printf("shutdown producer error: %s", err.Error()) } } 消费者开启消息轨迹(以下加粗内容需要替换为实例自有信息,请根据实际情况替换)。 package main import ( "context" "fmt" "os" "time" "github.com/apache/rocketmq-client-go/v2" "github.com/apache/rocketmq-client-go/v2/consumer" "github.com/apache/rocketmq-client-go/v2/primitive" ) func main() { namesrvs := []string{"192.168.0.1:8100"} traceCfg := &primitive.TraceConfig{ Access: primitive.Local, Resolver: primitive.NewPassthroughResolver(namesrvs), } c, _ := rocketmq.NewPushConsumer( consumer.WithGroupName("testGroup"), consumer.WithNsResolver(primitive.NewPassthroughResolver([]string{"192.168.0.1:8100"})), consumer.WithTrace(traceCfg), ) err := c.Subscribe("TopicTest", consumer.MessageSelector{}, func(ctx context.Context, msgs ...*primitive.MessageExt) (consumer.ConsumeResult, error) { fmt.Printf("subscribe callback: %v \n", msgs) return consumer.ConsumeSuccess, nil }) if err != nil { fmt.Println(err.Error()) } // Note: start after subscribe err = c.Start() if err != nil { fmt.Println(err.Error()) os.Exit(-1) } time.Sleep(time.Hour) err = c.Shutdown() if err != nil { fmt.Printf("shutdown Consumer error: %s", err.Error()) } }
  • 操作步骤(Java) 在客户端开启消息轨迹的方法如下: 生产者开启消息轨迹(除事务消息以外的消息类型) 构造函数的“enableMsgTrace”参数传入“true”,例如: DefaultMQProducer producer = new DefaultMQProducer("ProducerGroupName", true); 生产者开启消息轨迹(事务消息) 构造函数的“enableMsgTrace”参数传入“true”,例如: TransactionMQProducer producer = new TransactionMQProducer(null, "ProducerGroupName", null, true, null); 消费者开启消息轨迹 构造函数的“enableMsgTrace”参数传入“true”,例如: DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("ConsumerGroupName", true);
  • 示例流程 图1 给用户授权DMS for RocketMQ权限流程 创建用户组并授权 在IAM控制台创建用户组,并授予DMS for RocketMQ的管理员权限“DMS ReadOnlyAccess”。 创建用户并加入用户组 在IAM控制台创建用户,并将其加入1中创建的用户组。 用户登录并验证权限 新创建的用户登录控制台,切换至授权区域,验证权限: 在“服务列表”中选择分布式消息服务RocketMQ版,进入RocketMQ实例主界面,单击右上角“购买RocketMQ实例”,尝试购买RocketMQ实例,如果无法购买RocketMQ实例(假设当前权限仅包含DMS ReadOnlyAccess),表示“DMS ReadOnlyAccess”已生效。 在“服务列表”中选择云硬盘(假设当前策略仅包含DMS ReadOnlyAccess),若提示权限不足,表示“DMS ReadOnlyAccess”已生效。
  • DMS for RocketMQ自定义策略样例 如果系统预置的DMS for RocketMQ权限,不满足您的授权要求,可以创建自定义策略。自定义策略中可以添加的授权项(Action)请参考细粒度策略支持的授权项。 目前华为云支持以下两种方式创建自定义策略: 可视化视图创建自定义策略:无需了解策略语法,按可视化视图导航栏选择云服务、操作、资源、条件等策略内容,可自动生成策略。 JSON视图创建自定义策略:可以在选择策略模板后,根据具体需求编辑策略内容;也可以直接在编辑框内编写JSON格式的策略内容。 具体创建步骤请参见:创建自定义策略。本章为您介绍常用的DMS for RocketMQ自定义策略样例。 DMS for RocketMQ的权限与策略基于分布式消息服务DMS,因此在IAM服务中为DMS for RocketMQ分配用户与权限时,请选择并使用“DMS”的权限与策略。 示例1:授权用户删除实例和重启实例 { "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "dms:instance:modifyStatus", "dms:instance:delete" ] } ] } 示例2:拒绝用户删除实例 拒绝策略需要同时配合其他策略使用,否则没有实际作用。用户被授予的策略中,一个授权项的作用如果同时存在Allow和Deny,则遵循Deny优先原则。 如果您给用户授予DMS FullAccess的系统策略,但不希望用户拥有DMS FullAccess中定义的删除实例权限,您可以创建一条拒绝删除实例的自定义策略,然后同时将DMS FullAccess和拒绝策略授予用户,根据Deny优先原则,则用户可以对DMS for RocketMQ执行除了删除实例外的所有操作。拒绝策略示例如下: { "Version": "1.1", "Statement": [ { "Effect": "Deny", "Action": [ "dms:instance:delete" ] } ] }
  • DMS for RocketMQ请求条件 您可以在创建自定义策略时,通过添加“请求条件”(Condition元素)来控制策略何时生效。请求条件包括条件键和运算符,条件键表示策略语句的 Condition元素,分为全局级条件键和服务级条件键。全局级条件键(前缀为g:)适用于所有操作,服务级条件键(前缀为服务缩写,如dms:)仅适用于对应服务的操作。运算符与条件键一起使用,构成完整的条件判断语句。 DMS for RocketMQ通过IAM预置了一组条件键,例如,您可以先使用dms:ssl条件键检查RocketMQ实例是否开启SSL,然后再允许执行操作。下表显示了适用于DMS for RocketMQ服务特定的条件键。 表1 DMS for RocketMQ请求条件 DMS for RocketMQ条件键 运算符 描述 dms:publicIP Bool Null 是否开启公网 dms:ssl Bool Null 是否开启SSL
  • 什么是死信队列? 死信队列用于处理无法被正常消费的消息。 一条消息初次消费失败会被重试消费,若重试次数达到最大值(默认16次,在客户端可配置)时,依然消费失败,则其将被投递到该消费者对应的特殊队列(即死信队列)中,这种消息被称为死信消息。 死信消息具有如下特性: 不会再被消费者正常消费。 死信消息默认保留时间为48小时,超时后,会被自动删除。如果想要修改死信消息保留时间,请参考修改RocketMQ消息保留时间。
  • 操作场景 本章节主要介绍如何查询、导出和重新投递死信消息。 分布式消息服务RocketMQ版提供三种死信消息查询的方法:按Group查询、按Message ID查询和按Message Key查询。 按Group查询:查询某时间段内指定消费组下所有的死信消息。此方法属于范围查询,查询到的死信消息可能比较多。 按Message ID查询:查询指定Message ID的消息。此方法属于精确查找,可以快速查询到某一条死信消息。 按Message Key查询:查询指定Message Key的消息。此方法属于精确查找,可以快速查询到某一条死信消息。
  • 维度 Key Value reliablemq_instance_id RocketMQ实例 reliablemq_broker RocketMQ实例节点 reliablemq_topics RocketMQ实例队列 reliablemq_groups RocketMQ实例的消费组 reliablemq_groups_topics RocketMQ实例队列的消费组 reliablemq_dlq_topics RocketMQ实例的死信队列
  • RocketMQ业务使用流程 使用RocketMQ实例生产消费消息的流程如下图所示。 图1 RocketMQ业务使用流程 创建用户并授权使用DMS for RocketMQ 创建IAM用户,并授予DMS for RocketMQ的权限,以达到用户之间权限的隔离。 购买RocketMQ实例 RocketMQ实例采用物理隔离的方式部署,租户独占RocketMQ实例。 创建RocketMQ Topic 创建用于存储消息的Topic,供生产者生产消息以及消费者订阅消息。 连接实例 客户端使用内网/公网通过命令行连接RocketMQ实例,并生产消费消息。 管理消息 在控制台查看消息。
  • 创建用户 在左侧导航栏,单击“用户管理”,进入“用户管理”页面。 单击“创建用户”,弹出“创建用户”对话框。 参考表1,填写用户名称和配置信息。 表1 用户参数说明 参数 说明 名称 自定义用户名称,用于识别不同的用户。 用户名创建成功后,不可修改。 IP白名单 如果请求的来源IP为IP白名单中的地址,不需要校验用户密钥是否正确,且具有所有Topic和消费组的发布+订阅权限。 IP白名单可以配置为具体的IP地址,也可以配置为网段。如:192.168.1.2,192.168.2.3或者192.*.*.* 管理员 开启管理员时,具有所有Topic和消费组的发布+订阅权限。 默认Topic权限 默认的Topic权限。 如果为指定Topic设置特殊权限,特殊权限会覆盖默认权限,此Topic的实际权限为特殊权限。例如:默认权限为订阅,指定Topic的特殊权限为发布+订阅,则此Topic实际权限为发布+订阅。 默认消费组权限 默认的消费组权限。 如果为指定消费组设置特殊权限,特殊权限会覆盖默认权限,此消费组的实际权限为特殊权限。例如:默认权限为订阅,指定消费组的权限为禁止,则此消费组实际权限为禁止。 密钥 设置用户的密钥。 单击“确定”,完成用户的创建。
  • 连接RocketMQ网络要求 客户端可以通过公网连接RocketMQ实例,也可以通过内网连接RocketMQ实例。使用内网连接时,注意以下几点: 如果客户端和RocketMQ实例部署在同一个VPC内,网络默认互通。 如果客户端和RocketMQ实例部署在不同VPC中,由于VPC之间逻辑隔离,客户端和RocketMQ实例不能直接通信,需要打通VPC之间的网络。 客户端连接RocketMQ实例的方式如表1所示。 表1 连接方式说明 连接方式 实现方式 参考文档 公网连接 在RocketMQ控制台开启公网访问,配置弹性公网IP,客户端通过弹性公网IP访问RocketMQ实例。 配置RocketMQ实例的公网访问 内网连接 客户端和RocketMQ实例部署在同一个VPC中,此时网络默认互通。 - 客户端和RocketMQ实例部署在同一个Region的不同VPC中,利用VPC对等连接将两个VPC间的网络打通,实现跨VPC访问。 对等连接 客户端连接RocketMQ实例前,需要放通如下安全组,否则会连接失败。 创建安全组后,系统默认添加入方向“允许安全组内的彼此通信”规则和出方向“放通全部流量”规则,此时使用内网通过同一个VPC访问RocketMQ实例,无需添加表2和表3的规则。 表2 安全组规则(RocketMQ实例4.8.0版本) 方向 协议 端口 源地址 说明 入方向 TCP 8100 0.0.0.0/0 通过内网访问元数据节点的端口 入方向 TCP 8200 0.0.0.0/0 公网访问元数据节点的端口 入方向 TCP 10100-10199 0.0.0.0/0 访问业务节点的端口 表3 安全组规则(RocketMQ实例5.x版本) 方向 协议 端口 源地址 说明 入方向 TCP 8100 0.0.0.0/0 使用TCP协议,通过内网访问实例的端口 入方向 TCP 8200 0.0.0.0/0 使用TCP协议,通过公网访问实例的端口 入方向 TCP 10100-10199 0.0.0.0/0 使用TCP协议,访问业务节点的端口 入方向 TCP 8080 0.0.0.0/0 使用gRPC协议,通过内网访问实例的端口 入方向 TCP 8081 0.0.0.0/0 使用gRPC协议,通过公网访问实例的端口 父主题: 配置RocketMQ网络连接
  • 迁移准备 配置网络环境。 分布式消息服务RocketMQ版实例分内网地址以及公网地址两种网络连接方式。如果使用公网地址,则消息生产与消费客户端需要有公网访问权限,并配置如下安全组。 表1 安全组规则 方向 协议 端口 源地址 说明 入方向 TCP 8200 0.0.0.0/0 公网访问元数据节点的端口 入方向 TCP 10100-10199 0.0.0.0/0 访问业务节点的端口 购买分布式消息服务RocketMQ版实例。 具体请参考购买RocketMQ实例。 准备一台Linux系统的主机,在主机中安装Java Development Kit 1.8.111或以上版本,并完成环境变量配置。
共100000条