华为云用户手册

  • 开源社区链接 servicecomb-java-chassis、spring-cloud-huawei等SDK作为开源框架,版本的发布和维护都由开源团队负责,目前已经在开源社区积累了诸多问题的解决经验,若在开发使用过程中遇到问题,请通过如下链接检索历史问题、提交新问题和进行问题咨询: servicecomb-java-chassis开源框架 开源社区:https://github.com/apache/servicecomb-java-chassis/issues 开发者指导:https://servicecomb.apache.org/references/java-chassis/zh_CN/ 微服务引擎论坛 :https://bbs.huaweicloud.com/forum/forum-622-1.html spring-cloud-huawei开源框架 开源社区:https://github.com/huaweicloud/spring-cloud-huawei/issues 参考文档:https://support.huaweicloud.com/devg-servicestage/cse_04_0009.html 搜索小技巧: 使用站内搜索,提升准确性。比如服务报错:Load balancer does not have available server for client: default,可以使用如下搜索方式: Load balancer site:bbs.huaweicloud.com或者Load balancer site:github.com/apache/servicecomb-java-chassis/issues servicecomb-java-chassis, spring-cloud-huawei均为开源软件,ServiceStage团队对其进行了插件扩展以接入云服务,如果遇到框架使用问题而非插件问题,请到对应开源社区提问。
  • 问题描述 在对微服务引擎专享版执行创建、删除、升级等操作时,可能会遇到非微服务引擎本身的错误。 例如,在创建微服务引擎专享版时,集群部署失败,报错如下: {"error_code":"SV CS TG.00500400","error_message":"{\"kind\":\"Status\",\"apiVersion\":\"v1\",\"metadata\":{},\"status\":\"Failure\",\"code\":400,\"errorCode\":\"CCE.01400013\",\"errorMessage\":\"Insufficient volume quota.\",\"error_code\":\"CCE_CM.0307\",\"error_msg\":\"Volume quota is not enough\",\"message\":\"volume quota checking failed as [60/240] insufficient volume size quota\",\"reason\":\"QuotaInsufficient\"}"}
  • 虚拟机类型环境下部署的应用组件支持在什么目录写文件? 虚拟机类型环境下部署的应用组件只支持在应用组件的运行目录下写文件,比如写日志文件或者解压包等。 应用组件的运行目录为安装虚拟机应用组件的ECS上的/opt/application/${appName}/${appVersion}/${instanceId}目录路径下。其中: ${appName}为组件实例名。 ${appVersion}为组件实例的版本号。 ${instanceId}为实例id。 同时,虚拟机类型环境下部署的应用组件只支持在应用组件的运行目录下写文件只针对新安装的组件实例或者升级后的组件实例生效,对于原先已经部署的组件实例的目录还是维持原来的权限。 父主题: 应用管理
  • 微服务专享版引擎版本从1.x升级到2.x时有哪些注意事项? 微服务引擎专享版从1.x升级到2.x的过程中及升级完以后可能会出现的现象及解决方法如下: 现象1:在微服务引擎专享版从1.x版本升级至2.x版本的过程中,使用接口获取配置或更新配置失败,报connection refused或Connection was closed,出现错误信息示例如下: [ERROR] Config update from xxx.xxx.xxx.xx failed. Error message is [Connection refused: xxx.xxx.xxx.xx]. org.apache.servicecomb.config.client.ConfigCenterClient$ConfigRefresh.lambda$null$13(ConfigCenterClient.java:428) 或 [ERROR]Config update from xxx.xxx.xxx.xx failed. Error message is [Connection was closed]. org.apache.servicecomb.config.client.ConfigCenterClient$ConfigRefresh.lambda$null$13(ConfigCenterClient.java:428) 解决方法:微服务引擎专享版1.x版本升级至2.x版本时配置中心会有短暂的重启,重启期间获取配置或更新配置会报错断连。因此引擎升级过程中避免更新配置,升级完成后该问题即可解决。 现象2:使用引擎版本为1.x配置中心接入的用户,无法使用“业务场景治理”功能。 解决办法:由于引擎版本为2.x的配置中心换成了kie,需要将配置中心接入方式切换为kie,具体切换方式详见Spring Cloud使用配置中心中相关内容。 现象3:在使用版本为2.x的微服务引擎时,使用导入配置文件功能,存在原配置中心格式的文件无法导入,提示文件为空或者格式错误。 解决办法:将配置文件的配置项格式修改为2.x引擎要求的配置文件格式,新的配置文件为json文件,内容格式如下: { "data":[ { "key":"xxx", "labels":{ "environment":"xxx","service": "xxx","app": "xxx","version": "xxx" }, "value":"xxx", "value_type":"text", "status":"enabled" },{ "key":"xxx", "labels":{ "environment":"xxx" }, "value":"xxx", "value_type":"text", "status":"enabled" },{ "key":"xxx", "labels":{ "environment":"xxx","service": "xxx" }, "value":"xxx", "value_type":"text", "status":"enabled" },{ "key":"xxx", "labels":{ "environment":"xxx","service": "xxx","app": "xxx" }, "value":"xxx", "value_type":"text", "status":"enabled" } ]} 其中: key和value是配置项对应的键和值,其为必填。 labels是配置范围,其为必填,通过填写environment,service,app,version等字段来确定配置范围。 value_type是配置项类型,其为必填,可以选择ini、json、text、yaml、properties、xml,默认为text。 status是配置是否启用,其为选填,可以选择enabled(开启),disabled(关闭),默认关闭。 现象4:若在微服务引擎1.x版本的配置中心设置了全局配置,当升级到2.x之后,全局配置根据配置中心升级后的范围会相应的自动调整作用范围environment=${environmentName},environmentName取值可以为空、development、testing、acceptance或production。此时如果SDK调整以kie作为配置中心时,需要在项目配置文件中增加自定义标签以获取该部分配置,以下以environment=production为例展示: spring-cloud-huawei框架: spring: cloud: servicecomb: config: serverType: kie kie: customLabel: environment customLabelValue: production servicecomb-java-chassis框架: servicecomb: kie: customLabel: environment customLabelValue: production 父主题: 基础设施
  • 解决方法 登录虚拟机Agent离线的弹性云服务器,请参考登录弹性云服务器。 执行如下命令查看安装虚拟机Agent时选择的“授权模式”。 cd /opt/servicestage-agent cat servicestage-agent.conf 如果返回结果中AK、SK的值为空,则“授权模式”为“委托授权”,请执行3。 如果返回结果中AK、SK的值不为空,则“授权模式”为“AK/SK”,请执行4。 “授权模式”为“委托授权”,请执行以下操作: 登录云服务器控制台。 在左侧导航栏选择“弹性云服务器”,单击虚拟机Agent离线的弹性云服务器名称。 在“基本信息”页签的“管理信息”区域,查看该弹性云服务器绑定的 IAM 委托名称。 登录 统一身份认证 服务控制台。 在左侧导航栏选择“委托”,单击3.c获取到的委托名称。 选择“基本信息”页签,查看“云服务”是否为ECS服务。 选择“授权记录”页签,查看“权限”是否为Tenant Administrator。 如果以上全部为是,请执行5。 如果以上任意一项为否,请先修改委托,然后执行3.f。 登录虚拟机Agent离线的弹性云服务器,请参考登录弹性云服务器。 执行以下命令完成agent的重启,其中x.x.x要替换成环境中servicestage-agent的实际版本。 cd /opt/servicestage-agent/servicestage-agent-x.x.x su agent ./servicestage-agent.sh restart “授权模式”为“AK/SK”,请执行以下操作: 获取权限正确的或者创建新的AK、SK,请参考访问密钥。 登录虚拟机Agent离线的弹性云服务器,请参考登录弹性云服务器。 执行以下命令修改配置文件中的AK和SK的值,修改完后保存退出。 cd /opt/servicestage-agent vi servicestage-agent.conf 执行以下命令完成agent的重启,其中x.x.x要替换成环境中servicestage-agent的实际版本: cd /opt/servicestage-agent/servicestage-agent-x.x.x su agent ./servicestage-agent.sh restart 如果以上方法不能解决问题,请联系技术支持工程师。
  • 解决方法 登录ServiceStage控制台。 在区域列表选择您的业务所在区域,例如“亚太-新加坡”。 在浏览器地址栏,获取“region”字段对应的值。 region取值示例如下面加粗内容所示: https://console.huaweicloud.com/servicestage/?agencyId=df****************************c1®ion=ap-southeast-3&locale=zh-cn#/overview 分别为表1所示服务创建 VPC终端节点 ,请参考购买连接“接口”型终端节点服务的终端节点。 区域:请选择2所选择的区域。 服务类别:选择“按名称查找服务”。 服务名称:请参考表1填写各云服务对应的终端节点服务名称,然后单击“验证”。 请将下表中的${region}替换为3获取到的值。 表1 连接“接口”型终端节点服务说明 云服务 终端节点服务名称 LTS com.myhuaweicloud.${region}.lts-access AOM com.myhuaweicloud.${region}.aom-access APM com.myhuaweicloud.${region}.apm-master 说明: 仅“西南-贵阳一”区域需要为APM服务创建VPC终端节点。 SWR com.myhuaweicloud.${region}.swr 说明: 如果您选择的是“华南-广州”区域,SWR的终端节点服务名称是:swr.cn-south-1.myhuaweicloud.com。 APIG com.myhuaweicloud.${region}.api 勾选“创建内网 域名 ”。 虚拟私有云:根据您的实际业务需要,为表1所示的所有终端节点服务选择同一个虚拟私有云。 子网:根据您的实际业务需要,为表1所示的所有终端节点服务分别选择子网。 其他参数请根据实际业务需要进行设置。 为OBS服务创建VPC终端节点,请参考购买连接“网关”型终端节点服务的终端节点。 需要为表2所示的OBS服务的终端节点服务分别创建VPC终端节点。 区域:请选择2所选择的区域。 服务类别:选择“按名称查找服务”。 服务名称:请参考表2填写对应区域OBS服务的终端节点服务名称。 表2 连接“网关”型终端节点服务说明 区域 终端节点服务名称 西南-贵阳一 cn-southwest-2.com.myhuaweicloud.v4.obsv2 cn-southwest-2.myhuaweicloud.v4.obsv2.lz05 华南-广州 cn-south-1.com.myhuaweicloud.v4.obsv2 cn-south-1.com.myhuaweicloud.v4.obsv2.lz05 cn-south-1.com.myhuaweicloud.v4.obsv2.lz08 cn-south-1.com.myhuaweicloud.v4.obsv2.lz09 华东二 com.myhuaweicloud.cn-east-4.obslb01.v4.obsv2.vxlan com.myhuaweicloud.cn-east-4.obslb01.v6.obsv2.vxlan 亚太-新加坡 ap-southeast-3.com.myhuaweicloud.v4.obsv2 ap-southeast-3.com.myhuaweicloud.v6.obsv2 非洲-约翰内斯堡 af-south-1.myhuaweicloud.v4.obsv2 af-south-1.myhuaweicloud.v6.obsv2 华东-上海一 cn-east-3.com.myhuaweicloud.v4.global.obsv2 cn-east-3.v4obsv2_new.58c9f146-63f0-4f07-98d3-18fe4874086b cn-east-3.myhuaweicloud.v4.obsv2.lz03 cn-east-3.myhuaweicloud.v4.obsv2.lz04 cn-east-3.com.myhuaweicloud.v4.obsv2.lz09 cn-east-3.com.myhuaweicloud.v4.obsv2.lz11 华北-北京四 cn-north-4.com.myhuaweicloud.v4.obsv2.OBSCluster9 cn-north-4.com.myhuaweicloud.v4.byte.obsv2 cn-north-4.com.myhuaweicloud.v4.CBG.obsv2 cn-north-4.com.myhuaweicloud.v4.obsv2.lz11 cn-north-4.com.myhuaweicloud.v4.storage.lz13 cn-north-4.com.myhuaweicloud.v4.obsv2.lz25 拉美-墨西哥城二 la-north-2.com.myhuaweicloud.v4.obsv2 虚拟私有云:为表2所示的所有终端节点服务选择4所选择的虚拟私有云。 子网:根据您的实际业务需要,为表2所示的终端节点服务分别选择子网。 其他参数请根据您的实际业务需要进行设置。 在终端节点列表,获取4中为APIG、SWR服务创建的VPC终端节点对应的服务地址。 其中,${region}为3获取到的值。 创建内网域名,请参考创建内网域名。 域名:请分别填写以下内网域名。 请将以下内网域名中的${region}替换为3获取到的值。 servicestage.${region}.myhuaweicloud.com ecs.${region}.myhuaweicloud.com vpc.${region}.myhuaweicloud.com aom.${region}.myhuaweicloud.com swr-api.${region}.myhuaweicloud.com swr.${region}.myhuaweicloud.com VPC:选择4所选择的虚拟私有云。 其他参数请根据您的实际业务需要进行设置。 为7创建的所有内网域名添加记录集,请参考添加A类型记录集。 记录类型:选择“A – 将域名指向IPv4地址”。 记录值:参考下表填写。 请将下表中的${region}替换为3获取到的值。 内网域名 记录值 servicestage.${region}.myhuaweicloud.com 输入6获取到的com.myhuaweicloud.${region}.api终端节点服务对应的服务地址。 ecs.${region}.myhuaweicloud.com vpc.${region}.myhuaweicloud.com aom.${region}.myhuaweicloud.com swr-api.${region}.myhuaweicloud.com swr.${region}.myhuaweicloud.com 输入6获取到的com.myhuaweicloud.${region}.swr终端节点服务对应的服务地址。 其他参数请根据您的实际业务需要进行设置。
  • 问题描述 虚拟机类型环境下部署组件删除失败,在任务详情界面单击“查看详情”,看到的错误信息示例如下: { "statusCode": 400, "jsonBody": { "error_code": "SVCSTG.VMAPP.4001020", "error_msg": "4001020", "error_detail": "host status is not active: abb3d0a4-f715-4932-b7ec-6dd917f65778,4f68e35b-6e08-48d0-bd3a-1151be19efa5" }} 其中: 错误码为:SVCSTG.VMAPP.4001020。 详细错误信息为:host status is not active: abb3d0a4-f715-4932-b7ec-6dd917f65778 ,“abb3d0a4-f715-4932-b7ec-6dd917f65778,4f68e35b-6e08-48d0-bd3a-1151be19efc6”是部署组件的两个弹性云服务器的ID。
  • 问题描述 VPC终端节点(VPC Endpoint),能够将VPC私密地连接到终端节点服务,使VPC中的云资源无需弹性公网IP就能够访问终端节点服务,提高了访问效率,为您提供更加灵活、安全的组网方式。 为虚拟机类型环境纳管的ECS安装虚拟机Agent时,可以通过已创建的VPC终端节点与LTS、AOM、OBS、SWR服务通信,并使用APIG通过配置好的内网域名调用ServiceStage、ECS、VPC、AOM的功能接口。 仅“西南-贵阳一”、“华东二”、“华南-广州”、“亚太-新加坡”、“非洲-约翰内斯堡”、“华东-上海一”、“华北-北京四”、“拉美-墨西哥城二”区域的ServiceStage支持通过VPC终端节点访问依赖的服务。
  • CCE集群节点配置污点和容忍策略后构建报错 问题描述 构建失败,构建日志显示如下错误提示信息: 0/1 nodes are available: 1 node(s) had untolerated taint {node.kubernetes.io/route-unschedulable: }. preemption: 0/1 nodes are available: 1 Preemption is not helpful for scheduling. 原因分析 由于构建任务被调度到了CCE集群的受限调度节点上,该节点进行了污点管理配置(如报错信息中显示的node.kubernetes.io/route-unschedulable)。污点能够使节点排斥某些特定的Pod,从而避免Pod调度到该节点上,同时该CCE集群中没有其他节点可供调度,导致构建失败报错。 解决方法 请参考管理节点污点(Taint),去除受限调度节点上的污点,保证CCE集群下至少有一个节点可供调度。
  • 构建的代码依赖自己的私有maven仓库 有以下两种解决方案。 在自己的项目的根目录下增加settings.xml文件,在settings.xml指定自己的私有maven仓库地址(如果自己的私有maven仓库是需要认证的,则需要在settings.xml配置上自己的认证信息,用户名密码等)。 在自己项目的pom.xml文件中,指定自己的私有maven仓库。 settings.xml和pom.xml所在路径示例如下。
  • 出现拉取不到代码的场景 如下图所示: 一般原因可能有三种。 如果是在自己的节点上构建应用,可能是该节点没有绑定弹性ip,如上图所示"192.168.x.x"的节点没有绑定弹性ip,解决方法:去该节点绑定弹性IP。 授权信息过期,代码源的私人令牌权限范围不够,或者授权信息已被移除等,例如:CodeArts的代码源,拉取不到代码,可能是创建授权的时候,用户名对应的密码输错了,导致拉取不到代码。解决方法:重新授权即可。 自己搭建的代码源仓库,和构建的节点网络不通,例如:在集群A的某一个节点上搭建了一个私有的bitbucket,使用集群B构建,但是集群B和集群A不是同一个vpc,内网不通,导致构建拉取不到代码。解决方法:打通网络。
  • 解决方法 登录虚拟机Agent离线的弹性云服务器,请参考登录弹性云服务器。 执行如下命令查看安装虚拟机Agent时选择的“授权模式”。 cd /opt/servicestage-agent cat servicestage-agent.conf 如果返回结果中AK、SK的值为空,则“授权模式”为“委托授权”,请执行3。 如果返回结果中AK、SK的值不为空,则“授权模式”为“AK/SK”,请执行4。 “授权模式”为“委托授权”,请执行以下操作: 登录云服务器控制台。 在左侧导航栏选择“弹性云服务器”,单击虚拟机Agent离线的弹性云服务器名称。 在“基本信息”页签的“管理信息”区域,查看该弹性云服务器绑定的IAM委托名称。 登录统一身份认证服务控制台。 在左侧导航栏选择“委托”,单击3.c获取到的委托名称。 选择“基本信息”页签,查看“云服务”是否为ECS服务。 选择“授权记录”页签,查看“权限”是否为Tenant Administrator。 如果以上全部为是,请执行5。 如果以上任意一项为否,请先修改委托,然后执行3.f。 登录虚拟机Agent离线的弹性云服务器,请参考登录弹性云服务器。 执行以下命令完成agent的重启,其中x.x.x要替换成环境中servicestage-agent的实际版本。 cd /opt/servicestage-agent/servicestage-agent-x.x.x su agent ./servicestage-agent.sh start 查看Agent状态是否在线。 是,操作结束。 否,请执行5。 “授权模式”为“AK/SK”,请执行以下操作: 获取权限正确的或者创建新的AK、SK,请参考访问密钥。 登录虚拟机Agent离线的弹性云服务器,请参考登录弹性云服务器。 执行以下命令修改配置文件中的AK和SK的值,修改完后保存退出。 cd /opt/servicestage-agent vi servicestage-agent.conf 执行以下命令完成agent的重启,其中x.x.x要替换成环境中servicestage-agent的实际版本: cd /opt/servicestage-agent/servicestage-agent-x.x.x su agent ./servicestage-agent.sh start 查看Agent状态是否在线。 是,操作结束。 否,请执行5。 如果以上方法不能解决问题,请联系技术支持工程师。
  • 微服务和普通应用有什么不同? 微服务是一种架构模式,其核心是将一个单体应用分成多个部分进行开发。所以微服务架构的应用程序,其本质上是一个分布式应用。 基于微服务架构构建的应用程序,可以让业务变化更快,整体系统可靠性更高。 类型 微服务 普通应用 开发 每个微服务的体量相对较小,业界的two pizza团队和“2周即可全部重写全部代码”等都可以作为微服务划分的参考。在开发时期,需注意服务接口的定义以与周边微服务进行配合,“基于契约”的开发方式是非常推荐的。 微服务开发,请参考开发微服务应用。 普通应用逻辑复杂、模块耦合、代码臃肿、修改难度大、版本迭代效率低下。 部署 微服务组成的应用系统通常比较复杂,在一次性部署的时候,需要进行编排部署。 微服务应用部署,请参考创建并部署组件。 普通应用可能会比较大,构建和部署时间也相应地比较长,不利于频繁部署,阻碍持续交付。在移动应用开发中,这个问题会显得尤为严重。 运维 在原来的指标监控、日志收集之外还非常强调治理。其核心理念是在运行时期通过对线上系统的各种调整以达到系统整体健康度要求的效果。 应用运维,请参考组件运维。 普通应用线上问题修复周期长,任何一个线上问题修复都需要对整个应用系统进行全面升级。 父主题: 应用开发问题
  • 解决方法 创建部署应用组件时或者部署应用组件后设置一下“TCP/UDP路由配置”即可。以下三种方式均可解决该问题: 集群内访问:应用暴露给同一集群内其他应用访问的方式,可以通过集群内部域名访问。 VPC内网访问:应用可以让同一VPC内其他应用程序访问,通过集群节点的IP或者私网弹性负载均衡ELB的服务地址访问。 公网访问:通过弹性IP从公网访问应用,一般用于系统中需要暴露到公网的服务。该访问方式需要给集群内任一节点绑定弹性IP,并设置一个映射在节点上的端口。
  • 为什么一定要定义服务契约? 企业级系统规模普遍较大,微服务组件众多,所以对服务间接口进行统一管理是企业的关键需求。微服务引擎通过契约管理满足这一需求。 管理角度:通过契约管理,企业中的接口管理者可以统一定义微服务的契约文件(符合接口描述标准的接口定义文件),从而做到规范并协调多个开发团队的接口开发,降低沟通成本且避免后期的混乱。 开发角度:在微服务开发的时候,不同团队甚至不同ISV间,可以基于统一的契约文件开发同一应用或系统,从而方便整体系统一致性的维护。具体表现在,单体应用中模块间是代码级调用,在编译期就可以解决API不兼容问题,修复成本也极低。微服务解耦后,服务间变为了远程调用,接口不一致通常发现时间较晚,会造成更大的修复成本。有了契约可以保证架构师设计契约,严格审查变更,并反向生成代码,保证兼容性。 另外,对于规模较小、统一管理要求不高的系统,产品支持从接口代码自动生成契约文件。 父主题: 应用开发问题
  • 问题描述 在后台Docker登录成功以后,使用Docker客户端上传镜像包时,例如执行如下命令上传: docker push 10.125.54.133:20202/test1/busybox:latest 10.125.54.133:20202为租户或用户准备上传仓库的IP和端口号。 test1为namespace。 上传失败,Docker客户端出现如下提示: unauthorized: authentication required
  • 解决方法 租户或用户以正确的AK/SK登录Docker客户端。 向本租户或用户下有操作权限的namespace上传镜像,或者更换到新的namespace。 执行如下命令,向本租户或用户下有操作权限的namespace上传镜像。 docker push 10.125.54.133:20202/test2/busybox:latest 10.125.54.133:20202为租户或用户准备上传仓库的IP和端口号。 test2为该租户或用户下有操作权限的namespace。 执行如下命令,更换到新的namespace。 docker push 10.125.54.133:20202/test3/busybox:latest 10.125.54.133:20202为租户或用户准备上传仓库的IP和端口号。 test3为新的namespace。 上传成功后,显示如下: The push refers to a repository [10.125.54.133:20202/test2/busybox]6a749002dd6a: Pushedlatest: digest: sha256:ecb3f3e96e003af6e02f0f47ac4d25a3b0585db54de0a82bb070f8cb78a79bc7 size: 527 出现异常,请联系技术支持工程师。
  • 解决方法 待查看日志的主机未安装ICAgent ServiceStage的日志查看能力是由AOM服务提供的。主机是否安装ICAgent是使用AOM的日志能力的前提,否则将无法查看ServiceStage的日志。ICAgent是AOM的采集器,分别运行在每台主机上用于实时采集指标、日志和应用性能数据。 如何为待查看日志的主机安装ICAgent,请参考安装ICAgent。 用户业务日志输出位置为非标准位置 由于用户配置了日志策略,导致用户程序业务日志未输出到标准的输出位置。需参考如下方法进行排查处理: 虚拟机部署 排查配置的日志策略,是否把用户程序业务日志输出位置写到ServiceStage默认指定的虚拟机日志目录(/var/log/application/${组件名}-${环境名}-${随机字符串}/${版本号}/${实例ID}/start_app.log)外的其他目录。 请查询业务代码,对日志策略进行调整。 容器部署 排查配置的日志策略,是否把业务日志输出到除标准输出外的其他地方。请参考设置应用日志策略进行相关配置。
  • 解决方法 登录ServiceStage控制台。 在区域列表选择您的业务所在区域,例如“亚太-新加坡”。 在浏览器地址栏,获取“region”字段对应的值。 region取值示例如下面加粗内容所示: https://console.huaweicloud.com/servicestage/?agencyId=df****************************c1®ion=ap-southeast-3&locale=zh-cn#/overview 分别为SWR、APIG服务创建VPC终端节点,请参考购买连接“接口”型终端节点服务的终端节点。 区域:请选择2所选择的区域。 服务类别:选择“按名称查找服务”。 服务名称:请参考表1填写各云服务对应的终端节点服务名称。 请将下表中的${region}替换为3获取到的值。 表1 连接“接口”型终端节点服务说明 云服务 终端节点服务名称 SWR com.myhuaweicloud.${region}.swr 说明: 如果您选择的是“华南-广州”区域,SWR的终端节点服务名称是:swr.cn-south-1.myhuaweicloud.com。 APIG com.myhuaweicloud.${region}.api 勾选“创建内网域名”。 虚拟私有云:根据您的实际业务需要,为表1所示的所有终端节点服务选择同一个虚拟私有云。 子网:根据您的实际业务需要,为表1所示的终端节点服务分别选择子网。 其他参数请根据实际业务需要进行设置。 为OBS服务创建VPC终端节点,请参考购买连接“网关”型终端节点服务的终端节点。 需要为表2所示的OBS服务的终端节点服务分别创建VPC终端节点。 区域:请选择2所选择的区域。 服务类别:选择“按名称查找服务”。 服务名称:请参考表2填写OBS服务对应的终端节点服务名称。 表2 连接“网关”型终端节点服务说明 区域 终端节点服务名称 西南-贵阳一 cn-southwest-2.com.myhuaweicloud.v4.obsv2 cn-southwest-2.myhuaweicloud.v4.obsv2.lz05 华南-广州 cn-south-1.com.myhuaweicloud.v4.obsv2 cn-south-1.com.myhuaweicloud.v4.obsv2.lz05 cn-south-1.com.myhuaweicloud.v4.obsv2.lz08 cn-south-1.com.myhuaweicloud.v4.obsv2.lz09 华东二 com.myhuaweicloud.cn-east-4.obslb01.v4.obsv2.vxlan com.myhuaweicloud.cn-east-4.obslb01.v6.obsv2.vxlan 亚太-新加坡 ap-southeast-3.com.myhuaweicloud.v4.obsv2 ap-southeast-3.com.myhuaweicloud.v6.obsv2 非洲-约翰内斯堡 af-south-1.myhuaweicloud.v4.obsv2 af-south-1.myhuaweicloud.v6.obsv2 华东-上海一 cn-east-3.com.myhuaweicloud.v4.global.obsv2 cn-east-3.v4obsv2_new.58c9f146-63f0-4f07-98d3-18fe4874086b cn-east-3.myhuaweicloud.v4.obsv2.lz03 cn-east-3.myhuaweicloud.v4.obsv2.lz04 cn-east-3.com.myhuaweicloud.v4.obsv2.lz09 cn-east-3.com.myhuaweicloud.v4.obsv2.lz11 华北-北京四 cn-north-4.com.myhuaweicloud.v4.obsv2.OBSCluster9 cn-north-4.com.myhuaweicloud.v4.byte.obsv2 cn-north-4.com.myhuaweicloud.v4.CBG.obsv2 cn-north-4.com.myhuaweicloud.v4.obsv2.lz11 cn-north-4.com.myhuaweicloud.v4.storage.lz13 cn-north-4.com.myhuaweicloud.v4.obsv2.lz25 拉美-墨西哥城二 la-north-2.com.myhuaweicloud.v4.obsv2 虚拟私有云:为表2所示的所有终端节点服务选择4所选择的虚拟私有云。 子网:根据您的实际业务需要,为表2所示的终端节点服务分别选择子网。 其他参数请根据实际业务需要进行设置。 在终端节点列表,获取4中为APIG、SWR服务创建的VPC终端节点对应的服务地址。 其中,${region}为3获取到的值。 创建内网域名,请参考创建内网域名。 域名:请分别填写以下内网域名。 请将以下内网域名中的${region}替换为3获取到的值。 servicestage.${region}.myhuaweicloud.com swr-api.${region}.myhuaweicloud.com swr.${region}.myhuaweicloud.com VPC:选择4所选择的虚拟私有云。 其他参数请根据您的实际业务需要进行设置。 为7创建的所有内网域名添加记录集,请参考添加A类型记录集。 记录类型:选择“A – 将域名指向IPv4地址”。 记录值:参考下表填写。 请将下表中的${region}替换为3获取到的值。 内网域名 记录值 servicestage.${region}.myhuaweicloud.com 输入6获取到的com.myhuaweicloud.${region}.api终端节点服务对应的服务地址。 swr-api.${region}.myhuaweicloud.com swr.${region}.myhuaweicloud.com 输入6获取到的com.myhuaweicloud.${region}.swr终端节点服务对应的服务地址。 其他参数请根据您的实际业务需要进行设置。
  • 问题描述 VPC终端节点(VPC Endpoint),能够将VPC私密地连接到终端节点服务,使VPC中的云资源无需弹性公网IP就能够访问终端节点服务,提高了访问效率,为您提供更加灵活、安全的组网方式。 在Kubernetes类型环境下创建并部署组件时的组件镜像构建过程中,可以通过已创建的VPC终端节点与OBS、SWR服务通信,并使用APIG通过配置好的内网域名调用ServiceStage的功能接口。 仅“西南-贵阳一”、“华东二”、“华南-广州”、“亚太-新加坡”、“非洲-约翰内斯堡”、“华东-上海一”、“华北-北京四”、“拉美-墨西哥城二”区域的ServiceStage支持通过VPC终端节点访问依赖的服务。
  • FAQ 如何以root账户运行脚本命令? 将要以root账户运行的内容编写成一个脚本root-install.sh。 在真正要执行的install.sh执行如下语句,其中${ROOT_PASSWORD}为root账号的密码,-c后面的双引号中为执行的命令。切换用户后会丢失环境变量,可以在sh前加上所需要的环境变量。 echo "${ROOT_PASSWORD}" | su - root -c "APP_HOME=${APP_HOME} sh root-install.sh" 若执行上述语句发生“su: Permission denied”报错,找到/etc/pam.d/su文件,将“ auth required pam_wheel.so use_uid”这一句注释掉。
  • 系统默认配置 系统默认配置均在${APP_HOME}/servicestage-vmapp/application.conf文件中。文件内容如下所示: export LOG _PATH=/var/log/application/zqb-4-vm-wqd-2-7f6fbc/3c719644-f9f5-46b4-a06a-61fcf163e5b5export APP_HOME=/opt/application/zqb-4-vm-wqd-2-7f6fbc/2023.1207.11314/3c719644-f9f5-46b4-a06a-61fcf163e5b5export TOMCAT_STACK_HOME=/opt/application/zqb-4-vm-wqd-2-7f6fbc/2023.1207.11314/3c719644-f9f5-46b4-a06a-61fcf163e5b5/apache-tomcat-8.5.82export JRE_STACK_HOME=/opt/application/zqb-4-vm-wqd-2-7f6fbc/2023.1207.11314/3c719644-f9f5-46b4-a06a-61fcf163e5b5/jre1.8export APP_VALUE="{{app.value}}"export APP_USER=wwwexport APP_GROUP=www
  • appspec.yml文件说明 如下所示,appspec.yml文件定义了整个部署的流程以及部署过程中使用到的环境变量和健康检查等内容。 spec: # 应用运行自定义用户 deps: - name: "@os/linux/user@1.0" user: www group: www home: /home/www # 直接引入应用lifecycle脚本环境变量 env: - name: APP_ENV value: "{{app.env}}" # 以文件形式引入保存于/opt/application/${appName}/${appVersion}/${instanceId}/servicestage-vmapp/application.conf的应用lifecycle脚本环境变量 value: - name: APP_VALUE value: "{{app.value}}" # 应用健康检查 probes: # 接口健康检查 # health: # exec: # method: GET # request: http://127.0.0.1:8080/healthcheck # timeout: 5 # 脚本命令健康检查 liveness: exec: command: - ps -ef | grep ${APP_HOME}/apache-tomcat-*/bin/bootstrap.jar | grep -v grep # 目前只支持APP_HOME可以取到环境变量 timeout: 300 runas: www # 应用lifecycle脚本 lifecycle: install: - command: scripts/install.sh timeout: 300 check: - command: scripts/check.sh timeout: 300 runas: www start: - command: scripts/start.sh timeout: 300 runas: www post-start: - command: scripts/post-start.sh timeout: 300 runas: www pre-stop: - command: scripts/pre-stop.sh timeout: 300 runas: www stop: - command: scripts/stop.sh timeout: 300 runas: www uninstall: - command: scripts/uninstall.sh timeout: 300
  • tomcat的logging.properties说明 您需要自行准备logging.properties,将其复制到tomcat的目录下,复制代码示例如下: #!/bin/bash. ${APP_HOME}/servicestage-vmapp/application.conf cp ${APP_HOME}/conf/logging.properties ${TOMCAT_STACK_HOME}/conf/logging.properties logging.properties可以参考如下内容,使用时将@{LOG_FILE_PATH_APP}替换为真正的日志目录。 handlers = 1catalina.org.apache.juli.AsyncFileHandler, 2localhost.org.apache.juli.AsyncFileHandler, 3manager.org.apache.juli.AsyncFileHandler, 4host-manager.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler.handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler1catalina.org.apache.juli.AsyncFileHandler.level = FINE1catalina.org.apache.juli.AsyncFileHandler.directory = @{LOG_FILE_PATH_APP}1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.2localhost.org.apache.juli.AsyncFileHandler.level = FINE2localhost.org.apache.juli.AsyncFileHandler.directory = @{LOG_FILE_PATH_APP}2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.3manager.org.apache.juli.AsyncFileHandler.level = FINE3manager.org.apache.juli.AsyncFileHandler.directory = @{LOG_FILE_PATH_APP}3manager.org.apache.juli.AsyncFileHandler.prefix = manager.4host-manager.org.apache.juli.AsyncFileHandler.level = FINE4host-manager.org.apache.juli.AsyncFileHandler.directory = @{LOG_FILE_PATH_APP}4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.java.util.logging.ConsoleHandler.level = FINEjava.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatterorg.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFOorg.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.AsyncFileHandlerorg.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFOorg.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.AsyncFileHandlerorg.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFOorg.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.AsyncFileHandlerorg.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFOorg.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.AsyncFileHandlerorg.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFOorg.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.AsyncFileHandlerorg.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFOorg.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.AsyncFileHandler
  • config说明 system.cfg文件 设置config参数 在使用虚拟机部署方式创建并部署组件时,您可以参考添加配置项设置一些配置项,ServiceStage会将设置的配置项以键值对的形式存储在${APP_HOME}/config/system.cfg文件中。您也可以预置一些配置参数在config里面,格式参考示例如下: # system.cfg文件中存储内容的格式key1=value1key2=value2 引用config参数 引用config参数的方法示例如下: #!/bin/bash . ${APP_HOME}/config/system.cfg . ${APP_HOME}/config/user_config.cfg echo ${key1} server.xml文件 请参考tomcat的server.xml说明。 logging.properties文件 请参考tomcat的logging.properties说明。
  • 原因分析 在ServiceStage中,应用是指一个功能相对完备的业务系统,由一个或多个特性相关的组件组成,以应用维度组织多个组件。 在微服务中,可以将应用理解为完成某项完整业务场景的软件系统。应用一般由多个微服务组成,应用里面的微服务能够相互发现和调用。 在Spring Cloud微服务架构开发的项目中,应用名称通常在项目下各组件的“bootstrap.yaml”配置文件中定义。 在Java Chassis微服务架构开发的项目中,应用名称通常在项目下各组件的“microservice.yaml”配置文件中定义。 配置文件一般都存放于您当前项目各组件目录下的“/src/main/resources/”路径下。 ServiceStage应用下的各组件实例接入微服务引擎后,其微服务实例“所属应用”名称就是各组件下的配置文件中所定义的应用名称。
  • 应用压缩包内目录总体结构说明 Java应用压缩包示例:https://github.com/servicestage-demo/example/tree/master/servicestage-vm-demo/demoJavaExample.zip Tomcat应用压缩包示例:https://github.com/servicestage-demo/example/tree/master/servicestage-vm-demo/demoTomcatExample.zip 以Java应用压缩包demoJavaExample.zip为例,应用压缩包内目录总体结构说明如下: demoJavaExample/│├── scripts/│ │ ├── pre-stop.sh│ │ ├── stop.sh│ │ ├── uninstall.sh│ │ ├── install.sh│ │ ├── start.sh│ │ ├── check.sh│ │ ├── post-start.sh├── packages/│ │ ├── weather-1.0.0.jar├── config/│ │ ├── system.cfg├── appspec.yml 压缩包名前缀必须和解压后的文件目录名一致。例如压缩包名为demoJavaExample.zip,解压后文件目录必须为demoJavaExample。 应用压缩包内各个目录及文件的作用说明如下: scripts:必选目录,存储的是应用各个生命周期执行的脚本文件。
  • 脚本编写说明 Servicestage在执行脚本时的目录结构如下所示: APP_HOME/│├── scripts/│ │ ├── pre-stop.sh│ │ ├── stop.sh│ │ ├── uninstall.sh│ │ ├── install.sh│ │ ├── start.sh│ │ ├── check.sh│ │ ├── post-start.sh│ ├──packages/│ │ ├── my-app.jar/my-app.war├── config/│ │ ├── system.cfg├── servicestage-vmapp/│ │ ├── application.conf├── jre1.8├── apache-tomcat-8.5.82
  • 策略鉴权规则 用户在发起访问请求时,系统根据用户被授予的访问策略中的action进行鉴权判断。鉴权规则如下: 图1 系统鉴权逻辑图 用户发起访问请求。 系统在用户被授予的策略中寻找请求对应的action,优先寻找Deny指令。如果找到一个适用的Deny指令,系统将返回Deny决定。 如果没有找到Deny指令,系统将寻找适用于请求的任何Allow指令。如果找到一个Allow指令,系统将返回Allow决定。 如果找不到Allow指令,最终决定为Deny,鉴权结束。 父主题: 策略
  • 企业联邦用户登录 企业联邦用户是在企业管理系统中创建的用户,账号在IAM控制台创建身份提供商后,企业联邦用户可以登录华为云并根据对应权限使用云服务。详情请参考:身份提供商概述。 如果您已知创建该身份提供商的华为云账号名称、身份提供商名称、企业管理系统的账号和密码,可以通过此方式登录华为云。 在华为云的登录页面,单击登录下方的“企业联邦用户”,在“企业联邦身份登录”页面,输入账号名,选择身份提供商名称。 图8 企业联邦身份登录 原华为云账号名/租户名:创建身份提供商的华为云账号名称。如果不知道账号名,请向管理员获取。 身份提供商名称:管理员创建身份提供商时,设置的名称。如果不知道身份提供商名称,请向管理员获取。 单击“前往登录”,跳转至企业管理系统登录页面。 在企业管理系统登录页面,输入企业管理系统用户名、密码。 单击“登录”,登录华为云。
共100000条
提示

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