云服务器内容精选

  • 访问基线泳道实例 打开cmd命令,执行以下命令访问基线泳道unit-controller组件提供的服务: curl http://${网关访问地址}/unit-controller/hello 网关访问地址取值,请参考查看应用网关信息。 执行结果示例如下: { "unit-consumer": { "SERVICECOMB_INSTANCE_PROPS": "cas_lane_tag:base,affinity-tag:base","ip":"x.x.x.x" }, "unit-provider": { "SERVICECOMB_INSTANCE_PROPS": "cas_lane_tag:base,affinity-tag:base","ip":"x.x.x.x" }, "unit-controller": { "SERVICECOMB_INSTANCE_PROPS": "cas_lane_tag:base,affinity-tag:base","ip":"x.x.x.x" } } 全部流量路由方向为从基线泳道(base)的unit-controller实例流向unit-consumer实例,再流向unit-provider实例。
  • 访问非基线泳道实例 打开cmd命令,执行以下命令访问非基线泳道unit-controller组件提供的服务: curl -H "type:gray" http://${网关访问地址}/unit-controller/hello 网关访问地址取值,请参考查看应用网关信息。 执行结果示例如下: { "unit-consumer": { "SERVICECOMB_INSTANCE_PROPS": "cas_lane_tag:base,affinity-tag:base","ip":"x.x.x.x" }, "unit-provider": { "SERVICECOMB_INSTANCE_PROPS": "cas_lane_tag:gray,affinity-tag:gray","ip":"x.x.x.x" }, "unit-controller": { "SERVICECOMB_INSTANCE_PROPS": "cas_lane_tag:gray,affinity-tag:gray","ip":"x.x.x.x" } } 全部流量路由方向为从非基线泳道(gray)的unit-controller实例流向基线泳道(base)的unit-consumer实例,再流向非基线泳道(gray)的unit-provider实例。
  • 使用限制 使用Kubernetes类型环境部署且绑定了微服务引擎(对应于 微服务引擎CSE 服务的ServiceComb引擎专享版)的微服务组件,支持使用全链路流量控制。关于创建并部署组件,请参考创建并部署组件。 微服务组件依赖的开发框架为spring-cloud-huawei 1.11.5-2021.0.x及以上版本。 加入全链路流量控制的组件,将不再支持通过灰度发布方式升级组件。关于灰度发布升级组件,请参考灰度发布(金丝雀)方式升级。
  • 背景信息 在一个存在多个微服务组件的应用体系中,对其中一个微服务组件进行版本升级发布时,会涉及到其他微服务组件版本的变动升级。所以要求在灰度验证时能够使得灰度流量同时经过涉及到的所有微服务组件灰度版本。如图1所示,由于Microservice-B组件发布新版本涉及到Microservice-C组件的变动,所以在做灰度验证时要求流量能够同时经过Microservice-B、Microservice-C组件的灰度版本。因此,需要额外配置涉及到的Microservice-C组件微服务治理规则,确保流入灰度环境下Microservice-B组件流量能够转发到Microservice-C组件的灰度版本。 图1 全链路流量控制示意图 但是在真实业务场景中,由于业务的微服务组件规模和数量很大,一条请求链路可能会经过很多个微服务组件。新功能发布时也可能会涉及到多个微服务组件同时变更,并且业务的微服务组件之间依赖错综复杂。频繁的组件版本发布、以及组件多版本并行开发导致流量治理规则日益膨胀,给整个系统的可维护性和稳定性带来了严重挑战。 对于以上问题和挑战,业界结合实际业务场景和产业实践经验,提出了一种端到端的灰度发布方案,来进行全链路流量控制,即全链路灰度。全链路流量控制功能将应用组件的相关版本隔离成一个独立的运行环境(即泳道),通过设置流控路由规则,将满足规则的请求流量路由到目标版本组件。
  • 使用流程 图2 全链路流量控制使用流程 全链路流量控制的使用流程如图2所示。 创建并部署基线版本组件 使用ServiceStage创建并使用Kubernetes类型环境部署基线版本微服务组件,并为所有基线版本组件绑定同一个微服务引擎,请参考创建并部署组件。 创建应用网关 应用网关用于转发打标签组件流量,请参考创建应用网关。 绑定目标服务 将1中已接入微服务引擎的组件对应微服务与2创建的应用网关绑定,以便网关获取组件微服务地址,请参考创建服务。 配置路由 为2创建的应用网关配置路由规则,当应用网关收到访问流量时,会根据已配置的路由规则判断是否匹配并做相应的处理,请参考配置路由。 创建泳道组 泳道组是一组泳道的集合,用于区分不同的组织或场景,请参考创建泳道组。 创建基线泳道 泳道用于为相同版本组件定义一套隔离环境。只有满足了流控路由规则的请求流量才会通过标签控制流量转发到对应泳道的目标服务组件。一个组件只能属于一个泳道,一个泳道可以包含多个组件。 基线泳道包括应用中所有组件的基线版本,当微服务调用链中不存在某个组件的时候,会默认访问基线泳道中的组件,请参考创建基线泳道。 关联基线版本组件到基线泳道 为6创建的基线泳道关联所有应用组件,请参考关联基线版本组件到基线泳道。 创建非基线泳道 非基线泳道用于关联应用的灰度版本组件,请参考创建非基线泳道。 创建并部署灰度版本组件 非基线泳道创建后,需要根据实际业务需要创建灰度版本组件,用于调整流量至非基线泳道验证业务,请参考创建灰度版本组件。 调整非基线泳道流量验证业务 根据实际业务需要修改路由配置,调整流量至非基线泳道验证业务,请参考配置路由。 升级基线泳道组件并调整流量 升级基线泳道组件,并根据业务需要调整流量至基线泳道组件。 升级单个组件,请参考单批发布方式升级或滚动发布方式升级。 批量升级组件,请参考批量升级组件版本配置。