华为云用户手册

  • 使用流程 图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 全链路流量控制示意图 但是在真实业务场景中,由于业务的微服务组件规模和数量很大,一条请求链路可能会经过很多个微服务组件。新功能发布时也可能会涉及到多个微服务组件同时变更,并且业务的微服务组件之间依赖错综复杂。频繁的组件版本发布、以及组件多版本并行开发导致流量治理规则日益膨胀,给整个系统的可维护性和稳定性带来了严重挑战。 对于以上问题和挑战,业界结合实际业务场景和产业实践经验,提出了一种端到端的灰度发布方案,来进行全链路流量控制,即全链路灰度。全链路流量控制功能将应用组件的相关版本隔离成一个独立的运行环境(即泳道),通过设置流控路由规则,将满足规则的请求流量路由到目标版本应用。
  • 操作步骤 登录GitLab,进入代码仓库。 单击“Settings”,选择“Webhooks”,在右下角的“Test”下拉框,选择“Push events”。 在浏览器地址栏输入http://{安装Jenkins的Linux虚拟机IP}:8080,登录Jenkins。 左侧构建执行状态中,可以看到已经触发的构建任务。 单击构建任务编号,选择“Console Output”,查看构建输出日志。 登录ServiceStage控制台。 单击“组件管理”。 在组件列表中单击升级的组件名称,进入组件“概览”页面。 在“概览”界面,查看“组件版本”以及组件包“代码源”是否已经更新。 单击“部署记录”,查看对应的部署记录。
  • 手动构建验证 在浏览器地址栏输入http://{安装Jenkins的Linux虚拟机IP}:8080,登录Jenkins。 单击“我的视图”。 选择对应的构建任务,单击构建任务名称进入详情界面。 单击“立即构建”,生成构建任务。 在“构建历史”以及“阶段视图”中会有对应的构建任务信息。鼠标悬浮在对应步骤上,会展示任务状态以及日志按钮。单击“log”查看日志。 登录ServiceStage控制台。 单击“组件管理”。 在组件列表中单击升级的组件名称,进入组件“概览”界面。 在“概览”界面,查看“组件版本”以及组件包“代码源”是否已经更新。 单击“部署记录”,查看对应的部署记录。 父主题: 构建验证
  • 参数值获取 获取region、project_id 登录ServiceStage控制台。 鼠标移动到右上角登录用户名上,在下拉菜单选择“我的凭证”。 查看所属区域的项目和项目ID,即为对应的region和project_id值。 获取application_id、component_id 登录ServiceStage控制台。 单击“组件管理”。 单击对应的组件名称。 在“概览”界面的“配置详情”区域,单击“组件配置”。 查看CAS_APP_ID、CAS_APPLICATION_ID的值,即为application_id、component_id。
  • 脚本参数说明 参数 是否必须 参数类型 描述 region 是 String Region名称。获取方法,请参考参数值获取。 project_id 是 String 项目ID。获取方法,请参考参数值获取。 application_id 是 String 应用ID。获取方法,请参考参数值获取。 component_id 是 String 组件ID。获取方法,请参考参数值获取。 rolling_release_batches 是 int 分批部署批次。 deploy_type 是 String 部署类型。 package表示软件包部署。 image表示镜像部署。 obsutil 否 String 当使用软件包部署如jar包部署时为必选参数,上传jar包到obs的工具安装的绝对路径。例如:/root/tools/obsutil/obsutil_linux_amd64_5.4.6/obsutil。 bucket 否 String 当使用软件包部署时为必选参数,上传到obs的桶路径,格式为obs://{桶名称},例如:obs://obs-mzc。 obs_jar_url 否 String 当使用软件包部署时为必选参数。软件包上传obs后的链接,格式为obs://{桶名}/{软件包名}。例如,obs://obs-mzc/spring-demo-0.0.1-SNAPSHOT.jar。 machine_image_name 否 String 当使用镜像部署时为必选参数,Jenkins打包构建后生成的镜像,格式为:{镜像名称}:{版本},例如:java-test:v1。 swr_image_url 否 String 当使用镜像部署时为必选参数,上传到SWR镜像仓库的镜像包路径,格式为:{镜像仓库地址}/{组织名称}/{镜像包名称}:{版本},其中SWR镜像仓库地址格式为:swr.{区域所属项目名称}.myhuaweicloud.com。 AK 否 String 当使用镜像部署时为必选参数。访问密钥ID,即AK,用于登录SWR镜像仓库。获取方法,请参考访问密钥。 SK 否 String 当使用镜像部署时为必选参数。与访问密钥ID(AK)结合使用的密钥,即SK,用于登录SWR镜像仓库。获取方法,请参考访问密钥。 login_secret 否 String 当使用镜像部署时为必选参数。SWR镜像仓库的登录密钥,用于登录SWR镜像仓库。执行如下命令,返回的结果就是登录密钥: printf "{AK}" | openssl dgst -binary -sha256 -hmac "{SK}" | od -An -vtx1 | sed 's/[ \n]//g' | sed 'N;s/\n//' {AK}、{SK}请替换为已获取到的AK、SK的值。 swr_url 否 String 当使用镜像部署时为必选参数。SWR镜像仓库地址,格式为:swr.{区域所属项目名称}.myhuaweicloud.com
  • 配置构建触发器 配置Jenkins构建触发器。 勾选“Build when a change is pushed to GitLab”,保存GitLab webhook URL(配置Gitlab webhook时需使用),然后单击右下角“高级”。 选择“Filter branches by regex ”,配置指定分支变更后触发构建任务,示例中的分支名称为main,单击右下角“Generate”生成Secret token并保存,在配置GitLab webhook时需使用。 配置GitLab webhook。 登录GitLab,进入代码仓库,示例中的仓库名称是“test”,选择settings中的“Webhooks”,URL和Secret token填写1获取到的GitLab webhook URL和Secret token。 取消勾选SSL verification的“Enable SSL verification”,单击“Add webhook”。
  • 配置流水线脚本 流水线脚本是构建时运行的构建命令,脚本参数说明见表1。 表1 表1 流水线脚本参数说明 参数 是否必须 参数类型 描述 git_url 是 String GitLab代码仓库地址。 credentials_id 是 String 使用账号密码配置的GitLab凭据id,请参考创建GitLab凭证。 branch_name 是 String GitLab代码仓库分支名称。 maven 是 String maven安装的可执行文件路径,例如:/root/app/maven/apache-maven-3.8.6/bin/mvn。 upgrade_shell 是 String upgrade.sh脚本在Jenkins所在虚拟机上存放的路径,例如:/root/jar/upgrade.sh。内容请参见upgrade.sh脚本说明。 完成“构建触发器”配置之后,在“流水线”页签,在下拉框选择“Pipeline script”。 配置流水线脚本,示例中使用的是构建jar包场景,脚本如下: 请使用您环境下的实际参数替换脚本中的参数变量。 node { // 定义代码仓库地址,例如:http://10.95.156.58:8090/zmg/test.git def git_url = '{代码仓库地址}' // GitLab凭据id def credentials_id = '{GitLab凭据id}' // git代码仓库分支名称,例如:main def branch_name = '{git代码仓库分支名称}' // maven安装的可执行文件路径,例如 :/root/app/maven/apache-maven-3.8.6/bin/mvn def maven = '{maven安装的可执行文件路径}' // upgrade.sh脚本存放路径,例如:/root/jar/upgrade.sh def upgrade_shell = '{upgrade.sh脚本存放路径}' stage('Clone sources') { git branch: branch_name, credentialsId: credentials_id, url: git_url } stage('Build') { // 构建jar包 sh "'$maven' clean package -Dmaven.test.failure.ignore=true -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true" } stage('upgrade') { // 执行脚本,使用构建上传到obs的jar包升级ServiceStage组件,超时时间5分钟 sh "timeout 300s '$upgrade_shell'" } } 流水线脚本运行时会调用upgrade.sh,该脚本详细说明请参见upgrade.sh脚本说明。 设置脚本文件upgrade.sh为可执行文件。
  • 生成GitLab访问令牌 登录GitLab。 鼠标移动到右上角的账号名上,单击“Edit profile”。 单击“Access Tokens”,输入“Token name”,勾选“api”,单击“Create personal access token”创建访问令牌。 完成后在页面上方的“Personal Access Tokens”右侧显示token令牌。 令牌仅在初次生成时显示,否则下次需要重新创建。该令牌仅用于GitLab对接测试。
  • 初始化配置KooCLI 登录Jenkins所在Linux虚拟机。 执行命令进行初始化配置,输入命令后按回车进入交互模式,根据界面提示输入各参数值,各参数配置参考表1。 hcloud configure init 表1 初始化配置 参数 说明 Access Key ID (必填参数)访问密钥ID,即AK。获取方法,请参考访问密钥。 Secret Access Key (必填参数)与访问密钥ID(AK)结合使用的密钥,即SK,初始化时必填。获取方法,请参考访问密钥。 Region (选填参数)区域,即ServiceStage服务部署区域。获取方法,请参考地区和终端节点。 添加配置参数。 可能会出现找不到对应cli升级命令的问题,需要添加额外配置: hcloud configure set --cli-lang=cn
  • 方式二:软件包安装 登录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”版本信息,表示安装成功。
  • 相关软件下载及安装 Jenkins下载安装 下载链接:https://mirrors.jenkins.io/war-stable/,参考https://www.jenkins.io/zh/doc/book/installing/进行安装。 安装git用于拉取代码进行构建命令 yum install git –y JDK安装包下载 https://www.oracle.com/cn/java/technologies/downloads/#java11 Maven安装包下载 https://maven.apache.org/download.cgi 安装Docker用于打包镜像包并上传到镜像仓库 yum install docker
  • 安装后检查 检查git: [root@ecs-jenkins ~]# git version git version 1.8.3.1 检查JDK: [root@ecs-jenkins jar]# java -version openjdk version "1.8.0_345" OpenJDK Runtime Environment (build 1.8.0_345-b01) OpenJDK 64-Bit Server VM (build 25.345-b01, mixed mode) 检查Maven: [root@ecs-jenkins jar]# mvn -v Apache Maven 3.8.6 (84538c9988a25aec085021c365c560670ad80f63) Maven home: /root/app/maven/apache-maven-3.8.6 Java version: 11.0.8, vendor: Huawei Technologies Co., LTD, runtime: /root/app/jdk11/jdk-11.0.8 Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-1160.76.1.el7.x86_64", arch: "amd64", family: "unix" 检查Docker: [root@ecs-jenkins jar]# docker version Client: Version: 1.13.1 API version: 1.26 Package version: docker-1.13.1-209.git7d71120.el7.centos.x86_64 Go version: go1.10.3 Git commit: 7d71120/1.13.1 Built: Wed Mar 2 15:25:43 2022 OS/Arch: linux/amd64 Server: Version: 1.13.1 API version: 1.26 (minimum version 1.12) Package version: docker-1.13.1-209.git7d71120.el7.centos.x86_64 Go version: go1.10.3 Git commit: 7d71120/1.13.1 Built: Wed Mar 2 15:25:43 2022 OS/Arch: linux/amd64 Experimental: false
  • 环境信息说明 在Linux虚拟机上安装Jenkins,本实践使用的具体环境信息如下所示。如果使用镜像包部署,需要在虚拟机中安装Docker。 虚拟机:CentOS 7.9 Jenkins:2.319.3 git:yum安装 JDK:11.0.8 Apache Maven:3.8.6 部署的Jenkins启动时需添加参数: -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_ CS RF_PROTECTION=true 否则GitLab对接Jenkins会失败,报错信息如下: HTTP Status 403 - No valid crumb was included in the request
  • 实践概述 代码开发完成后,每次上线前都需要先在Jenkins上打包成镜像包或Jar包,再将镜像包上传到SWR镜像仓库或者将Jar包上传到OBS对象存储,然后再使用ServiceStage升级组件版本配置。该流程较为繁琐,频繁发版本测试导致开发和运维效率低、用户体验差。 如果您的代码在GitLab上管理,使用ServiceStage进行应用托管并且已经部署了组件,则可以通过使用GitLab对接Jenkins自动构建打包,升级已经部署在ServiceStage上的组件版本配置。 本实践通过输出在Jenkins构建打包完成之后自动升级组件的shell脚本,实现了代码合入后自动构建打包并在ServiceStage上升级部署。 父主题: 使用GitLab对接Jenkins自动构建并升级部署到ServiceStage的组件
  • 使用ELB灰度发布升级组件版本 返回ServiceStage控制台。 单击“应用管理”,进入应用列表。 单击创建应用时创建的应用名称(例如:springGuides),进入“应用概览”页面。 在“组件列表”,单击部署和访问Spring Boot应用时创建的组件名称(例如:spring-boot),进入组件“概览”页面。 在页面右上方,单击“升级”。 “升级类型”选择“灰度发布”,单击“下一步”。 参考下表设置灰度升级配置必填信息,其余参数保持默认。 参数 说明 软件包/镜像 固定为创建并部署组件时选择的GitHub源码仓库。 单击“修改”。 “授权信息”选择设置GitHub仓库授权时创建的授权信息。 “用户名/组织”选择复刻源码时登录您的GitHub使用的用户名。 “仓库名称”选择已Fork到您的GitHub下的Spring Boot源码仓库的名称:gs-spring-boot-kubernetes。 “分支”选择“main”。 编译命令 选择“使用自定义命令”。 在输入框输入以下命令: cd ./complete/;mvn clean package 组件版本 输入:1.0.1。 部署架构 单击“选择”。 选择“类型三:对接ELB(服务A实现灰度)”。 单击“确定”。 灰度策略 选择“基于流量比例”。 选择流量比例 灰度流量比例:设置为50%,即引入到新版本的流量比例为50%。 当前流量比例:自动调整为50%,即引入到当前版本的流量比例为50%。 灰度实例新增模式 选择“金丝雀(先增后减)”。 首批灰度实例数量 设置为1。 剩余实例部署批次 设置为1。 单击“升级”。 等待组件状态由“升级/回滚中”转换为“灰度发布中”,表示已成功完成组件灰度发布。 多次执行访问Spring Boot应用,在页面交替显示“Greetings from Spring Boot!”和“Hello”,说明组件版本ELB灰度发布成功。 父主题: 使用ServiceStage托管Spring Boot应用
  • 访问Spring Boot应用 单击左上角,返回“应用管理”页面。 单击创建应用时创建的应用名称(例如:springGuides),进入“应用概览”页。 在“组件列表”,单击创建和部署Spring Boot应用组件时设置的组件名称(例如:spring-boot)所在行“外部访问地址”列的访问地址,访问应用。 在页面显示如下信息,表示应用部署成功。 Greetings from Spring Boot!
  • 创建和部署Spring Boot应用组件 登录ServiceStage控制台。 单击“应用管理”,进入应用列表。 单击创建应用时创建的应用名称(例如:springGuides)“操作”栏的“新增组件”。 在“基本信息”区域,参考下表设置必填组件基本信息,其余参数保持默认。 参数 说明 组件名称 输入组件名称(例如:spring-boot)。 组件版本 输入:1.0.0。 所属环境 选择创建环境时创建的环境(例如:env-test)。 所属应用 选择创建应用时创建的应用(例如:springGuides)。 在“组件包”区域,参考下表设置必填组件包参数,其余参数保持默认。 参数 说明 技术栈 组件技术栈类型选择Java。 源码/软件包 选择“源码仓库”。 选择“GitHub”。 “授权信息”选择设置GitHub仓库授权时创建的授权信息。 “用户名/组织”选择复刻源码时登录您的GitHub使用的用户名。 “仓库名称”选择已Fork到您的GitHub下的Spring Boot源码仓库的名称,例如:gs-spring-boot。 “分支”选择“boot-2.7”。 在“构建”区域,参考下表设置必填构建参数,其余参数保持默认。 参数 说明 编译命令 选择“使用自定义命令”。 在命令输入框输入以下命令: cd ./complete/;mvn clean package 组织 选择创建组织时创建的组织名称。 组织用于管理组件构建生成的镜像。 构建环境 选择“使用当前环境构建”,使用组件所属的部署环境中的CCE集群进行镜像构建。 当前环境CCE集群的master节点和node节点的CPU架构必须保持一致,否则会导致组件构建失败。 图1 设置构建参数 单击“下一步”。 在“访问方式”区域,单击开启公网访问,参考下表设置组件公网访问参数。 参数 说明 公网访问 选择开启。 公网ELB 默认选择组件所属的部署环境中已纳管的ELB。 对外协议 保持默认。 域名 选择“绑定域名”,在输入框中输入准备资源时获取的公网域名。 监听端口 输入8080。 单击“创建并部署”。
  • 准备资源 为了方便后续的操作,需要您提前准备好如下资源: 创建一个 虚拟私有云VPC ,请参考创建虚拟私有云和子网。 创建一个CCE集群(如果只是试用场景,“集群规模”选择“50节点”,“集群master实例数”选择“单实例”即可),请参考购买集群。 CCE集群所在VPC为1所创建的VPC。 集群中至少包含1个规格为8vCPUs、16GB内存或者2个规格为4vCPUs、8GB内存的ECS节点,并且绑定弹性公网IP。为CCE集群添加节点,请参考创建节点。 CCE集群不能被其他环境绑定。 已在域名提供者处注册并获取公网域名,请参考创建公网域名。 本例基于ServiceStage绑定GitHub源码仓库,实现源码构建、归档、应用创建。需要先到GitHub官网注册账号,请参考在GitHub上创建帐户。
  • 操作步骤 登录ServiceStage控制台。 删除已部署的微服务应用组件实例。 选择“应用管理”。 单击微服务应用所在的应用名称,进入“应用概览”页。 在组件列表,勾选待删除组件,单击“批量删除”。 在弹出的对话框,单击“确定”。 修改部署微服务应用组件的环境。 单击左上角,返回“应用管理”页面。 选择“环境管理”。 单击部署微服务应用的环境名称。 在“资源”区域左侧列表,选择“中间件”资源类型下的“ServiceComb引擎”。 勾选“Cloud Service Engine”,单击“移除资源”。 单击“纳管资源”。 勾选已创建的ServiceComb引擎专享版,单击“确定”。 重新部署微服务应用组件,请参考使用容器部署方式基于界面配置创建并部署组件。
  • 背景信息 接入ServiceComb引擎的Java Chassis应用,在ServiceComb引擎仪表盘上的实时监控数据默认保留5分钟。如果需要持久化存储历史监控数据用于后续查询分析,可以使用ServiceStage的自定义指标监控功能,将微服务显示到ServiceComb引擎仪表盘中的数据对接到 AOM 。 本章节以软件包部署应用为例,指导您完成将ServiceComb引擎仪表盘中的数据通过ServiceStage对接到AOM。
  • 操作步骤 升级微服务组件使用的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引擎专享版安全认证,请参考开启安全认证。 开启安全认证后,接入该引擎的微服务组件如果没有配置安全认证参数,或者微服务组件配置的安全认证账号和密码不正确,会导致该微服务组件心跳失败,服务被迫下线。
  • 解决方法 创建应用时,“应用名称”输入唯一的应用名称,例如:weathermap_test。 单击1已创建的天气预报应用名称(例如:weathermap_test),进入“应用概览”页。 单击“环境变量”,在下拉列表选择应用组件部署环境(例如:env-test)。 单击“添加环境变量”,设置环境变量。 “变量名称”根据微服务组件采用的技术,参考下表设置。 微服务组件采用技术 变量名称 Java Chassis servicecomb_service_application Spring Cloud spring_cloud_servicecomb_discovery_appName 对应的“变量/变量引用”设置为1已创建的应用名称,例如:weathermap_test。 单击“提交”,完成应用环境变量的设置。
  • 添加访问方式 单击“应用管理”。 单击创建应用时创建的应用名称(例如:weathermap),进入“应用概览”页。 在“组件列表”,单击weathermapweb所在行“外部访问地址”列的“设置”,进入“访问方式”页面。 单击“TCP/UDP路由配置”区域的“添加服务”,参考下表设置参数。 参数 说明 服务名称 保持默认。 访问方式 选择“公网访问”。 访问类型 选择“弹性IP”。 服务亲和 保持默认。 协议 选择TCP。 容器端口 填写3000。 访问端口 选择“自动生成”。 图3 添加访问方式 单击“确定”,生成访问地址。 图4 访问地址
  • 用户故事 在本实践中,您可以通过容器部署的方式部署应用并将微服务实例注册到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组件访问方式 单击“确定”,生成访问地址。
  • 准备资源 为了方便后续的操作,需要您提前准备好如下资源: 创建一个虚拟私有云VPC,请参考创建虚拟私有云和子网。 创建一个未开启安全认证的2.4.0或以上版本的ServiceComb引擎专享版,请参考创建微服务引擎。 ServiceComb引擎所在VPC为1所创建的VPC。如果VPC不一致,需正确配置VPC连通。 创建一个CCE集群(如果只是试用场景,“集群规模”选择“50节点”,“集群master实例数”选择“单实例”即可),请参考购买集群。 CCE集群所在VPC为1所创建的VPC。 集群中至少包含1个规格为8vCPUs、16GB内存或者2个规格为4vCPUs、8GB内存的ECS节点,并且绑定弹性公网IP。为CCE集群添加节点,请参考创建节点。 CCE集群不能被其他环境绑定。 创建用于存储软件包的桶,请参考创建桶。
  • 下载并上传天气预报组件软件包 参考表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 将下载到本地的天气预报组件软件包上传到准备资源中准备好的桶中备用。 上传软件包,请参考流式上传(PUT上传)。
  • 添加访问方式 单击“应用管理”。 单击创建应用时创建的应用名称(例如:weathermap),进入“应用概览”页。 在“组件列表”,单击weathermapweb所在行“外部访问地址”列的“设置”,进入“访问方式”页面。 单击“TCP/UDP路由配置”区域的“添加服务”,参考下表设置参数。 参数 说明 服务名称 保持默认。 访问方式 选择“公网访问”。 访问类型 选择“弹性IP”。 服务亲和 保持默认。 协议 选择TCP。 容器端口 填写3000。 访问端口 选择“自动生成”。 图3 添加访问方式 单击“确定”,生成访问地址。 图4 访问地址
共100000条