华为云用户手册

  • 安装节点 在安装前请检查机器网络是否正常,是否能够连接到公网。 在安装之前请检查机器时间是否和北京时间一致,如果偏差过大会导致安装失败。 选择支持架构和安装目录之后,按照图中框选地方获取。 图4 获取安装命令 鸿蒙操作系统下默认未安装wget以及openssl,因此需要将安装命令拆解为以下几步执行。如图为安装命令的拆分图解 图5 命令拆解 其中第①步为下载安装包,第②步为安装包完整性校验(可以跳过),第③步为执行安装命令。 根据步骤二的说明获取安装包的下载命令并通过浏览器下载。 安装包下载链接:https://ioe-installer-cn-north-4.obs.cn-north-4.myhuaweicloud.com:443/edgeRuntime-2022.1222.1216.38-openharmony.tar.gz/1671689782293/edgeRuntime-2022.1222.1216.38-openharmony.tar.gz?AccessKeyId=VGC*****CE&Expires=1673949121&Signature=pwx******3D 浏览器下载: 图6 浏览器下载安装包 在windows上通过hdc_std工具,将下载的安装包上传到鸿蒙设备的/data/zh下并查看,上传的目录建议在/data/目录或者子目录下。 图7 上传文件到鸿蒙设备 图8 登录鸿蒙设备控制台 图9 确定文件成功上传 注意执行命令:mount -oremount,rw / , 该命令必须执行,修改鸿蒙文件系统的可读写权限,以防安装失败。 图10 解压安装包 在/data/zh下执行解压命令。至此安装包已经解压在/data/zh。并不一定必须在/data/zh目录下,仅仅因为上传到这个目录下。实际执行时,安装上传的实际目录进行操作。 上述几步执行完成后就可以进行最后的安装操作。 因为前面步骤可能会耗费一些时间,所以此时需要确认安装命令是否过期,避免本次安装以为验证码过期而安装失败,安装命令的有效时间为30min。 如果是公网安装,可以提前测试网络是否正常,ping www.baidu.com. 命令拆分步骤中的第三步标识了安装命令的获取,安装命令示例: INSTALL_IOTEDGE_BIN_DIR=/data/zh/IoTEdge sh edge_install.sh 100.94.60.201 8943 795632095371472896 sys_edge_daemon 02******1a cloud false lite DEFAULT && cd – 执行安装命令: 图11 执行安装命令 安装成功: 图12 安装成功 查看节点状态以及应用状态 图13 节点状态 图14 应用状态 部署$edge_omagent测试功能 $edge_omagent部署时根据架构选择对应的版本,此处部署$edge_omagent的最新的arm64版本。 图15 部署$edge_omagent应用 图16 指标采集
  • 安装专业版节点 在“节点管理”的节点列表选择您需要安装的节点,单击右侧“安装”,获得提示。 图5 安装 选择支持架构和安装目录,然后单击复制安装命令,使用SSH工具以root用户登录边缘节点服务器后台系统,执行安装命令。 图6 提示 安装命令的选择需要与购买的ecs的架构保持一致。 图7 执行安装 图8 安装命令执行成功 单击“我知道了”,等待边缘节点的状态变为“在线”,表示该节点已安装并连接成功。 您可以单击“节点名称”,查看该节点详细信息,关于节点详情描述可参见节点概览。
  • 使用SQL编辑器创建并提交SQL作业 登录 DLI 管理控制台,选择“SQL编辑器”页面。 进入“SQL编辑器”页面后,系统会提示“创建DLI临时数据桶”,用于存储使用DLI服务产生的临时数据。在“设置DLI作业桶”对话框中,单击“去设置”。在现实页面上单击DLI作业桶卡片右上角单击编辑符号。在弹出的“设置DLI作业桶”对话框,输入作业桶路径,并单击“确定”。 在SQL作业编辑窗口右上方的依次选择执行SQL作业所需的队列、数据库等信息,详细参数说明请参考表1。 表1 配置SQL作业信息 按键&下拉列 描述 执行引擎 SQL作业支持Spark和HetuEngine两种引擎: Spark引擎适用于离线分析。 HetuEngine引擎适用于交互式分析。 队列 下拉选择需要使用的队列。如果没有可用队列,此处显示“default”队列,default队列为体验使用,建议重新创建队列。具体队列创建可以参考创建弹性资源池并添加队列。 SQL作业只能在队列类型为“SQL队列”下执行。 数据目录 数据目录(Catalog)是元数据管理对象,它可以包含多个数据库。 您可以在DLI中创建并管理多个Catalog,用于不同的元数据隔离。 数据库 下拉选择需要使用的数据库。如果没有可用数据库,此处显示“default”默认数据库。数据库创建操作详见在DLI控制台创建数据库和表。 说明: 如果SQL语句中指定了表所在的数据库,则此处选择的数据库无效。 设置 包括设置“参数设置”和“标签”。 参数设置:以“key/value”的形式设置提交SQL作业的配置项。详细内容请参见《 数据湖探索 SQL语法参考》。 标签:以“key/value”的形式设置SQL作业的标签。 创建数据库和表。 您可以参考在DLI控制台创建数据库和表提前创建数据库和表。例如本例创建表,表名为“qw”。 在SQL作业编辑窗口输入表“qw”的SQL查询语句: 1 SELECT * FROM qw.qw LIMIT 10; 或者双击左侧表名“qw”,上述查询语句会自动在作业编辑窗口中输入。 DLI还为您提供了丰富的SQL模板,每种模板都为您提供了使用场景、代码示例和使用指导。您也可以直接使用SQL作业模板快速实现您的业务逻辑。了解模板更多信息请参考创建SQL作业模板。 单击“更多”中的“语法校验”,确认SQL语句书写是否正确。 如果语法校验失败,请参考《 数据湖 探索SQL语法参考》检查SQL语句准确性。 如果语法校验通过,单击“执行”,阅读并同意隐私协议,单击“确定”后执行SQL语句。 SQL语句执行成功后,在SQL作业编辑窗口下方会显示执行结果。 查看作业执行结果。 在查看结果页签,单击以图形形式呈现查询结果。再单击切换回表格形式。 当前控制台界面查询结果最多显示1000条数据,如果需要查看更多或者全量数据,则可以单击将数据导出到OBS获取。 如果执行结果中无数值列,则无法进行图形化。 图形类型包括柱状图、折线图、扇形图。 柱状图和折线图的X轴可为任意一列,Y轴仅支持数值类型的列,扇形图对应图例和指标。
  • 使用须知 首次进入SQL编辑器,页面会提示设置DLI作业桶。该桶用于存储使用DLI服务产生的临时数据,例如:作业日志等。 如果不创建该桶,将无法查看作业日志。桶名称为系统默认。 在OBS管理控制台页面通过配置桶的生命周期规则,可以实现定时删除OBS桶中的对象或者定时转换对象的存储类别。 具体操作请参考通过配置生命周期规则。 SQL编辑器页面可以批量执行SQL语句。 作业编辑窗口常用语法采用不同颜色突出显示。 支持单行注释和多行注释。以“--”开头,后续内容即为注释。
  • 操作前准备 配置前,请先购买OBS桶或并行文件系统。 大数据场景推荐使用并行文件系统,并行文件系统(Parallel File System)是 对象存储服务 (Object Storage Service,OBS)提供的一种经过优化的高性能文件系统,提供毫秒级别访问时延,以及TB/s级别带宽和百万级别的IOPS,能够快速处理高性能计算(HPC)工作负载。 并行文件系统的详细介绍和使用说明,请参见《并行文件系统特性指南》。
  • 按需计费模式 按需付费是后付费方式,可以随时开通/删除弹性云服务器,支持秒级计费,系统会根据云服务器的实际使用情况每小时出账单,并从账户余额里扣款。 E CS 的“按需计费”是秒级计费,ECS产品价格详情中标出了每小时价格,您可以将每小时价格除以3600,即得到每秒价格。 示例,某一按需实例价格为0.68元/小时,购买一台按需实例根据实际使用时长、按秒计费。 使用30分钟,根据实际使用时长按秒计费:(0.68/3600) × 30 × 60=0.34元 使用1小时30分钟,根据实际使用时长按秒计费:(0.68/3600) × 90 × 60=1.02元 按需付费的弹性云服务器关机再次开机时,可能会出现由于资源不足引起的启动失败,请过一段时间再次启动,或更改云服务器规格。
  • 成本优化 成本控制 企业可以在成本中心的“预算管理”页面创建精细粒度的预算来管理成本和使用量,在实际或预测超过预算阈值时,自动发送通知给指定消息接收人。企业还可以创建预算报告,定期将指定预算进展通知给指定消息接收人。 例如企业需要创建一个弹性云服务器的按需成本预算,每月预算金额为2000元,当预测金额高于预算金额的80%时发送预算告警。那么,创建的预算如下: 图4 预算基本信息 图5 设置成本范围 图6 设置提醒 详细介绍请参见使用预测和预算来跟踪成本和使用量。 资源优化 成本中心可以通过监控云服务器的历史消费情况和CPU使用率,为客户提供云服务器资源的空闲识别和优化建议,寻找节约成本的机会。您还可以根据成本分析阶段的分析结果识别成本偏高的资源,通过 云监控服务 监控资源的使用情况,确定成本偏高的原因,然后采取针对性的优化措施。 监控资源利用率,评估当前配置是否过高。例如:CPU、内存、云硬盘、带宽等资源的利用率。 监控闲置的资源,避免浪费。例如:未挂载的云硬盘、未绑定的EIP等。 计费模式优化 不同类型的业务对资源使用周期有不同的要求,为每一类业务确定合适的计费模式,灵活组合以达到最优效果。 针对长期稳定的成熟业务,使用包年/包月计费模式。 针对不能中断的短期、突增或不可预测的业务,使用按需计费模式。 针对无状态Web服务、离线分析等业务,使用竞价计费模式。 实现自动化运维 华为云也提供了丰富的运维类产品,帮助您提升运维效率,降低运维的人力成本。例如: 弹性伸缩:持续维护跨计费模式、跨可用区、跨实例规格的实例集群。适合业务负载存在峰谷波动的场景。 智能购买组:一键部署跨计费模式、跨可用区和跨实例规格的实例集群。适合需要快速交付稳定算力,同时使用竞价实例降低成本的场景。 资源编排 :一键部署并维护包含多种云资源和依赖关系的资源栈。适合交付整体系统、克隆环境等场景。 自动化运维:以服务化的方式定义一组运维操作,高效执行运维任务。适合定时运维、批量运维、跨地域运维等场景。
  • 成本分配 成本管理的基础是树立成本责任制,让各部门、各业务团队、各责任人参与进来,为各自消耗云服务产生的成本负责。企业可以通过成本分配的方式,将云上成本分组,归集到特定的团队或项目业务中,让各责任组织及时了解各自的成本情况。 华为云成本中心支持通过多种不同的方式对成本进行归集和重新分配,您可以根据需要选择合适的分配工具。 通过关联账号进行成本分配 企业主客户可以使用关联账号对子客户的成本进行归集,从而对子账号进行财务管理。详细介绍请参见通过关联账号维度查看成本分配。 通过企业项目进行成本分配 在进行成本分配之前,建议开通企业项目并做好企业项目的规划,可以根据企业的组织架构或者业务项目来划分。在购买云资源时选择指定企业项目,新购云资源将按此企业项目进行成本分配。详细介绍请参见通过企业项目维度查看成本分配。 图2 为云服务器选择企业项目 通过成本标签进行成本分配 标签是华为云为了标识云资源,按各种维度(例如用途、所有者或环境)对云资源进行分类的标记。推荐企业使用预定义标签进行成本归集,具体流程如下: 图3 为云服务器添加标签 详细介绍请参见通过成本标签维度查看成本分配。 使用成本单元进行成本分配 企业可以使用成本中心的“成本单元”来拆分公共成本。公共成本是指多个部门共享的计算、网络、存储或资源包产生的云成本,或无法直接通过企业项目、成本标签分配的云成本。这些成本不能直接归属于单一所有者,因此不能直接归属到某一类别。使用拆分规则,可以在各团队或业务部门之间公平地分配这些成本。详细介绍请参见使用成本单元查看成本分配。
  • 竞价计费型实例常见问题 我没有欠费,为什么实例被释放了? 竞价计费型实例会因为市场价格变化或供需调整而被动释放。如果某一时刻的市场价格高于您的出价,或者ECS资源的供需情况发生变化,会释放您的竞价计费型实例。 竞价实例能转为按需或是包年包月实例吗? 不能。 竞价计费型实例的价格折扣包括了哪些资源? 仅针对实例的vCPU和内存价格有折扣。其他资源(包括系统盘、数据盘、网络带宽)的价格与按需实例的价格保持一致,没有折扣。 怎么对竞价计费型实例出价? 在创建竞价计费型实例时,您必须设定您愿意支付的最高价格,当您的出价高于当前市场价格并且资源充足时,您的实例就会运行。最终实例规格会按照市场价格计费。 竞价计费型实例的最高出价和当前市场价格有什么关系? 只有您的最高出价高于当前市场价格时,您的竞价计费型实例才能生成。如果您的出价低于市场价格,竞价计费型实例不会生成,或者您在运行中的实例会被释放。不管您出价多少,竞价计费型实例都会按照市场价格计费。 在同一时间启动的所有竞价计费型实例是否收取同样的费用? 同样系列同样规格收取同样费用。 在购买竞价计费型实例前我能看到当前的市场价格吗? 可以。通过控制台创建竞价计费型实例时,选择实例规格后,您就能查看所选实例规格的市场价格区间以及历史价格。 竞价计费型实例的计费时长? 按秒计费,账单周期为1小时。 竞价计费型实例如何统计计费时长? 从您申请到竞价计费型实例开始,到该竞价计费型实例被释放的时刻结束(手动或系统中断),精度精确到秒。 竞价计费型实例关机后会继续收费吗? 详细说明请参考表1。 表1 竞价计费型实例关机后计费说明 竞价计费型实例 竞价模式 不含本地盘和FPGA卡的实例、非裸金属实例 与同等规格按需计费一致,关机后,基础资源(vCPU、内存、镜像、GPU)不再计费,绑定的云硬盘(包括系统盘、数据盘)、弹性公网IP、带宽等资源按各自产品的计费方法(“包年/包月”或“按需计费”)进行收费。 含本地盘或FPGA卡的实例,裸金属实例 关机后仍然计费。如需停止计费,请删除实例。
  • 竞享实例常见计费问题 我没有欠费,为什么实例被释放了? 竞享实会例因库存资源不足,系统会自动释放您的云服务器资源,华为云会尽可能保障竞享实例正常运行,但在极端情况下会中断释放实例,实例被中断时会秒级释放,请在使用竞享实例时做好备份策略。 竞享实例能转为按需或是包年包月实例吗? 不能。竞享实例都不能转换计费模式。 竞享实例的价格折扣包括了哪些资源? 仅针对实例的vCPU和内存价格有折扣。其他资源(包括系统盘、数据盘、网络带宽)的价格与按需实例的价格保持一致,没有折扣。 竞价实例与竞享实例是怎样计费的? 竞享实例按选定的保障周期的市场价格计费,保障周期是购买竞享实例的最小单位时间,保障周期不同价格不同。 竞享实例都是按秒计费,账单周期为1小时。 选定保障周期后按用户使用时长和选择的保障周期对应价格计费,实例释放后出所有整点账单。且使用期间进行关机等操作,仍然计费。 竞享实例如何统计计费时长? 从您申请到竞享实例开始,到该竞享实例被释放的时刻结束(手动或系统中断),精度精确到秒。 将竞享实例关机后会继续收费吗? 竞享实例关机后仍然计费。如需停止计费,请删除实例。
  • 怎样将资源解冻? 欠费冻结:用户可通过续费或充值来解冻资源,恢复云服务器正常使用。欠费冻结的云服务器允许续费、释放或删除;已经到期的包年/包月云服务器不能发起退订,未到期的包年/包月云服务器可以退订。 违规冻结:违规冻结的云服务器允许续费、释放或删除;已经到期的包年/包月云服务器不能发起退订,未到期的包年/包月云服务器可以退订。 公安冻结:已被公安冻结的云服务器允许续费,不允许释放或删除。被公安冻结的包年/包月云服务器不允许退订,在退订管理页面仍然显示,只是不能退订。
  • SDK列表 表1 SDK列表 SDK分类 功能 支持的语言 数据建模引擎运行SDK 数据建模引擎运行SDK是对访问xDM-F应用运行态提供的REST API进行的封装,以简化用户的开发工作。 用户直接调用数据建模引擎运行SDK提供的接口函数即可实现使用xDM-F业务能力的目的。 Java 流程引擎流程SDK 流程引擎流程SDK是对访问xDM-F的流程引擎特性提供的REST API进行的封装,以简化用户的开发工作。 用户直接调用流程引擎流程SDK提供的接口函数即可实现使用流程引擎业务能力的目的。
  • 约束与限制 目前流程引擎流程SDK仅支持在通用服务器中部署,不支持容器化部署。 为了满足用户对xDM-F SDK的了解和使用,iDME支持免费使用xDM-F SDK。即:每个应用下,自首次生成SDK成功之日起,用户可以免费使用30天的数据建模引擎运行SDK或流程引擎流程SDK。 例如,2024年06月01日生成数据建模引擎运行SDK,其有效时间为2024年06月01日 - 2024年06月30日。免费使用到期后,数据建模引擎运行SDK将触发停服,该运行SDK不可使用。 xDM-F SDK的运行由License进行授权控制,购买“通用SDK”基础版数据建模引擎成功后,请及时申请License。 License授权有效期:License授权自申请License之日起即激活,授权有效期为下单购买“通用SDK”基础版数据建模引擎的购买时长。 License授权宽限期:为确保您的xDM-F SDK正常使用以及License授权到期前后有充足时间进行调整,在License授权到期后将进入30天的宽限期。宽限期内您的xDM-F SDK依旧可以正常使用,宽限期后如果您未进行续费将无法使用xDM-F SDK。 一个License只能配置一个应用ID,且至多可配置八台本地通用服务器。即,一个xDM-F SDK至多可部署在八台不同的本地通用服务器中,且实际部署的本地通用服务器需与License文件配置的本地通用服务器保持一致,否则会部署失败。 购买“通用SDK”基础版数据建模引擎,并将xDM-F SDK部署至本地通用服务器/容器之后,系统会自动与现有存量用户进行匹配。如果现有存量用户大于已购买“通用SDK”的用户数,现有存量用户不影响使用,新增用户仅支持查看,不支持操作。
  • 新建构建任务并执行 在编译构建服务页面,单击“新建任务”,按照如下参数说明配置参数,其他参数保持默认即可。 名称:自定义构建任务名称,例如“maven_private_repository_task”。 代码源:选择本次构建拉取的代码源,这里选择“Repo”。 代码仓:选择新建CodeArts Repo代码仓中新建的代码仓“maven_private_repository_repo”。 单击“下一步”,选择“Maven”模板。然后单击“确定”,自动跳转到构建步骤配置页面。 在“构建步骤”页签,单击“图形化”,单击左侧“Maven构建”,按照如下说明配置构建步骤,其他参数保持默认即可。 命令:mvn package -Dmaven.test.skip=true -U -e -X -B命令前加“#”,删除#mvn deploy -Dmaven.test.skip=true -U -e -X -B前的“#”。 发布依赖包到CodeArts私有依赖库:选择“配置所有pom”。 “release仓库”和“snapshot仓库”选择新建私有依赖库中仓库名“maven_repository”。 图3 配置Maven构建步骤 单击页面右上角“保存并执行”,在弹出的窗口中单击“确定”,自动跳转到构建任务执行页面。
  • 相关信息 当前实践展示的是归档“Snapshot”快照版本,如果要归档正式的“Release”发布版本,可以修改新建CodeArts Repo代码仓中的代码仓“pom.xml”文件中的“version”内容,将“1.0.0-SNAPSHOT”修改为“1.0.0”,提交文件改动,重新执行构建任务即可。 Maven构建会根据模块的版本号,即““pom.xml”文件中的“version”内容是否带有“-SNAPSHOT”来判断是快照版本还是正式版本。
  • 约束限制 需已具备CodeArts Repo服务的操作权限,具体操作可参考授权使用CodeArts Repo服务。 目前该功能仅支持代码源为CodeArts Repo的C/C++语言构建工程的编译构建加速。 使用构建加速能力需要额外购买配套构建加速包,构建加速包因加速原理以及效果的不同,共有三种规格以供购买,规格介绍及购买指南请参考购买构建加速包。本实践需要购买X86架构和L3级别的加速包。 基于自定义执行机的构建任务,无法使用构建加速能力。 需在本地已准备好C++工程代码。
  • 获取SDK 点此下载SDK与Demo。 解压后目录结构如下: 名称 说明 libs\java-sdk-core-x.x.x.jar 签名SDK pom.xml 构建Maven工程所需,定义其他依赖包 changelog 变更日志 src 验证签名SDK的demo代码: WebSocketDemo.java OkHttpDemo.java、 LargeFileUploadDemo.java HttpClientDemo.java 引用类: Constant.java SSLCipherSuiteUtil.java UnsupportProtocolException.java
  • API调用 示例代码修改调用环境信息后可直接调用。以下以新建工程为例,介绍如何在您的应用中调用SDK进行请求签名。 把API信息替换到HttpClientDemo.java中对应位置。 本示例以AK和SK保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。以Linux系统为例在本地将已获取的AK/SK设置为环境变量。 打开终端,输入以下命令打开环境变量配置文件。 vi ~/.bashrc 设置环境变量,保存文件并退出编辑器。 export HUAWEICLOUD_SDK_AK="已获取AK值" export HUAWEICLOUD_SDK_SK="已获取SK值" 输入以下命令使配置文件生效。 source ~/.bashrc 把API信息和已设置的环境变量替换到HttpClientDemo.java中对应位置。 HttpClientDemo中引用以下类,可在“获取SDK”包中的“src”文件下查看: Constant:demo中用到的常量。 SSLCipherSuiteUtil:tls认证配置参数的工具类,比如配置客户端不校验证书。 UnsupportProtocolException:异常处理类。 public class HttpClientDemo { private static final Logger LOG GER = LoggerFactory.getLogger(HttpClientDemo.class); public static void main(String[] args) throws Exception { // Create a new request. Request httpClientRequest = new Request(); try { // Set the request parameters. // AppKey, AppSecrect, Method and Url are required parameters. // Directly writing AK/SK in code is risky. For security, encrypt your AK/SK and store them in the configuration file or environment variables. // In this example, the AK/SK are stored in environment variables for identity authentication. // Before running this example, set environment variables HUAWEICLOUD_SDK_AK and HUAWEICLOUD_SDK_SK. httpClientRequest.setKey(System.getenv("HUAWEICLOUD_SDK_AK")); httpClientRequest.setSecret(System.getenv("HUAWEICLOUD_SDK_SK")); httpClientRequest.setMethod("POST"); // Set a request URL in the format of https://{Endpoint}/{URI}. httpClientRequest.setUrl("put your request url here"); httpClientRequest.addHeader("Content-Type", "text/plain"); // Set a body for http request. httpClientRequest.setBody("put your request body here"); } catch (Exception e) { LOGGER.error(e.getMessage()); return; } CloseableHttpClient client = null; try { // Sign the request. HttpRequestBase signedRequest = Client.sign(httpClientRequest, Constant.SIGNATURE_ALGORITHM_SDK_HMAC_SHA256); if (Constant.DO_VERIFY) { // creat httpClient and verify ssl certificate HostName.setUrlHostName(httpClientRequest.getHost()); client = (CloseableHttpClient) SSLCipherSuiteUtil.createHttpClientWithVerify(Constant.INTERNATIONAL_PROTOCOL); } else { // creat httpClient and do not verify ssl certificate client = (CloseableHttpClient) SSLCipherSuiteUtil.createHttpClient(Constant.INTERNATIONAL_PROTOCOL); } HttpResponse response = client.execute(signedRequest); // Print the body of the response. HttpEntity resEntity = response.getEntity(); if (resEntity != null) { LOGGER.info("Processing Body with name: {} and value: {}", System.getProperty("line.separator"), EntityUtils.toString(resEntity, "UTF-8")); } } catch (Exception e) { LOGGER.error(e.getMessage()); } finally { if (client != null) { client.close(); } } } } 运行HttpClientDemo.java,对请求进行签名、访问API并打印结果。 示例结果如下: [main] INFO com.huawei.apig.sdk.demo.HttpClientDemo - Print the authorization: [Authorization: SDK-HMAC-SHA256 Access=3afe***ba29, SignedHeaders=host;x-sdk-date, Signature=26b2***dbf6] [main] INFO com.huawei.apig.sdk.demo.HttpClientDemo - Print the status line of the response: HTTP/1.1 200 OK [main] INFO com.huawei.apig.sdk.demo.HttpClientDemo - Processing Header with name: Date and value: Fri, 26 Aug 2022 08:58:51 GMT [main] INFO com.huawei.apig.sdk.demo.HttpClientDemo - Processing Header with name: Content-Type and value: application/json [main] INFO com.huawei.apig.sdk.demo.HttpClientDemo - Processing Header with name: Transfer-Encoding and value: chunked [main] INFO com.huawei.apig.sdk.demo.HttpClientDemo - Processing Header with name: Connection and value: keep-alive [main] INFO com.huawei.apig.sdk.demo.HttpClientDemo - Processing Header with name: Server and value: api-gateway [main] INFO com.huawei.apig.sdk.demo.HttpClientDemo - Processing Header with name: X-Request-Id and value: 10955c5346b9512d23f3fd4c1bf2d181 [main] INFO com.huawei.apig.sdk.demo.HttpClientDemo - Processing Body with name: and value: {"200": "sdk success"} 显示{"200": "sdk success"},表示签名成功,API成功请求到后端。 如果改变AK或SK的值,API网关将返回的错误信息error_msg。
  • 操作步骤 登录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)用于构建组件镜像。 单击“下一步”。 单击“创建并部署”,等待组件创建成功。
  • 实践概述 在实际业务中,考虑到机房故障问题,需要将服务部署在不同的可用区中以提高可用性。 但是,在不同可用区部署组件时每个组件都必须按需配置一遍,存在操作复杂、容易出错的问题。而且需要在组件创建完成后立即部署运行,并不支持创建后按需部署的需求。如果组件配置错误,会导致部署失败,需要删除后重新创建并部署。 使用ServiceStage的发布管理功能可以更好的实施组件跨可用区搬迁和顺序升级: 基于ServiceStage发布管理的批量克隆发布单实现组件的跨可用区搬迁。 基于ServiceStage发布管理的批量升级发布单实现组件跨可用区的升级,并指定在不同可用区组件的升级顺序。 父主题: 使用ServiceStage基于发布管理实现组件跨可用区搬迁和顺序升级
  • 访问基线泳道实例 打开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实例。
  • 操作步骤 登录ServiceStage控制台。 单击“全链路流量控制”。 单击待操作灰度泳道所在泳道组名称(例如:lane-test),进入“全链路流量控制”页面。 单击泳道组当前关联的流量入口网关卡片上的“网关路由配置”。 “配置方式”选择“基于内容配置”。 单击以对应灰度泳道名称命名的页签(例如:gray),进入为指定灰度泳道配置网关路由页面。 单击“新增匹配规则”,参考下表设置路由匹配规则。 参数名称 参数说明 匹配类型 支持的路由规则匹配类型。 当前仅支持基于“请求头”类型的匹配。 参数名称 “匹配类型”对应的key值,设置为:type。 条件类型 “条件值”满足的匹配规则,选择“前缀匹配”。 条件值 “匹配类型”对应的value值,设置为:gray。 单击“确定”,完成基于内容的网关路由配置。 开启泳道流量,使配置生效。 单击。 单击“确定”。 配置会对该灰度泳道下的所有组件生效。如果业务请求无法匹配到泳道所配置的路由规则,则网关将业务请求转发至基线泳道的组件处理。
  • 操作步骤 登录ServiceStage控制台。 单击“全链路流量控制”。 单击待创建灰度泳道所在泳道组名称(例如:lane-test),进入“全链路流量控制”页面。 单击“创建泳道”,参考下表填写灰度泳道信息。 参数名称 参数说明 *泳道名称 输入灰度泳道的名称,例如:gray。 *标签 输入gray。 用于在Kubernetes类型的环境下创建并部署组件时,将绑定ServiceComb引擎专享版的组件打上相应的标签以标记流量。当有请求访问时,应用网关会根据路由规则将流量转发到对应流量标签的微服务上。 单击“确定”,完成灰度泳道创建。
  • 操作步骤 登录ServiceStage控制台。 单击“全链路流量控制”。 单击待创建基线泳道所在泳道组名称(例如:lane-test),进入“全链路流量控制”页面。 单击“创建基线泳道”,参考下表填写泳道信息。 参数名称 参数说明 泳道名称 输入泳道的名称,例如:base。 标签 用于在Kubernetes类型的环境下创建并部署组件时,将绑定ServiceComb引擎专享版的组件打上相应的标签以标记流量。当有请求访问时,应用网关会根据路由规则将流量转发到对应流量标签的微服务上。当无法找到对应标签的微服务时,将转发至基线泳道对应的微服务。 基线泳道的标签默认为base,不可修改。 单击“确定”,完成基线泳道创建。 单击已创建好的基线泳道卡片上的“关联组件”或右上角的。 在弹出的“关联组件”对话框勾选创建并部署基线版本组件时已部署好的全部待关联组件:unit-controller、unit-consumer和unit-provider。 单击“确定”,完成基线泳道组件关联。 单击基线泳道卡片上当前已关联的组件数,可以查看基线泳道已关联的组件列表。
  • 操作步骤 登录微服务引擎控制台。 为准备资源时创建的应用网关配置路由,请参考创建路由。 参考下表填写相关参数,其余参数保持默认。 参数名称 参数说明 路由名称 输入路由名称,例如:controller。 域名 勾选下拉列表中的“*”。 路由规则 服务地址:选择“前缀匹配”,输入“/”。 请求方法:选择“GET”。 服务名称:选择“unit-controller”。 分组:设置为“不限制”。 权重:设置为100。 使用全链路流量控制实现灰度发布时,一条路由下的所有路由规则必须绑定同一个目标服务。如需绑定多个目标服务,请创建多条路由。
  • 操作步骤 为准备资源时创建的应用网关创建服务来源,请参考创建服务来源。 服务来源参数请参考下表进行设置。 参数名称 参数说明 来源类型 目标服务的来源,选择“CSE ServiceComb引擎”。 来源名称 输入目标服务的名称,例如:servicecomb。 引擎实例 选择准备资源时已经创建的ServiceComb引擎专享版。 为准备资源时创建的应用网关绑定目标服务,请参考创建服务。 参考下表填写相关参数。 参数名称 参数说明 来源类型 目标服务的来源,选择“CSE ServiceComb引擎”。 服务来源 选择1输入的目标服务的名称,例如:servicecomb。 环境选择 保持默认。 服务列表 选择接入了1所选择的ServiceComb引擎的目标服务实例“unit-controller”。
  • 准备资源 创建一个虚拟私有网络VPC,请参考创建虚拟私有云和子网。 创建一个1.15以上版本的CCE集群(如果只是试用场景,“集群规模”选择“50节点”,“集群master实例数”选择“单实例”即可),请参考购买集群。 集群中至少包含1个规格为8vCPUs、16GB内存或者2个规格为4vCPUs、8GB内存的ECS节点,并且绑定弹性公网IP。 集群所在VPC为1创建的VPC。 CCE集群不能被其他环境绑定。 创建不开启安全认证的2.4.0及以上版本的ServiceComb引擎专享版,请参考创建微服务引擎。 如果ServiceComb引擎所在VPC与1创建的VPC不一致,需正确配置VPC连通。 创建微服务应用网关,请参考创建应用网关。 如果微服务应用网关与环境所在VPC不一致,需正确配置VPC连通。
  • 使用流程 图2 全链路流量控制使用流程 全链路流量控制的使用流程如图2所示。 使用前准备 使用ServiceStage全链路流量控制实现Spring Cloud应用全链路灰度前,需要先准备VPC、CCE、ServiceComb引擎专享版、微服务应用网关等资源,并完成Fork全链路流量控制示例源码到您的GitHub代码库、创建组件部署环境等准备工作,请参考使用ServiceStage全链路流量控制实现Spring Cloud应用全链路灰度前准备。 创建并部署基线版本组件 创建并部署基线版本组件,用于关联到后续操作创建的基线泳道,请参考创建并部署基线版本组件。 绑定目标服务到应用网关 为应用网关绑定目标服务,以便网关获取组件微服务地址,请参考绑定目标服务到应用网关。 配置应用网关路由 为绑定了目标服务的应用网关配置路由规则,当应用网关收到访问流量时,会根据已配置的路由规则判断是否匹配并做相应的处理,请参考配置应用网关路由。 创建泳道组 泳道组是一组泳道的集合,用于区分不同的组织或场景,请参考创建泳道组。 创建基线泳道并关联组件 泳道用于为相同版本组件定义一套隔离环境。只有满足了流控路由规则的请求流量才会路由到对应泳道里的打标签组件。基线泳道包括应用中所有组件的基线版本。当微服务调用链中不存在某个组件的时候,会默认访问基线泳道中的组件,请参考创建基线泳道并关联组件。 创建灰度泳道 灰度泳道用于关联应用的灰度版本组件,请参考创建灰度泳道。 部署灰度版本组件到灰度泳道 灰度泳道创建后,根据实际业务需要创建灰度版本组件,用于调整流量至灰度泳道验证业务,请参考部署灰度版本组件到灰度泳道。 调整灰度泳道流量 根据实际业务需要修改路由配置,调整流量至灰度泳道,请参考调整灰度泳道流量。 验证全链路灰度结果 访问组件实例,验证全链路灰度结果,请参考验证全链路灰度结果。
  • 背景信息 在一个存在多个微服务组件的应用体系中,对其中一个微服务组件进行版本升级发布时,会涉及到其他微服务组件版本的变动升级。所以要求在灰度验证时能够使得灰度流量同时经过涉及到的所有微服务组件灰度版本。如图1所示,由于Microservice-B组件发布新版本涉及到Microservice-C组件的变动,所以在做灰度验证时要求流量能够同时经过Microservice-B、Microservice-C组件的灰度版本。因此,需要额外配置涉及到的Microservice-C组件微服务治理规则,确保流入灰度环境下Microservice-B组件流量能够转发到Microservice-C组件的灰度版本。 图1 全链路流量控制示意图 但是在真实业务场景中,由于业务的微服务组件规模和数量很大,一条请求链路可能会经过很多个微服务组件。新功能发布时也可能会涉及到多个微服务组件同时变更,并且业务的微服务组件之间依赖错综复杂。频繁的组件版本发布、以及组件多版本并行开发导致流量治理规则日益膨胀,给整个系统的可维护性和稳定性带来了严重挑战。 对于以上问题和挑战,业界结合实际业务场景和产业实践经验,提出了一种端到端的灰度发布方案,来进行全链路流量控制,即全链路灰度。全链路流量控制功能将应用组件的相关版本隔离成一个独立的运行环境(即泳道),通过设置流控路由规则,将满足规则的请求流量路由到目标版本应用。
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全