云服务器内容精选

  • 操作步骤 升级微服务组件使用的SDK版本。 开启安全认证功能,需要使用的SDK支持安全认证功能。如果当前的微服务组件使用的SDK版本低于要求的版本(Spring Cloud Huawei需要1.6.1及以上版本、Java Chassis需要2.3.5及以上版本),需要对当前的微服务进行SDK版本升级。 配置微服务组件安全认证参数。 ServiceComb引擎开启安全认证前,需要对已连接到该引擎的微服务组件配置安全认证参数。配置安全认证参数是通过配置安全认证账号和密码的方式触发,具体方法如下: 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默认为明文存储,无法保证安全。建议您对密码进行加密存储,请参考自定义实现加密存储算法。 ServiceComb引擎没有开启安全认证时,如果连接到当前ServiceComb引擎的微服务组件配置了安全认证参数,微服务组件的正常业务功能不受影响。 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,安全认证账号密码,请结合用户实际值配置。 开启ServiceComb引擎专享版安全认证,请参考开启安全认证。 开启安全认证后,接入该引擎的微服务组件如果没有配置安全认证参数,或者微服务组件配置的安全认证账号和密码不正确,会导致该微服务组件心跳失败,服务被迫下线。
  • 用户故事 在本实践中,您可以通过容器部署的方式部署应用并将微服务实例注册到ServiceComb引擎中,weathermap应用需要创建并部署以下组件: 前台组件:weathermapweb,基于Node.js语言开发的界面。 后台组件:weather、fusionweather、forecast、edge-service,基于Java语言开发。 微服务部署有以下几个操作过程: 创建并部署后台应用组件 设置edge-service组件访问方式 创建并部署前台组件 确认部署结果 添加访问方式 访问应用
  • 设置edge-service组件访问方式 单击左上角,返回“应用管理”页面。 单击创建应用时创建的应用名称(例如:weathermap),进入“应用概览”页。 在“组件列表”,单击edge-service所在行“外部访问地址”列的“设置”,进入“访问方式”页面。 单击“TCP/UDP路由配置”区域的“添加服务”,参考下表设置参数。 参数 说明 服务名称 保持默认。 访问方式 选择“公网访问”。 访问类型 选择“弹性IP”。 服务亲和 保持默认。 协议 选择TCP。 容器端口 填写3010。 访问端口 选择“自动生成”。 图1 设置edge-service组件访问方式 单击“确定”,生成访问地址。
  • 添加访问方式 单击“应用管理”。 单击创建应用时创建的应用名称(例如:weathermap),进入“应用概览”页。 在“组件列表”,单击weathermapweb所在行“外部访问地址”列的“设置”,进入“访问方式”页面。 单击“TCP/UDP路由配置”区域的“添加服务”,参考下表设置参数。 参数 说明 服务名称 保持默认。 访问方式 选择“公网访问”。 访问类型 选择“弹性IP”。 服务亲和 保持默认。 协议 选择TCP。 容器端口 填写3000。 访问端口 选择“自动生成”。 图3 添加访问方式 单击“确定”,生成访问地址。 图4 访问地址
  • 资源准备 为了方便后续的操作,需要您提前准备好如下资源: 创建一个 虚拟私有云VPC ,请参考创建虚拟私有云和子网。 创建一个未开启安全认证的ServiceComb引擎专享版,请参考创建微服务引擎。 ServiceComb引擎所在VPC为1所创建的VPC。如果VPC不一致,需正确配置VPC连通。 创建一个CCE集群(如果只是试用场景,“集群规模”选择“50节点”,“集群master实例数”选择“单实例”即可),请参考购买集群。 CCE集群所在VPC为1所创建的VPC。 集群中至少包含1个规格为8vCPUs、16GB内存或者2个规格为4vCPUs、8GB内存的E CS 节点,并且绑定弹性公网IP。为CCE集群添加节点,请参考创建节点。 CCE集群不能被其他环境绑定。
  • 注册GitHub账号并复刻源码 注册GitHub账号。 登录GitHub。 导航到源码仓库。 基线版本源码仓库地址:https://github.com/spring-guides/gs-spring-boot/tree/boot-2.7 灰度版本源码仓库地址:https://github.com/herocc19/gs-spring-boot-kubernetes 复刻源码仓库到个人账号下,请参考复刻仓库。
  • 准备资源 为了方便后续的操作,需要您提前准备好如下资源: 创建一个虚拟私有云VPC,请参考创建虚拟私有云和子网。 创建一个CCE集群(如果只是试用场景,“集群规模”选择“50节点”,“集群master实例数”选择“单实例”即可),请参考购买集群。 CCE集群所在VPC为1所创建的VPC。 集群中至少包含1个规格为8vCPUs、16GB内存或者2个规格为4vCPUs、8GB内存的ECS节点,并且绑定弹性公网IP。为CCE集群添加节点,请参考创建节点。 CCE集群不能被其他环境绑定。 已在 域名 提供者处注册并获取公网域名,请参考创建公网域名。
  • 资源准备 创建一个虚拟私有云VPC,请参考创建虚拟私有云和子网。 创建两个处于不同可用区(例如:az1、az2)的CCE集群(例如:cce-az1、cce-az2)。如果只是试用场景,“集群规模”选择“50节点”,“集群master实例数”选择“单实例”即可。 请参考购买集群。 每个集群中至少包含1个规格为8vCPUs、16GB内存或者2个规格为4vCPUs、8GB内存的ECS节点。 为CCE集群添加节点,请参考考创建节点。 集群所在VPC为1创建的VPC。 创建集群时,需在“集群master实例数”下选择“指定集群master实例分布策略”,选择“自定义分配”将两个集群的master节点分配到不同的可用区。 集群中的ECS节点的可用区需要和其所在CCE集群master节点的可用区保持一致。 创建用于存储软件包的桶,请参考创建桶。
  • 操作步骤 为准备资源时创建的应用网关创建服务来源,请参考创建服务来源。 服务来源参数请参考下表进行设置。 参数名称 参数说明 来源类型 目标服务的来源,选择“CSE ServiceComb引擎”。 来源名称 输入目标服务的名称,例如:servicecomb。 引擎实例 选择准备资源时已经创建的ServiceComb引擎专享版。 为准备资源时创建的应用网关绑定目标服务,请参考创建服务。 参考下表填写相关参数。 参数名称 参数说明 来源类型 目标服务的来源,选择“CSE ServiceComb引擎”。 服务来源 选择1输入的目标服务的名称,例如:servicecomb。 环境选择 保持默认。 服务列表 选择接入了1所选择的ServiceComb引擎的目标服务实例“unit-controller”。
  • 使用流程 图2 全链路流量控制使用流程 全链路流量控制的使用流程如图2所示。 使用前准备 使用ServiceStage全链路流量控制实现Spring Cloud应用全链路灰度前,需要先准备VPC、CCE、ServiceComb引擎专享版、微服务应用网关等资源,并完成Fork全链路流量控制示例源码到您的GitHub代码库、创建组件部署环境等准备工作,请参考使用ServiceStage全链路流量控制实现Spring Cloud应用全链路灰度前准备。 创建并部署基线版本组件 创建并部署基线版本组件,用于关联到后续操作创建的基线泳道,请参考创建并部署基线版本组件。 绑定目标服务到应用网关 为应用网关绑定目标服务,以便网关获取组件微服务地址,请参考绑定目标服务到应用网关。 配置应用网关路由 为绑定了目标服务的应用网关配置路由规则,当应用网关收到访问流量时,会根据已配置的路由规则判断是否匹配并做相应的处理,请参考配置应用网关路由。 创建泳道组 泳道组是一组泳道的集合,用于区分不同的组织或场景,请参考创建泳道组。 创建基线泳道并关联组件 泳道用于为相同版本组件定义一套隔离环境。只有满足了流控路由规则的请求流量才会路由到对应泳道里的打标签组件。基线泳道包括应用中所有组件的基线版本。当微服务调用链中不存在某个组件的时候,会默认访问基线泳道中的组件,请参考创建基线泳道并关联组件。 创建灰度泳道 灰度泳道用于关联应用的灰度版本组件,请参考创建灰度泳道。 部署灰度版本组件到灰度泳道 灰度泳道创建后,根据实际业务需要创建灰度版本组件,用于调整流量至灰度泳道验证业务,请参考部署灰度版本组件到灰度泳道。 调整灰度泳道流量 根据实际业务需要修改路由配置,调整流量至灰度泳道,请参考调整灰度泳道流量。 验证全链路灰度结果 访问组件实例,验证全链路灰度结果,请参考验证全链路灰度结果。
  • 使用限制 全链路流量控制依赖应用网关提供微服务访问流量入口,用于通过标签控制流量转发到对应泳道的目标服务组件。 使用Kubernetes类型环境部署且绑定了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 全链路流量控制示意图 但是在真实业务场景中,由于业务的微服务组件规模和数量很大,一条请求链路可能会经过很多个微服务组件。新功能发布时也可能会涉及到多个微服务组件同时变更,并且业务的微服务组件之间依赖错综复杂。频繁的组件版本发布、以及组件多版本并行开发导致流量治理规则日益膨胀,给整个系统的可维护性和稳定性带来了严重挑战。 对于以上问题和挑战,业界结合实际业务场景和产业实践经验,提出了一种端到端的灰度发布方案,来进行全链路流量控制,即全链路灰度。全链路流量控制功能将应用组件的相关版本隔离成一个独立的运行环境(即泳道),通过设置流控路由规则,将满足规则的请求流量路由到目标版本应用。
  • 操作步骤 登录微服务引擎控制台。 为准备资源时创建的应用网关配置路由,请参考创建路由。 参考下表填写相关参数,其余参数保持默认。 参数名称 参数说明 路由名称 输入路由名称,例如:controller。 域名 勾选下拉列表中的“*”。 路由规则 服务地址:选择“前缀匹配”,输入“/”。 请求方法:选择“GET”。 服务名称:选择“unit-controller”。 分组:设置为“不限制”。 权重:设置为100。 使用全链路流量控制实现灰度发布时,一条路由下的所有路由规则必须绑定同一个目标服务。如需绑定多个目标服务,请创建多条路由。
  • 方式二:软件包安装 登录Jenkins所在Linux虚拟机,执行如下命令查看虚拟机操作系统类型: echo $HOSTTYPE 若执行如上命令的输出值是“x86_64”,则为AMD 64位系统。 若执行如上命令的输出值是“aarch64”,则为ARM 64位系统。 执行如下命令下载对应的软件包。 AMD wget "https://hwcloudcli.obs.cn-north-1.myhuaweicloud.com/cli/latest/huaweicloud-cli-linux-amd64.tar.gz" -O huaweicloud-cli-linux-amd64.tar.gz ARM wget "https://hwcloudcli.obs.cn-north-1.myhuaweicloud.com/cli/latest/huaweicloud-cli-linux-arm64.tar.gz" -O huaweicloud-cli-linux-arm64.tar.gz 执行如下命令解压软件包。 AMD tar -zxvf huaweicloud-cli-linux-amd64.tar.gz ARM tar -zxvf huaweicloud-cli-linux-arm64.tar.gz 在解压后的目录执行如下命令创建软链接到“/usr/local/bin”目录: ln -s $(pwd)/hcloud /usr/local/bin/ 执行如下命令验证是否安装成功: hcloud version 系统显示类似“当前KooCLI版本:3.4.1.1”版本信息,表示安装成功。
  • 操作步骤 登录ServiceStage控制台。 单击“应用管理”,进入应用列表。 单击创建应用时创建的应用名称(例如:test-app)“操作”栏的“新增组件”。 在“基本信息”区域,参考下表设置必填组件基本信息,其余参数保持默认。 参数名称 参数说明 组件名称 填写组件的名称。 建议组件名称可以区分其所在环境下绑定的CCE集群的可用区信息(例如:test-comp-az1)。 组件版本 单击“自动生成”。 所属应用 选择创建应用时创建的应用(例如:test-app)。 所属环境 选择创建环境时创建的环境(例如:env-cce-az1)。 所属集群 选择绑定在环境中的指定可用区的CCE集群(例如:cce-az1)。 在“组件包”区域,参考下表设置必填组件包参数,其余参数保持默认。 参数名称 参数说明 技术栈 组件技术栈类型选择Java。 上传方式 选择“OBS对象存储”。 单击“选择软件包”,选择上传软件包时已上传的weather-1.0.0.jar软件包。 在“构建”区域,参考下表设置必填构建参数,其余参数保持默认。 参数名称 参数说明 组织 选择创建组织时创建的组织名称。 组织用于管理组件构建生成的镜像。 构建环境 选择“使用当前环境构建”,使用组件所属的部署环境中的CCE集群进行镜像构建。 选择集群 选择4选择的“所属集群”(例如:cce-az1)用于构建组件镜像。 单击“下一步”。 单击“创建并部署”,等待组件创建成功。