云服务器内容精选

  • 下载并上传天气预报组件软件包 参考表1下载天气预报组件软件包到本地(本实践使用Java Chassis微服务开发框架开发的组件)。 表1 天气预报组件软件包说明 组件微服务开发框架 组件名称 组件软件包名称 组件软件包下载说明 Java Chassis weather weather-1.0.0.jar 进入天气预报组件软件包仓库。 单击ServiceComb,进入使用Java Chassis微服务开发框架开发的天气预报组件软件包库。 weather-beta weather-beta-2.0.0.jar forecast forecast-1.0.0.jar fusionweather fusionweather-1.0.0.jar edge-service edge-service-1.0.0.jar weathermapweb weathermapweb.zip Spring Cloud weather weather-1.0.0.jar 进入天气预报组件软件包仓库。 单击Spring Cloud,进入使用Spring Cloud微服务开发框架开发的天气预报组件软件包库。 weather-beta weather-beta-2.0.0.jar forecast forecast-1.0.0.jar fusionweather fusionweather-1.0.0.jar edge-service edge-service-1.0.0.jar weathermapweb weathermapweb.zip 将下载到本地的天气预报组件软件包上传到准备资源中准备好的桶中备用。 上传软件包,请参考上传对象。
  • 准备资源 为了方便后续的操作,需要您提前准备好如下资源: 创建一个虚拟私有云,请参考创建虚拟私有云和子网。 创建一个未开启安全认证的2.4.0或以上版本的微服务引擎专享版CSE,请参考创建微服务引擎。 CSE所在VPC为1所创建的VPC。如果VPC不一致,需正确配置VPC连通。 创建一个CCE集群(如果只是试用场景,“集群管理规模”选择“50节点”,“高可用”选择“否”即可)。 集群中至少包含1个规格为8vCPUs、16GB内存或者2个规格为4vCPUs、8GB内存的ECS节点,并且绑定弹性公网IP,请参考购买集群。 CCE集群所在VPC为1所创建的VPC。 CCE集群不能被其他环境绑定。 创建用于存储软件包的桶,请参考创建桶。
  • Fork源码 使用您的账号登录GitHub,将Spring官方的Spring Boot源码基线版本、灰度版本Fork到您的GitHub仓库。 基线版本源码地址:https://github.com/spring-guides/gs-spring-boot/tree/boot-2.7 灰度版本源码地址:https://github.com/herocc19/gs-spring-boot-kubernetes
  • 准备资源 为了方便后续的操作,需要您提前准备好如下资源: 创建一个虚拟私有云,请参考创建虚拟私有云和子网。 创建一个CCE集群(如果只是试用场景,“集群管理规模”选择“50节点”,“高可用”选择“否”即可)。 集群中至少包含1个规格为8vCPUs、16GB内存或者2个规格为4vCPUs、8GB内存的ECS节点,并且绑定弹性公网IP,请参考购买集群。 CCE集群所在VPC为1所创建的VPC。 CCE集群不能被其他环境绑定。 已在域名提供者处注册并获取公网域名,请参考创建公网域名。 本例基于ServiceStage绑定GitHub源码仓库,实现源码构建、归档、应用创建,需要先到GitHub官网注册账号。
  • 使用流程 图2 全链路流量控制使用流程 全链路流量控制的使用流程如图2所示。 使用前准备 使用ServiceStage全链路流量控制实现Spring Cloud应用全链路灰度前,需要先准备VPC、CCE、微服务引擎(对应于微服务引擎CSE服务的ServiceComb引擎专享版)、微服务应用网关等资源,并完成Fork全链路流量控制示例源码到您的GitHub代码库、创建组件部署环境等准备工作,请参考使用ServiceStage全链路流量控制实现Spring Cloud应用全链路灰度前准备。 创建并部署基线版本组件 创建并部署基线版本组件,用于关联到后续操作创建的基线泳道,请参考创建并部署基线版本组件。 绑定目标服务到应用网关 为应用网关绑定目标服务,以便网关获取组件微服务地址,请参考绑定目标服务到应用网关。 配置应用网关路由 为绑定了目标服务的应用网关配置路由规则,当应用网关收到访问流量时,会根据已配置的路由规则判断是否匹配并做相应的处理,请参考配置应用网关路由。 创建泳道组 泳道组是一组泳道的集合,用于区分不同的组织或场景,请参考创建泳道组。 创建基线泳道并关联组件 泳道用于为相同版本组件定义一套隔离环境。只有满足了流控路由规则的请求流量才会路由到对应泳道里的打标签组件。基线泳道包括应用中所有组件的基线版本。当微服务调用链中不存在某个组件的时候,会默认访问基线泳道中的组件,请参考创建基线泳道并关联组件。 创建非基线泳道 非基线泳道用于关联应用的灰度版本组件,请参考创建非基线泳道。 创建并部署灰度版本组件 非基线泳道创建后,根据实际业务需要创建灰度版本组件,用于调整流量至非基线泳道验证业务,请参考创建并部署灰度版本组件。 调整非基线泳道流量 根据实际业务需要修改路由配置,调整流量至非基线泳道,请参考调整非基线泳道流量。 验证全链路灰度结果 访问组件实例,验证全链路灰度结果,请参考验证全链路灰度结果。
  • 背景信息 在一个存在多个微服务组件的应用体系中,对其中一个微服务组件进行版本升级发布时,会涉及到其他微服务组件版本的变动升级。所以要求在灰度验证时能够使得灰度流量同时经过涉及到的所有微服务组件灰度版本。如图1所示,由于Microservice-B组件发布新版本涉及到Microservice-C组件的变动,所以在做灰度验证时要求流量能够同时经过Microservice-B、Microservice-C组件的灰度版本。因此,需要额外配置涉及到的Microservice-C组件微服务治理规则,确保流入灰度环境下Microservice-B组件流量能够转发到Microservice-C组件的灰度版本。 图1 全链路流量控制示意图 但是在真实业务场景中,由于业务的微服务组件规模和数量很大,一条请求链路可能会经过很多个微服务组件。新功能发布时也可能会涉及到多个微服务组件同时变更,并且业务的微服务组件之间依赖错综复杂。频繁的组件版本发布、以及组件多版本并行开发导致流量治理规则日益膨胀,给整个系统的可维护性和稳定性带来了严重挑战。 对于以上问题和挑战,业界结合实际业务场景和产业实践经验,提出了一种端到端的灰度发布方案,来进行全链路流量控制,即全链路灰度。全链路流量控制功能将应用组件的相关版本隔离成一个独立的运行环境(即泳道),通过设置流控路由规则,将满足规则的请求流量路由到目标版本组件。
  • 使用限制 使用Kubernetes类型环境部署且绑定了微服务引擎(对应于微服务引擎CSE服务的ServiceComb引擎专享版)的微服务组件,支持使用全链路流量控制。关于创建并部署组件,请参考创建并部署组件。 微服务组件依赖的开发框架为spring-cloud-huawei 1.11.5-2021.0.x及以上版本。 加入全链路流量控制的组件,将不再支持通过灰度发布方式升级组件。关于灰度发布升级组件,请参考灰度发布(金丝雀)方式升级。
  • 操作步骤 升级微服务组件使用的SDK版本。 开启安全认证功能,需要使用的SDK支持安全认证功能。如果当前的微服务组件使用的SDK版本低于要求的版本(Spring Cloud Huawei需要1.6.1及以上版本、Java Chassis需要2.3.5及以上版本),需要对当前的微服务进行SDK版本升级。 配置微服务组件安全认证参数。 微服务引擎开启安全认证前,需要对已连接到该引擎的微服务组件配置安全认证参数。配置安全认证参数是通过配置安全认证账号和密码的方式触发,具体方法如下: Spring Cloud微服务组件配置安全认证账号名和密码 表1 Spring Cloud微服务组件配置安全认证账号名和密码 配置文件配置方式 环境变量注入方式 为微服务的“bootstrap.yml”文件增加以下配置,若已配置请忽略。 spring: cloud: servicecomb: credentials: account: name: test #安全认证账号名,请结合用户实际值配置 password: mima #安全认证账号密码,请结合用户实际值配置 cipher: default 添加如下环境变量,请参考管理应用环境变量。 spring_cloud_servicecomb_credentials_account_name,安全认证账号名,请结合用户实际值配置。 spring_cloud_servicecomb_credentials_account_password,安全认证账号密码,请结合用户实际值配置。 用户密码password默认为明文存储,无法保证安全。建议您对密码进行加密存储,请参考自定义实现加密存储算法。 微服务引擎没有开启安全认证时,如果连接到当前微服务引擎的微服务组件配置了安全认证参数,微服务组件的正常业务功能不受影响。 Java Chassis微服务组件配置安全认证账号名和密码 表2 Java Chassis微服务组件配置安全认证账号名和密码 配置文件配置方式 环境变量注入方式 为微服务的“microservice.yml”文件增加以下配置,若已配置请忽略。 servicecomb: credentials: rbac.enabled: true #是否开启安全认证,请结合用户实际值配置 cipher: default account: name: test #安全认证账号名,请结合用户实际配置 password: mima #安全认证账号密码,请结合用户实际配置 cipher: default 添加如下环境变量,请参考管理应用环境变量。 servicecomb_credentials_rbac_enabled,是否开启安全认证,请结合用户实际值配置:true,开启安全认证;false,不开启安全认证。 servicecomb_credentials_account_name,安全认证账号名,请结合用户实际值配置。 servicecomb_credentials_account_password,安全认证账号密码,请结合用户实际值配置。 开启微服务引擎专享版安全认证,请参考开启安全认证。 开启安全认证后,接入该引擎的微服务组件如果没有配置安全认证参数,或者微服务组件配置的安全认证账号和密码不正确,会导致该微服务组件心跳失败,服务被迫下线。
  • 操作步骤 登录ServiceStage控制台。 单击“全链路流量控制”。 单击待操作非基线泳道所在泳道组名称(例如:lane-test),进入“全链路流量控制”页面。 单击待操作非基线泳道(例如:gray)卡片上的。 单击“新增匹配规则”,参考下表设置路由匹配规则。 参数名称 参数说明 匹配类型 支持的路由规则匹配类型。 当前仅支持基于“请求头”类型的匹配。 参数名称 “匹配类型”对应的key值,设置为:type。 条件类型 “条件值”满足的匹配规则,选择“前缀匹配”。 条件值 “匹配类型”对应的value值,设置为:gray。 单击“确定”,完成基于内容的网关路由配置。 开启泳道流量,使配置生效。 单击。 单击“确定”。 配置会对该非基线泳道下的所有组件生效。如果业务请求无法匹配到泳道所配置的路由规则,则网关将业务请求转发至基线泳道的组件处理。
  • 资源准备 为了方便后续的操作,需要您提前准备好如下资源: 创建一个虚拟私有云,请参考创建虚拟私有云和子网。 创建一个未开启安全认证的微服务引擎专享版CSE,请参考创建微服务引擎。 CSE所在VPC为1所创建的VPC。如果VPC不一致,需正确配置VPC连通。 创建一个CCE集群(如果只是试用场景,“集群管理规模”选择“50节点”,“高可用”选择“否”即可)。 集群中至少包含1个规格为8vCPUs、16GB内存或者2个规格为4vCPUs、8GB内存的ECS节点,并且绑定弹性公网IP,请参考购买集群。 CCE集群所在VPC为1所创建的VPC。 CCE集群不能被其他环境绑定。 本例基于ServiceStage绑定GitHub源码仓库,实现源码构建、归档、应用创建,需要先到GitHub官网注册账号。
  • 操作步骤 登录ServiceStage控制台。 单击“全链路流量控制”。 单击待创建基线泳道所在泳道组名称(例如:lane-test),进入“全链路流量控制”页面。 单击“创建基线泳道”,参考下表填写泳道信息。 参数名称 参数说明 泳道名称 输入泳道的名称,例如:base。 标签 用于在Kubernetes类型的环境下创建并部署组件时,将绑定微服务引擎(对应于微服务引擎CSE服务的ServiceComb引擎专享版)的组件打上相应的标签以标记流量。当有请求访问时,应用网关会根据路由规则将流量转发到对应流量标签的微服务上。当无法找到对应标签的微服务时,将转发至基线泳道对应的微服务。 基线泳道的标签默认为base,不可修改。 单击“确定”,完成基线泳道创建。 单击已创建好的基线泳道卡片上的“关联组件”或右上角的。 在弹出的“关联组件”对话框勾选创建并部署基线版本组件时已部署好的全部待关联组件:unit-controller、unit-consumer和unit-provider。 单击“确定”,完成基线泳道组件关联。 单击基线泳道卡片上当前已关联的组件数,可以查看基线泳道已关联的组件列表。
  • 添加访问方式 单击“应用管理”。 单击创建应用时创建的应用名称(例如:weathermap),进入“应用概览”页。 在“组件列表”,单击weathermapweb所在行“外部访问地址”列的“设置”,进入“访问方式”页面。 单击“TCP/UDP路由配置”区域的“添加服务”,参考下表设置参数。 参数 说明 服务名称 保持默认。 访问方式 选择“公网访问”。 访问类型 选择“弹性IP”。 服务亲和 保持默认。 协议 选择TCP。 容器端口 填写3000。 访问端口 选择“自动生成”。 图5 添加访问方式 单击“确定”,生成访问地址。 图6 访问地址
  • 用户故事 在本实践中,您可以通过容器部署的方式部署应用并将微服务实例注册到微服务引擎CSE中,weathermap应用需要创建以下组件: 前台组件:weathermapweb,基于Node.js语言开发的界面。 后台组件:weather、fusionweather、forecast、edge-service,基于Java语言开发。 微服务部署有以下几个操作过程: 创建并部署后台应用组件 设置edge-service组件访问方式 创建并部署前台组件 确认部署结果 添加访问方式 访问应用
  • 设置edge-service组件访问方式 单击左上角,返回“应用管理”页面。 单击创建应用时创建的应用名称(例如:weathermap),进入“应用概览”页。 在“组件列表”,单击edge-service所在行“外部访问地址”列的“设置”,进入“访问方式”页面。 单击“TCP/UDP路由配置”区域的“添加服务”,参考下表设置参数。 参数 说明 服务名称 保持默认。 访问方式 选择“公网访问”。 访问类型 选择“弹性IP”。 服务亲和 保持默认。 协议 选择TCP。 容器端口 填写3010。 访问端口 选择“自动生成”。 图3 设置edge-service组件访问方式 单击“确定”,生成访问地址。
  • 操作步骤 登录ServiceStage控制台。 删除已部署的微服务应用组件实例。 选择“应用管理”。 单击微服务应用所在的应用名称,进入“应用概览”页。 在组件列表,勾选待删除组件,单击“批量删除”。 在弹出的对话框,单击“确定”。 修改部署微服务应用组件的环境。 单击左上角,返回“应用管理”页面。 选择“环境管理”。 单击部署微服务应用的环境名称。 在“资源配置”区域左侧列表,选择“中间件”资源类型下的“微服务引擎 CSE”。 勾选“Cloud Service Engine”,单击“移除资源”。 单击“纳管资源”。 勾选已创建的微服务引擎专享版,单击“确定”。 重新部署微服务应用组件,请参考创建并部署组件。