华为云用户手册

  • 排查项九:JAVA探针的版本选择latest导致 K8s事件为Created container init-pinpoint 解决方案: 在创建工作负载时,在“高级设置”步骤下的“性能管理配置”项目下,JAVA探针版本请选择最新的版本(例如:1.0.36),不要选择latest版本。 如果工作负载创建时的JAVA探针版本已经选择了latest版本,可以更新工作负载配置,将JAVA探针版本请选择为最新的版本(例如:1.0.36)。
  • 排查项十:用户自身业务BUG 请检查工作负载启动命令是否正确执行,或工作负载本身bug导致容器不断重启。 登录异常工作负载所在的节点。 查看工作负载实例非正常退出的容器ID。 docker ps -a | grep $podName 查看退出容器的错误日志。 docker logs $containerID 注意:这里的containerID为已退出的容器的ID 图3 容器启动命令配置不正确 如上图所示,容器配置的启动命令不正确导致容器启动失败。其他错误请根据日志提示修复工作负载本身的BUG问题。 解决方案: 重新创建工作负载,并配置正确的启动命令。
  • 排查项七:工作负载挂载的密钥值不符合要求 事件详情中出现以下错误: Error: failed to start container "filebeat": Error response from daemon: OCI runtime create failed: container_linux.go:330: starting container process caused "process_linux.go:381: container init caused \"setenv: invalid argument\"": unknown 出现以上问题的根因是由于工作负载中挂载了Secret,但Secret对应的值没有进行base64加密。 解决方案: 通过控制台创建Secret,Secret对应的值会自动进行base64加密。 如果通过YAML进行创建,需要手动对密钥值进行base64加密: # echo -n "待编码内容" | base64
  • 问题定位 工作负载详情中,若事件中提示“启动容器失败”,请按照如下方式来初步排查原因: 登录异常工作负载所在的节点。 查看工作负载实例非正常退出的容器ID。 docker ps -a | grep $podName 查看退出容器的错误日志。 docker logs $containerID 根据日志提示修复工作负载本身的问题。 查看操作系统的错误日志。 cat /var/log/messages | grep $containerID | grep oom 根据日志判断是否触发了系统OOM。
  • 排查思路 根据具体事件信息确定具体问题原因,如表1所示。 表1 容器启动失败 日志或事件信息 问题原因与解决方案 日志中存在exit(0) 容器中无进程。 请调试容器是否能正常运行。 排查项一:(退出码:0)容器中无持续运行的进程 事件信息:Liveness probe failed: Get http… 日志中存在exit(137) 健康检查执行失败。 排查项二:(退出码:137)健康检查执行失败 事件信息: Thin Pool has 15991 free data blocks which is less than minimum required 16383 free data blocks. Create more free space in thin pool or use dm.min_free_space option to change behavior 磁盘空间不足,需要清理磁盘空间。 排查项三:容器所在磁盘空间不足 日志中存在OOM字眼 内存不足。 排查项四:达到容器资源上限 排查项五:工作负载的容器规格设置较小导致 Address already in use Pod中容器端口冲突。 排查项六:同一pod中container端口冲突导致 Error: failed to start container "filebeat": Error response from daemon: OCI runtime create failed: container_linux.go:330: starting container process caused "process_linux.go:381: container init caused \"setenv: invalid argument\"": unknown 负载中挂载了Secret,Secret对应的值没有进行base64加密。 排查项七:工作负载挂载的密钥值不符合要求 除上述可能原因外,还可能存在如下原因,请根据顺序排查。 排查项八:容器启动命令配置有误导致 排查项九:JAVA探针的版本选择latest导致 排查项十:用户自身业务BUG 在ARM架构的节点上创建工作负载时未使用正确的镜像版本,使用正确的镜像版本即可解决该问题。 图1 重新启动容器失败排查思路
  • 自研超级调度器Superior Scheduler原理 Superior Scheduler是一个专门为Hadoop YARN分布式资源管理系统设计的调度引擎,是针对企业客户融合资源池,多租户的业务诉求而设计的高性能企业级调度器。 Superior Scheduler可实现开源调度器、Fair Scheduler以及Capacity Scheduler的所有功能。另外,相较于开源调度器,Superior Scheduler在企业级多租户调度策略、租户内多用户资源隔离和共享、调度性能、系统资源利用率和支持大集群扩展性方面都做了针对性的增强。设计的目标是让Superior Scheduler直接替代开源调度器。 类似于开源Fair Scheduler和Capacity Scheduler,Superior Scheduler通过YARN调度器插件接口与YARN Resource Manager组件进行交互,以提供资源调度功能。图1为其整体系统图。 图1 Superior Scheduler内部架构 图1中,Superior Scheduler的主要模块如下: Superior Scheduler Engine:具有丰富调度策略的高性能调度器引擎。 Superior YARN Scheduler Plugin:YARN Resource Manager和Superior Scheduler Engine之间的桥梁,负责同YARN Resource Manager交互。 在调度原理上,开源的调度器都是基于计算节点心跳驱动的资源反向匹配作业的调度机制。具体来讲,每个计算节点定期发送心跳到YARN的Resource Manager通知该节点状态并同时启动调度器为这个节点分配作业。这种调度机制把调度的周期同心跳结合在一起,当集群规模增大时,会遇到系统扩展性以及调度性能瓶颈。另外,因为采用了资源反向匹配作业的调度机制,开源调度器在调度精度上也有局限性,例如数据亲和性偏于随机,另外系统也无法支持基于负载的调度策略等。主要原因是调度器在选择作业时,缺乏全局的资源视图,很难做到好的选择。 Superior Scheduler内部采用了不同的调度机制。Superior Scheduler的调度器引入了专门的调度线程,把调度同心跳剥离开,避免了系统心跳风暴问题。另外,Superior Scheduler调度流程采用了从作业到资源的正向匹配方法,这样每个调度的作业都有全局的资源视图,可以很大的提高调度的精度。相比开源调度器,Superior Scheduler在系统吞吐量、利用率、数据亲和性等方面都有很大提升。 图2 Superior Scheduler性能对比 Superior Scheduler除了提高系统吞吐量和利用率,还提供了以下主要调度功能: 多资源池 多资源池有助于在逻辑上划分集群资源并在多个租户/队列之间共享它们。资源池的划分可以基于异构的资源或完全按照应用资源隔离的诉求来划分。对于一个资源池,不同队列可配置进一步的策略。 每个资源池多租户调度(reserve、min、share、max) Superior Scheduler提供了灵活的层级多租户调度策略。并允许针对不同的资源池可以访问的租户/队列,配置不同策略,如下所示。 表1 策略描述 策略名称 描述 reserve 预留租户资源。即使租户没有作业,其他租户也不能使用该预留的资源。其值可以是百分比或绝对值。如果两者都配置,调度系统动态计算转换为资源绝对值,并取两者的最大值。缺省的reserve值为0。相对于定义一个专用资源池并指定具体机器的方式,reserve的策略可以认为提供了一种灵活的浮动预留功能,由于并不限定具体的机器,可以提高计算的数据亲和性,也不会受具体机器故障的影响。 min 具有抢占支持的最低保证资源。其他租户可以使用这部分资源,但是本租户享有优先使用权。其值可以是百分比或绝对值。如果两者都配置,调度系统动态计算转换为资源绝对值,并取两者的最大值。缺省值是0。 share 不支持抢占的共享资源。本租户要使用这部分资源时,需要等待其他租户完成作业并释放资源。其值是百分比或绝对值。 max 允许的最大资源数量。租户无法获得比允许的最大资源多的资源。其值是百分比或绝对值。如果两者都配置,调度系统动态计算转换为资源绝对值,并取两者最大值。缺省值不受限制。 租户资源分配策略示意图,如图3所示。 图3 策略示意图 其中“total”表示总资源,不是调度策略。 同开源的调度器相比,Superior Scheduler同时提供了租户级百分比和绝对值的混配策略,可以很好的适应各种灵活的企业级租户资源调度诉求。例如,用户可以在一级租户提供最大绝对值的资源保障,这样租户的资源不会因为集群的规模改变而受影响。但在下层的子租户之间,可以提供百分比的分配策略,这样可以尽可能提升一级租户内的资源利用率。 异构和多维资源调度 Superior Scheduler除支持CPU和内存资源的调度外,还支持扩展以下功能: 节点标签可用于识别不同节点的多维属性,可以根据这些标签进行调度。 资源池可用于对同一类别的资源进行分组并分配给特定的租户/队列。 租户内多用户公平调度 在叶子租户里,多个用户可以使用相同的队列来提交作业。相比开源调度器,Superior Scheduler可以支持在同一租户内灵活配置不同用户的资源共享策略。例如可以为VIP用户配置更多的资源访问权重。 数据位置感知调度 Superior Scheduler采用“从作业到节点的调度策略”,即尝试在可用节点之间调度给定的作业,使得所选节点适合于给定作业。通过这样做,调度器将具有集群和数据的整体视图。如果有机会使任务更接近数据,则保证了本地化。而开源调度器采用“从节点到作业的调度策略”,在给定节点中尝试匹配适当的作业。 Container调度时动态资源预留 在异构和多样化的计算环境中,一些container需要更多的资源或多种资源,例如Spark作业可能需要更大的内存。当这些container与其他需要较小资源的container竞争时,可能没有机会在合理的时间内获得所需的资源而处于饥饿状态。由于开源的调度器是基于资源反向匹配作业的调度方式,会为这些作业盲目的进行资源预留以防进入饥饿状态。这就导致了系统资源的整体浪费。Superior Scheduler与开源特性的不同之处在于: 基于需求的匹配:由于Superior Scheduler采用“从作业到节点的调度”,能够选择合适的节点来预留资源提升这些特殊container的启动时间,并避免浪费。 租户重新平衡:启用预留逻辑时,开源调度器并不遵循配置的共享策略。Superior Scheduler采取不同的方法。在每个调度周期中,Superior Scheduler将遍历租户,并尝试基于多租户策略重新达到平衡,且尝试满足所有策略(reserve,min,share等),以便可以释放预留的资源,将可用资源流向不同租户下的其他本应得到资源的container。 动态队列状态控制(Open/Closed/Active/Inactive) 支持多个队列状态,有助于MRS集群管理员操作和维护多个租户。 Open状态(Open/Closed):如果是Open(默认)状态,将接受提交到此队列的应用程序,如果是Closed状态,则不接受任何应用程序。 Active状态(Active/Inactive):如果处于Active(默认)状态,租户内的应用程序是可以被调度和分配资源。如果处于Inactive状态则不会进行调度。 应用等待原因 如果应用程序尚未启动,则提供作业等待原因信息。 Superior Scheduler和YARN开源调度器作了对比分析,如表2所示: 表2 对比分析 领域 YARN开源调度器 Superior Scheduler 多租户调度 在同构集群上,只能选择容量调度器(Capacity Scheduler)或公平调度器(Fair Scheduler)两者之一,且集群当前不支持公平调度器(Fair Scheduler)。容量调度器只支持百分比方式配置,而公平调度器只支持绝对值方式。 支持异构集群和多资源池。 支持预留,以保证直接访问资源。 数据位置感知调度 从节点到作业的调度策略导致降低数据本地化命中率,潜在影响应用的执行性能。 从作业到节点的调度策略。可具有更精确的数据位置感知,数据本地化调度的作业命中率比较高。 基于机器负载的均衡调度 不支持 Superior Scheduler在调度时考虑机器的负载和资源分配情况,做到均衡调度。 租户内多用户公平调度 不支持 租户内用户的公平调度,支持关键字default、others。 作业等待原因 不支持 作业等待原因信息可显示为什么作业需等待。 综上所述,Superior Scheduler是一个高性能调度器,拥有丰富的调度策略,在功能、性能、资源利用率和扩展性方面都优于Capacity Scheduler。
  • YARN的权限控制 Hadoop YARN的权限机制是通过访问控制列表(ACL)实现的。按照不同用户授予不同权限控制,主要介绍下面两个部分: 集群运维管理员控制列表(Admin Acl) 该功能主要用于指定YARN集群的运维管理员,其中,MRS集群管理员列表由参数“yarn.admin.acl”指定。集群运维管理员可以访问ResourceManager WebUI,还能操作NodeManager节点、队列、NodeLabel等,但不能提交任务。 队列访问控制列表(Queue Acl) 为了方便管理集群中的用户,YARN将用户/用户组分成若干队列,并指定每个用户/用户组所属的队列。每个队列包含两种权限:提交应用程序权限和管理应用程序权限(比如终止任意应用程序)。 开源功能: 虽然目前YARN服务的用户层面上支持如下三种角色: 集群运维管理员 队列管理员 普通用户 但是当前开源YARN提供的WebUI/RestAPI/JavaAPI等接口上不会根据用户角色进行权限控制,任何用户都有权限访问应用和集群的信息,无法满足多租户场景下的隔离要求。 增强: 安全模式下,对开源YARN提供的WebUI/RestAPI/JavaAPI等接口上进行了权限管理上的增强,支持根据不同的用户角色,进行相应的权限控制。 各个角色对应的权限如下: 集群运维管理员:拥有在YARN集群上执行管理操作(如访问ResourceManager WebUI、刷新队列、设置NodeLabel、主备倒换等)的权限。 队列管理员:拥有在YARN集群上所管理队列的修改和查看权限。 普通用户:拥有在YARN集群上对自己提交应用的修改和查看权限。
  • 支持CPU硬隔离 YARN无法严格控制每个container使用的CPU资源。在使用CPU子系统时,container可能会超额占用资源。此时使用CPUset控制资源分配。 为了解决这个问题,CPU将会被严格按照虚拟核和物理核的比例分配至各个container。如果container需要一整个物理核,则分配给它一整个物理核。若container只需要部分物理核,则可能发生几个container共享同一个物理核的情况。下图为CPU配额示例,假定虚拟核和物理核的比例为2:1。 图4 CPU配额
  • 任务优先级调度 在原生的YARN资源调度机制中,如果先提交的MapReduce Job长时间地占据整个Hadoop集群的资源,会使得后提交的Job一直处于等待状态,直到Running中的Job执行完并释放资源。 MRS集群提供了任务优先级调度机制。此机制允许用户定义不同优先级的Job,后启动的高优先级Job能够获取运行中的低优先级Job释放的资源;低优先级Job未启动的计算容器被挂起,直到高优先级Job完成并释放资源后,才被继续启动。 该特性使得业务能够更加灵活地控制自己的计算任务,从而达到更佳的集群资源利用率。 容器可重用与任务优先级调度有冲突,若启用容器重用,资源会被持续占用,优先级调度将不起作用。
  • 接口约束 该接口支持如下数据库实例: GeminiDB Cassandra GeminiDB Mongo GeminiDB Influx GeminiDB Redis GeminiDB Redis实例支持的最大最小磁盘容量和节点数、规格相关,如果目标结果无法满足实例运行所需的磁盘大小,将无法扩容节点。 该接口既支持包周期实例,也支持按需实例。 GeminiDB Influx单节点实例不支持节点扩容。 GeminiDB Mongo仅支持扩容只读节点。 该接口支持GeminiDB Redis搭建双活关系的主实例和备实例。
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。 表3 请求Body参数 参数 是否必选 参数类型 描述 num 是 Integer 新增加的节点数量。 subnet_id 否 String 扩容的节点所使用的子网的ID。 该参数只支持GeminiDB Cassandra数据库实例扩容节点时传入。 所传入的子网ID必须属于实例当前所在的VPC。 不传该参数时,系统会为当前扩容的节点选择一个IP容量较为充足的子网。 is_auto_pay 否 String 创建包周期实例时可指定,表示是否自动从账户中支付,此字段不影响自动续订的支付方式。 true,表示自动从账户中支付。 false,表示手动从账户中支付,默认为该方式。
  • 请求示例 GET https://{Endpoint}/v3/0549b4a43100d4f32f51c01c2fe4acdb/instances/logs/lts-configs?limit=10&offset=0&instance_id=362b42f769ff45d884e1866f8ee00bb4in12&instance_name=c316&enterprise_project_id=0
  • 响应示例 状态码: 200 Success { "total_count" : 1, "instance_lts_configs" : [ { "instance" : { "id" : "362b42f769ff45d884e1866f8ee00bb4in12", "name" : "nosql-c316", "mode" : "RedisCluster", "datastore" : { "version" : "5.0", "type" : "redis" }, "status" : "normal", "actions" : [ "GROWING" ], "enterprise_project_id" : "0", "supported_log_types" : [ "slow_log", "audit_log" ] }, "lts_configs" : [ { "log_type" : "slow_log", "lts_group_id" : "65442dd4-b8de-4e9f-8a80-b60aa0698354", "lts_stream_id" : "5992dd29-fd11-4228-a852-5f6e578789c5", "enabled" : true } ] } ] }
  • URI GET https://{Endpoint}/v3/{project_id}/instances/logs/lts-configs 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID。获取方法请参见获取项目ID。 表2 Query参数 参数 是否必选 参数类型 描述 offset 否 Integer 索引位置偏移量,表示从第一条数据偏移offset条数据后开始查询。取值必须为数字,不能为负数。默认取0值,表示从第一条数据开始查询。 limit 否 Integer 返回的最大记录数量。取值范围:1~100,必须为整数。不传该参数时,默认查询100条实例信息。 instance_id 否 String 根据实例ID精确搜索。 instance_name 否 String 根据实例名称模糊搜索。 enterprise_project_id 否 String 根据企业项目ID精确搜索。
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 total_count Integer 实例总记录数。 instance_lts_configs Array of objects 实例的LTS日志配置信息列表。详情请参考表5。 表5 InstanceLogConfig 参数 参数类型 描述 instance object 实例信息。详情请参考表6。 lts_configs Array of objects LTS日志配置明细。若未设置LTS日志流,不返回该字段。详情请参考表8。 表6 LogInstanceInfo 参数 参数类型 描述 id String 实例ID。 name String 实例名称。 status String 实例状态。取值: normal,表示实例正常。 abnormal,表示实例异常。 creating,表示实例创建中。 frozen,表示实例被冻结。 data_disk_full,表示实例磁盘已满。 createfail,表示实例创建失败。 enlargefail,表示实例扩容节点失败。 mode String 实例类型。 取值为“Cluster”,表示GeminiDB Redis集群实例类型。 datastore object 数据库信息。详情请参考表7。 actions Array of strings 实例正在执行的动作。 enterprise_project_id String 企业项目ID。 supported_log_types Array of strings 支持的日志类型。取值: slow_log,表示慢日志。 audit_log,表示审计日志。 表7 InstancesDatastoreResult 参数 参数类型 描述 type String 数据库接口。 version String 数据库版本号。 表8 InstanceLogConfigDetail 参数 参数类型 描述 log_type String 日志类型。取值: slow_log,表示慢日志。 audit_log,表示审计日志。 lts_group_id String 关联的LTS日志组ID,若enabled为false,表示最近一次关联的LTS日志组ID。 lts_stream_id String 关联的LTS日志流ID,若enabled为false,表示最近一次关联的LTS日志流ID。 enabled Boolean 关联的LTS日志流是否启用,true代表已启用,false代表未启用。
  • 请求示例 URI样例 PUT https://gaussdb-nosql.cn-north-4.myhuaweicloud.com/v3/375d8d8fad1f43039e23d3b6c0f60a19/instances/9136fd2a9fcd405ea4674276ce36dae8in02/security-group 请求体样例 { "security_group_id" : "73bed21a-708b-4985-b697-a96d0e0d2b39" }
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。 X-Language 否 String 语言。 表3 请求Body参数 参数 是否必选 参数类型 描述 instance_ids 是 Array of strings 需要建立关联的实例ID列表。 log_type 是 String 日志类型。取值: slow_log,表示慢日志。 audit_log,表示审计日志。 lts_group_id 是 String LTS日志组ID。可通过云日志服务中“查询账号下所有日志组”API接口获取。 lts_stream_id 是 String LTS日志流ID。可通过云日志服务中“查询指定日志组下的所有日志流”API接口获取。
  • 请求示例 URI样例 POST https://{Endpoint}/v3/0549b4a43100d4f32f51c01c2fe4acdb/instances/logs/lts-configs 慢日志关联LTS日志流 { "instance_ids" : [ "fe45815ce8a6413ab7fa290da1db1614in12", "362b42f769ff45d884e1866f8ee00bb4in12" ], "log_type" : "slow_log", "lts_group_id" : "65442dd4-b8de-4e9f-8a80-b60aa0698354", "lts_stream_id" : "5992dd29-fd11-4228-a852-5f6e578789c5" } 审计日志关联LTS日志流 { "instance_ids" : [ "fe45815ce8a6413ab7fa290da1db1614in12", "362b42f769ff45d884e1866f8ee00bb4in12" ], "log_type" : "audit_log", "lts_group_id" : "65442dd4-b8de-4e9f-8a80-b60aa0698354", "lts_stream_id" : "5992dd29-fd11-4228-a852-5f6e578789c5" }
  • 请求示例 URI样例 DELETE https://{Endpoint}/v3/0549b4a43100d4f32f51c01c2fe4acdb/instances/logs/lts-configs 解除关联慢日志设置 { "instance_ids" : [ "fe45815ce8a6413ab7fa290da1db1614in12", "362b42f769ff45d884e1866f8ee00bb4in12" ], "log_type" : "slow_log" } 解除关联审计日志设置 { "instance_ids" : [ "fe45815ce8a6413ab7fa290da1db1614in12", "362b42f769ff45d884e1866f8ee00bb4in12" ], "log_type" : "audit_log" }
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。 X-Language 否 String 语言。 表3 请求Body参数 参数 是否必选 参数类型 描述 instance_ids 是 Array of strings 需要解除关联的实例ID列表。 log_type 是 String 日志类型。取值: slow_log,表示慢日志。 audit_log,表示审计日志。
  • 请求方法 HTTP请求方法(也称为操作或动词),它告诉服务你正在请求什么类型的操作。 表2 HTTP方法 方法 说明 GET 请求服务器返回指定资源。 PUT 请求服务器更新指定资源。 POST 请求服务器新增资源或执行特殊操作。 DELETE 请求服务器删除指定资源,如删除对象等。 HEAD 请求服务器资源头部。 PATCH 请求服务器更新资源的部分内容。 当资源不存在的时候,PATCH可能会去创建一个新的资源。 在获取用户Token的URI部分,您可以看到其请求方法为“POST”,则其请求为: POST https://iam.cn-south-1.myhuaweicloud.com/v3/auth/tokens
  • 请求消息体 请求消息体通常以结构化格式发出,与请求消息头中Content-type对应,传递除请求消息头之外的内容。若请求消息体中参数支持中文,则中文字符必须为UTF-8编码。 每个接口的请求消息体内容不同,也并不是每个接口都需要有请求消息体(或者说消息体为空),GET、DELETE操作类型的接口就不需要消息体,消息体具体内容需要根据具体接口而定。 对于获取用户Token接口,您可以从接口的请求部分看到所需的请求参数及参数说明。将消息体加入后的请求如下所示,加粗的斜体字段需要根据实际值填写,其中username为用户名,domainname为用户所属的账号名称,user_password为用户登录密码,cn-south-1为project的名称,如cn-north-1,您可以从地区和终端节点中获取。 scope参数定义了Token的作用域,下面示例中获取的Token仅能访问project下的资源。您还可以设置Token额作用域为某个账号下所有资源或账号的某个project下的资源,详细定义请参见获取用户Token。 POST https://iam.cn-south-1.myhuaweicloud.com/v3/auth/tokens Content-Type: application/json { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", "password": "user_password", "domain": { "name": "domainname" } } } }, "scope": { "project": { "name": "cn-south-1" } } } } 到这里为止这个请求需要的内容就具备齐全了,您可以使用curl、Postman或直接编写代码等方式发送请求调用API。对于获取用户Token接口,返回的响应消息头中“x-subject-token”就是需要获取的用户Token。有了Token之后,您就可以使用Token认证调用其他API。
  • 请求消息头 附加请求头字段,如指定的URI和HTTP方法所要求的字段。例如定义消息体类型的请求头“Content-Type”,请求鉴权信息等。 如下公共消息头需要添加到请求中。 Content-Type:消息体的类型(格式),必选,默认取值为“application/json”。 X-Auth-Token:用户Token,可选,当使用Token方式认证时,必须填充该字段。X-Auth-Token是调用获取IAM用户Token(使用密码)接口返回的响应值,该接口功能为获取Token,因此调用该接口时,不用填写本字段。 公有云API同时支持使用AK/SK认证,AK/SK认证是使用SDK对请求进行签名,签名过程会自动往请求中添加Authorization(签名认证信息)和X-Sdk-Date(请求发送的时间)请求头。AK/SK认证的详细说明请参见:AK/SK认证。 对于获取用户Token接口,由于不需要认证,所以只添加“Content-Type”即可,添加消息头后的请求如下所示。 POST https://iam.cn-south-1.myhuaweicloud.com/v3/auth/tokens Content-Type: application/json
  • 请求URI 请求URI由如下部分组成。 {URI-scheme}://{Endpoint}/{resource-path}?{query-string} 表1 请求URI 参数 说明 URI-scheme 传输请求的协议,当前所有API均采用HTTPS协议。 Endpoint 承载REST服务端点的服务器域名或IP,不同服务在不同区域时,对应Endpoint不同,可以从地区和终端节点中获取。 例如IAM服务在“华南-广州”区域的Endpoint为“iam.cn-south-1.myhuaweicloud.com”。 resource-path 资源路径,即API访问路径。从具体API的URI模块获取,例如“获取用户Token”API的resource-path为“/v3/auth/tokens”。 query-string 查询参数,是可选部分,并不是每个API都有查询参数。查询参数前面需要带一个“?”,形式为“参数名=参数取值”,例如“limit=10”,表示查询不超过10条数据。 例如您需要获取IAM在“华南-广州”区域的Token,则需使用“华南-广州”区域的Endpoint(iam.cn-south-1.myhuaweicloud.com),并在获取用户Token的URI部分找到resource-path(/v3/auth/tokens),拼接起来如下所示。 https://iam.cn-south-1.myhuaweicloud.com/v3/auth/tokens 图1 URI示意图 为查看方便,在每个具体API的URI部分,只给出resource-path部分,并将请求方法写在一起。这是因为URI-scheme都是HTTPS,而Endpoint在同一个区域也相同,所以简洁起见将这两部分省略。
  • component间的编排概述 IaC Spec类型的IaC代码可以在global目录下的meta.yaml中描述资源的变更流程以及变更策略,component间的编排在spec包中的meta.yaml文件中描述,涉及applyPipeline/pipelines两个字段。pipelines中支持定义多个流程,applyPipeline描述本次变更要使用的流程。 type: WiseCloud::Environment # 描述当前环境类型,当前为固定值WiseCloud::Environment applyPipeline: environment-deploy # 定义默认选用的组件编排流水线名称,当前默认使用environment-deploy pipelines: ... 表1 meta.yaml字段说明 字段 说明 type 描述当前环境类型,当前为固定值WiseCloud::Environment。 applyPipeline 定义默认选用的组件编排流水线名称,当前默认使用environment-deploy。 pipelines pipelines中支持定义多个流程。 父主题: component间的编排
  • component内部编排 组件内部编排在spec包各组件的resources.yaml文件中描述,通过为资源指定dependsOn属性表达依赖关系。 component内部允许同一个资源出现多次,这表示同一个资源的不同变更阶段,这一场景下该资源的所有节点必须声明alias字段并且alias取值必须在component内全局唯一,同一个资源的所有alias之间必须显式地在dependsOn字段中声明串行依赖。 dependsOn是列表类型,每个元素使用type、name、alias等字段描述对其他资源的引用,其中name字段是必填字段,type、alias是可选字段;component解析某资源的dependsOn时,会根据元素属性从相同component中搜索满足条件的资源作为当前资源的依赖。 部分资源之间已经有隐式引用关系,系统自动添加dependsOn,不需要再显式声明。每种类型的哪些属性隐含引用关系,可以参考其文档,具体请参见资源介绍。 资源不能有循环依赖(A dependsOn B,B dependsOn C,C dependsOn A),不能依赖自己。 以下示例定义了两个资源,一个名为chaosmonkey-elb的ELB,一个名为chaosmonkey-slb的SLB;chaosmonkey-slb依赖于chaosmonkey-elb。在变更时,先变更chaosmonkey-elb,变更成功后再变更chaosmonkey-slb,如果chaosmonkey-elb变更失败,则不会变更chaosmonkey-slb。 - name: chaosmonkey-elb # 资源名称 type: WiseCloud::LoadBalancer::ELBV2 # 资源类型 properties: listeners: - name: listener protocol: HTTP protocolPort: 80 poolName: pool_a pools: - name: pool_a protocol: HTTP - name: chaosmonkey-slb # 资源名称 type: WiseCloud::LoadBalancer::SLB # 资源类型 dependsOn: # 定义对其他资源的依赖 - name: chaosmonkey-elb # 依赖的资源名称 properties: elbName: chaosmonkey-elb elbPoolNames: ["pool_a"] deployVersion: 1.4.12 slbConfigs: targets: - clusterName: mgr routes: - location: / target: mgr 父主题: 变更流程编排开发
  • 使用configparser工具 在Dockerfile文件中,为configparser文件添加可执行权限。 定义业务配置项模板文件和meta.txt,样例如图1 业务配置项模板所示。 图1 业务配置项模板 在业务配置项模板文件(.tmpl文件)中,使用 {{参数名称}} 格式定义需要动态替换的参数,样例如图2所示。 图2 模板参数定义 在meta.txt文件中定义需要替换的业务配置项模板文件。如图3所示。 图3 替换业务配置项模板文件 application.properties.tmpl为配置文件模板,application.properties为目标配置文件。 配置中指定的文件路径是相对于meta.txt文件的路径。 启动业务进程之前,在启动脚本中调用configparser工具,进行参数替换。使用方式如下: /opt/huawei/app/bin/configparser -meta /opt/huawei/app/configtemplate/meta.txt -log configparser.log -mode front -tempPath /opt/huawei/app/configtemplate/config-temp 使用绝对路径的方式调用configparser工具,/opt/huawei/app/bin/为容器启动时的绝对路径。 -meta:指定meta.txt文件,/opt/huawei/app/configtemplate/为容器启动时meta.txt文件的绝对路径。 -log:存放configparser工具的运行日志。 -mode front:固定使用此参数值。 -tempPath:工具运行过程中生成临时文件的路径。 /opt/huawei/app/configtemplate/为容器启动时的绝对路径,必须保证此目录路径存在。config-temp文件夹可以不存在,会自动创建,运行结束后会清理此路径。 如果不配置,默认使用/opt/huawei/app/nuwa/config-temp。
  • 录入微服务信息 在“应用基础信息管理”页面的左侧导航栏选择“微服务管理”。 在“微服务管理”页面右上角单击“创建微服务”。 在“创建微服务”页面的“所属服务”下拉列表中选择微服务所属服务,设置微服务中文名(本案例为DemoOrgidLogin、DemoServiceAService、DemoServiceBService)、微服务英文名(本案例的英文名同中文名),其中微服务所属服务和微服务英文名设置后不可修改。 微服务DemoOrgidLogin是集成OrgID登录功能的微服务;DemoServiceAService、DemoServiceBService是业务微服务,其中DemoServiceAService用于管理用户、DemoServiceBService用于管理订单。 微服务中文名支持汉字、数字、字母,3~64个字符。 微服务英文名必须以字母开头,支持大小写字母、数字,3~64个字符,创建后不可修改。 微服务英文名是微服务在系统内的唯一标识,录入后不可修改,系统在部分场景下会使用微服务英文名代替微服务中文名进行展示。 单击“创建”。在微服务列表中可查看到此新建的微服务“状态”为“草稿”。 在新创建的微服务所在行“操作”列单击“发布”(发布后微服务无法删除,请谨慎操作),在弹框中单击“确认”。 在微服务列表中可查看到此新建微服务“状态”为“已发布”,录入微服务信息完成。 发布微服务信息后,如果在AppStage相关中心未同步到该微服务信息,在新创建的微服务所在行“操作”列可单击“同步”重新同步微服务信息。
  • 创建服务信息 在“应用基础信息管理”页面的左侧导航栏选择“服务管理”。 在“服务管理”页面右上角单击“创建服务”。 在“创建服务”页面的“所属产品”下拉列表中选择服务所属产品,设置服务中文名和服务英文名(本案例均为“jamesService22A”),其中服务所属产品和服务英文名设置后不可修改。 服务中文名支持汉字、数字、字母,3~64个字符。 服务英文名必须以字母开头,支持大小写字母、数字,3~64个字符,创建后不可修改。 服务英文名是服务在系统内的唯一标识,录入后不可修改,系统在部分场景下会使用服务英文名代替服务中文名进行展示。 单击“创建”。在服务列表中可查看到此新建的服务“状态”为“草稿”。 在新创建的服务所在行“操作”列单击“发布”(发布后服务无法删除,请谨慎操作),在弹框中单击“确认”。 在服务列表中可查看到此新建服务“状态”为“已发布”,录入服务信息完成。 发布服务信息后,如果在AppStage相关中心未同步到该服务信息,在新创建的服务所在行“操作”列可单击“同步”重新同步服务信息。
  • 如何使用蒲公英表单 如何打开蒲公英表单 打开“业务”版块,搜索“蒲公英表单”,为了更快捷访问,你可以将它添加在“我的应用”中。 如何创建表单 进入主页面,点击“创建空白表单”。 如何在线编辑表单 1. 在“在线编辑表单”窗口,从左侧的“题目类型”中选择所需题目,拖拽至页面中间的编辑框。 2. 在右侧编辑框内填写题目和内容。 3. 左侧“设置”中设置填写范围。 所有人:未限定填写人范围,公司内外所有人均可填写; 企业内:仅限企业内部人员填写,企业内支持通过“部门选择/表单批量导入”两种方式,设定填写人员。 4. 设定查看人员后,仅被选择人员有权限查看统计数据。 5. 右上角点击“预览”,查看手机预览和电脑预览效果,确认后点击“提交” 6. 查看表单发布。 在“我的表单”内查看所有表单,包含自己发布的,他人共享给我的和草稿箱。 如何查看表单数据 点击“我的表单 → 需要查看的表单 →收集中”可查看表单的报表数据。 移动端在“管理统计”中查看表单的收集情况和报表 父主题: 蒲公英表单
共100000条