云服务器内容精选

  • 应用迁移 添加注册中心集群信息。 参考3.f访问Nacos Sync服务。 在左侧导航栏选择“集群配置”,增加一个您自建的Nacos集群,若使用多个命名空间,需要多次添加。 命名空间为您自建待迁移应用所在的命名空间ID,用户密码为默认管理员的用户密码,若未使用鉴权功能修改过,默认为nacos,集群IP为您自己部署Nacos的IP与端口号。 集群名字可以自定义,但是一旦确认,不能被修改,否则基于此集群增加的任务,在Nacos Sync重启后,将不会恢复成功。 同1.b增加一个 CS E Nacos的集群,若使用多个命名空间,需要多次添加。 命名空间为您想要迁移至CSE Nacos的命名空间ID,用户密码为默认管理员的用户密码,若未使用鉴权功能修改过,默认为nacos,集群IP为CSE Nacos的内网地址+端口号,其获取方式可参考查看Nacos引擎详细信息,端口号为8848。 添加完成后,可以在集群配置列表中查询到增加的集群。 添加同步任务。 参考3.f访问Nacos Sync服务,增加一个同步任务,从您自建的Nacos集群同步到CSE Nacos集群,同步的粒度是服务,其中“源集群”为您自建的Nacos,“目标集群”为CSE Nacos。添加完成之后,可以在同步服务列表中,查看已添加的同步任务。 目标集群的服务名与分组名,需要与源集群的服务名和分组名一致,否则同步不了,不同的服务需要新建不同的任务。 确认是否完成数据同步,检查数据是否同步成功到CSE Nacos集群,可参考查看服务列表查看CSE Nacos中出现同步任务中的服务,即表示同步成功。 对所有待迁移的应用进行迁移与同步任务,并准备升级客户端应用的Nacos连接配置。
  • 注册中心替换 自建Nacos当中的服务提供实例,需要增加CSE Nacos到自建Nacos的反向同步任务,以保证业务不中断。 观察自建的Nacos集群和CSE 的 Nacos集群,查看两个集群的服务实例是否一致,健康状态是否正常。 修改客户端连接Nacos的配置,将服务中原有的自建Nacos集群访问地址更新成CSE Nacos集群的客户端访问地址,获取方式请参考查看Nacos引擎详细信息。 spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 # 将该地址改为CSE Nacos的集群地址 依次重新部署自建Nacos的服务实例,此时您的服务只在CSE Nacos 集群中进行了注册,完成了替换。 图示为Nacos Sync同步后的CSE Nacos服务实例。 进行服务端的重启替换时,需新增从CSE Nacos到自建Nacos的服务端任务,保证业务不中断。 Nacos Sync同步任务正常后,在升级provider服务时,新建CSE Nacos到自建Nacos的同步任务,再逐步替换配置、重启,最后下线自建Nacos与Nacos Sync组件。
  • 消息灰度 微服务蓝绿或灰度发布的业务场景中,灰度实例生产或消费的消息可能需要特殊处理,这时可以挂载Sermant消息灰度插件实现了消息的灰度能力,灰度实例生产者或者灰度流量生产灰度消息,灰度消费者消费灰度消息。 消息灰度配置: 配置项:grayscale.mq.config 作用范围:app=${service.meta.application}&environment=${service.meta.environment},即应用配置。service.meta.application、service.meta.environment的配置,默认为app=default&environment= 配置内容: # 消息灰度插件开启开关,默认为false不开启 enabled: false # 灰度组信息集合,每个灰度组包含consumerGroupTag(灰度组标识)、serviceMeta(微服务实例属性标签)及trafficTag(流量标签)。 grayscale: # 灰度组标签,例如基线消费组名称为basic_group,那么灰度名称为basic_group_${consumerGroupTag} - consumerGroupTag: gray serviceMeta: # ServiceMeta匹配标签,如果服务启动时service_meta_parameters设置为x_lane_tag:gray,那么当前消费者为灰度节点。 # 如果通过service_meta_version设置匹配信息,配置中的key一定要是'version',像version:1.0.1。 x_lane_tag: gray version: 1.0.1 trafficTag: # 流量标签匹配,配合sermant-tag-transmission插件一起生效,如果请求header中包含x_lane_canary=gray,并且开启标签透传插件,设置配置 # tag.transmission.config.matchRule.exact: ['x_lane_canary'],这时生产的消息为灰度消息. x_lane_canary: gray # serviceMeta与trafficTag关系如下: # 如果服务启动是service_meta_parameters设置信息x_lane_tag:gray,那么匹配为灰度实例。 # 1、如果是生产者,那么消息的property中设置属性'x_lane_canary: gray'标识为灰度消息。 # 2、如果是消费者,仅消费property包含'x_lane_canary: gray'属性的消息。 # 基线消费组信息定义 base: # 基线消费者消费消息模式,包含BASE/AUTO两个模式,默认值为AUTO模式 # BASE模式消费除excludeGroupTags设置的消费组标识以外的消息 # AUTO模式除excludeGroupTags设置的消费组标识及正在运行的灰度组以外的消息 consumeMode: AUTO # auto模式下,基线消费者定期检查灰度消费者时间间隔 autoCheckDelayTime: 15 # 基线消费者默认剔除的灰度组标识,对应上面consumerGroupTag设置的值,auto/base模式都会生效 excludeGroupTags: ["gray"] 消息灰度逻辑: 消息生产者 定时任务生产消息时,如果当前服务实例为灰度实例,那么生产消息时,在消息的属性中增加x_lane_canary: gray标签,如果为基线实例,不作处理。 流量触发生产消息时,如果当前流量为灰度流量(即header中含x_lane_canary: gray标签)时,那么生产消息时,在消息的属性中增加x_lane_canary: gray标签,如果为基线,则不作处理。 消息消费者 构建消息消费者时,如果当前实例为灰度实例(即满足serviceMeta的设置条件)时,消费组增加灰度标识,改为灰度组注册到RocketMq服务端,如原Group为default,那么灰度组为default_gray。 在监听消息中修改SubscriptionData中的subString为SQL92语句,从而过滤对应Topic、Group的消息。 构建SQL92过滤语句时,支持同一个服务构建RocketMq连接、Topic及Group不同组合的SQL92语句,即同一个服务支持RocketMq连接、Topic及Group不同维度组合下的消息灰度。 对于流量生产灰度消息或者消费消息,要结合Sermant的标签透传插件一起使用才能生效。 灰度逻辑中出现的灰度标签或消息属性标签信息是根据上述配置内容设置的,业务可以根据需要自定义所需标签。 版本要求: sermant-agent版本要求大于等于2.1.3; RocketMq客户端版本:大于4.8.0 RocketMq服务端需要支持开启消息过滤能力。 根据消息进行灰度路由调用。 很多业务场景中,在消费到消息后根据消息内容调用下游服务处理相应的业务,如果消费的是灰度消息,那么我们应该要调用下游对应的灰度实例去处理业务,反之调用基线实例处理业务,该能力需要结合标签透传插件并触发消息getBody方法才能生效。 Sermant的流量灰度可以参考Spring Cloud应用实现全链路灰度实现。 标签透传插件配置: 配置项:tag-config 作用范围:自定义标签配置group:sermant.tag-transmission-plugin 配置内容: enabled: true matchRule: exact: ["x_lane_canary"] x_lane_canary标签为上述消息灰度配置中trafficTag设置的对应标签。
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String IAM -Token。 X-Enterprise-Project-ID 否 String 如果不带则默认企业项目为"default",ID为"0"。 缺省值:0 Content-Type 是 String 该字段内容填为 "application/json;charset=UTF-8"。 Accept 是 String 该字段内容填为 "application/json"。
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 id String 微服务引擎ID。 name String 微服务引擎专名称。 jobId Integer 微服务引擎执行的任务ID。 状态码: 400 表4 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误信息。 detail String 详细定位信息。 状态码: 500 表5 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误信息。 detail String 详细定位信息。
  • 请求示例 PUT https://{endpoint}/v2/{project_id}/enginemgr/engines/{engine_id}/resize { "flavor" : "string", "inputs" : { "additionalProp1" : "string", "additionalProp2" : "string", "additionalProp3" : "string" } }
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 id String 引擎id。 name String 引擎名字。 job_id Integer 任务ID。 状态码: 400 表5 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误信息。 detail String 详细定位信息。 状态码: 500 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误信息。 detail String 详细定位信息。
  • ServiceComb引擎微服务开发框架版本要求 微服务开发框架推荐版本如下表所示。 如果已经使用低版本的微服务开发框架构建应用,建议升级到推荐版本,以获取最稳定和丰富的功能体验。 如果已使用Spring Cloud微服务开发框架开发了应用,推荐使用Spring Cloud Huawei接入应用。 Spring Cloud Huawei各分支版本与Spring Boot、Spring Cloud、Java Chassis及JDK编译版本的配套关系请参考版本配套说明。 如果基于开源开放和业界生态组件新开发微服务应用,可选择Spring Cloud框架。 如果希望使用ServiceComb引擎提供的开箱即用的治理能力和高性能的RPC框架,可选择Java Chassis框架。 框架 推荐版本 说明 Spring Cloud Huawei 1.10.9-2021.0.x及以上 采用Spring Cloud Huawei项目提供接入支持: 适配的Spring Cloud版本为2021.0.5 适配的Spring Boot版本为2.6.13 Spring Cloud微服务开发框架的版本说明请参见:https://github.com/huaweicloud/spring-cloud-huawei/releases。 Java Chassis 2.7.10及以上 可以直接使用开源项目提供的软件包接入,不需要引用其他第三方软件包。 Java Chassis微服务开发框架的版本说明请参见:https://github.com/apache/servicecomb-java-chassis/releases。 系统升级、改造过程中,三方软件冲突是最常见的问题。随着软件迭代速度越来越快,传统的软件兼容性管理策略已经不适应软件的发展,您可以参考三方软件版本管理策略来解决版本冲突。
  • 隔离仓 隔离是一种异常检测机制,常用的检测方法是请求超时、流量过大等。一般的设置参数包括超时时间、同时并发请求个数等。 Java Chassis的隔离作用于微服务消费者,需要微服务应用集成隔离模块,启用bizkeeper-consumer处理链。 配置如下: servicecomb: handler: chain: Consumer: default: bizkeeper-consumer isolation: Consumer: timeout: enabled: true #是否启用超时检测 timeoutInMilliseconds: 30000 #超时时间阈值 Spring Cloud Huawei的隔离策略同熔断一致,配置示例请参考熔断中相关内容。 父主题: 使用服务治理
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。 X-Enterprise-Project-ID 否 String 如果不带则默认企业项目为"default",ID为"0"。 Content-Type 是 String 该字段内容填为 "application/json;charset=UTF-8"。 Accept 是 String 该字段内容填为 "application/json"。
  • 响应示例 状态码: 200 查询微服务引擎详情响应结构体。 { "id" : "891bf21a-4024-4f47-b38c-bd259ca8f10a", "name" : "test", "description" : "string", "authType" : "NONE", "flavor" : "cse.s1.medium2", "payment" : "0", "version" : "2.3.1", "latestVersion" : "2.3.4", "status" : "Creating", "beDefault" : true, "createUser" : "string", "createTime" : 1635576800332, "cceSpec" : { "id" : 7465, "engineId" : "891bf21a-4024-4f47-b38c-bd259ca8f10a", "specType" : "CCE", "cluster" : "", "clusterId" : "41115a6f-912f-11eb-9af9-0255ac100188", "clusterNodes" : { "clusterNodes" : [ { "id" : "c13aaf5c-2192-421c-8e03-522e2b9a06b5", "az" : "test", "ip" : "172.31.25.277", "label" : "test", "status" : "Active" } ] }, "flavor" : "string", "region" : "test", "version" : "", "extendParam" : "" }, "externalEntrypoint" : { "externalAddress" : "192.168.0.169", "publicAddress" : "", "serviceEndpoint" : { "serviceCenter" : { "masterEntrypoint" : "https://192.168.0.169:30110", "masterEntrypointIpv6" : "https://[2407:c080:11f0:11:b11d:675c:97ab:65f6]:30110", "slaveEntrypoint" : "", "slaveEntrypointIpv6" : "", "type" : "REGISTRY" } }, "publicServiceEndpoint" : { "serviceCenter" : { "masterEntrypoint" : "", "masterEntrypointIpv6" : "", "slaveEntrypoint" : "", "slaveEntrypointIpv6" : "", "type" : "REGISTRY" } } }, "reference" : { "vpc" : "vpc-test", "azList" : [ "string" ], "networkId" : "88550801-e892-4f8e-b21b-f7147f604f69", "subnetCidr" : "192.168.0.0/24", "subnetCidrV6" : "2407:c080:11f0:11::/64", "subnetGateway" : "192.168.0.2", "publicIpId" : "", "serviceLimit" : 200, "instanceLimit" : 200, "inputs" : { "nodeFlavor" : "s6.large.2", "is_arm_cluster" : "false" } }, "latestJobId" : 12339, "enterpriseProjectId" : "0", "enterpriseProjectName" : "default", "engineAdditionalActions" : [ "Noting" ], "specType" : "CSE2", "type" : "CSE", "projectId" : "string", "vmIds" : [ ] }
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。 X-Enterprise-Project-ID 否 String 如果不带则默认企业项目为"default",ID为"0"。 缺省值:0 Content-Type 是 String 该字段内容填为 "application/json;charset=UTF-8"。 Accept 是 String 该字段内容填为 "application/json"。 X-Namespace-ID 否 String Nacos命名空间。
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 token String rbac token。 状态码: 400 表4 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误信息。 detail String 详细定位信息。 状态码: 500 表5 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误信息。 detail String 详细定位信息。
  • 使用限制 单账号跟踪的事件可以通过 云审计 控制台查询。多账号的事件只能在账号自己的事件列表页面去查看,或者到组织追踪器配置的OBS桶中查看,也可以到组织追踪器配置的 CTS /system日志流下面去查看。 用户通过云审计控制台只能查询最近7天的操作记录。如果需要查询超过7天的操作记录,您必须配置转储到 对象存储服务 (OBS)或 云日志 服务(LTS),才可在OBS桶或LTS日志组里面查看历史事件信息。否则,您将无法追溯7天以前的操作记录。 云上操作后,1分钟内可以通过云审计控制台查询管理类事件操作记录,5分钟后才可通过云审计控制台查询数据类事件操作记录。
  • 治理策略说明 支持限流、熔断、重试和隔离仓等策略的配置,具体说明见下表。 治理策略名称 说明 限流 面对流量风暴,或可预知的流量冲击,对非重点业务场景进行限流,防止瞬时流量过大造成服务和数据崩溃,导致服务不可用。 重试 当服务遇到一些非致命性的错误(如偶尔超时)时,可以通过重试的方式来避免服务的最终失败。 隔离仓 面对大规模并发流量风暴,或可预知的流量冲击,对并发流量进行控制,防止瞬时并发流量过大造成服务和数据崩溃,导致服务不可用。 熔断 当某业务场景的错误率超过设定阈值时,为了保证整体业务系统的可用性,在此后的一分钟内该业务场景下的所有请求会被拒绝。然后再以50%的比率接受服务请求并统计业务的错误率,直至该业务场景下的错误率降低到设定阈值以下。