华为云用户手册

  • Doris数据查询建议 一次insert into select数据超过1亿条后,建议拆分为多个insert into select语句执行,分成多个批次来执行。 不要使用OR作为JOIN条件。 不建议频繁的数据delete修改,将要删除的数据攒批,偶尔进行批量删除,且需要带上条件,提升系统稳定性和删除效率。 大量数据排序(5亿以上)后返回部分数据,建议先减少数据范围再执行排序,否则大量排序会影响性能。例如: 将from table order by datatime desc limit 10优化为from table where datatime='2023-10-20' order by datatime desc limit 10。 查询任务性能调优参数parallel_fragment_exec_instance_num使用注意事项: 此参数是session级别设置,表示可并发执行的fragment数量,对CPU消耗较大,因此一般情况下不需要设置此参数。如果需要设置此参数来加速查询性能,必须遵循以下规则: 切勿设置该参数为全局生效,禁止使用set global方式进行设置。 设置参数值建议为偶数2或4(最大值不要超过单节点CPU核数的一半)。 设置此参数值时需要观察CPU使用率,CPU使用率小于50%时方可考虑设置。 如果查询SQL是insert into select大数据量的方式,不建议设置此参数。
  • Doris数据导入建议 禁止高频执行update、delete或truncate操作,推荐几分钟执行一次,使用delete必须设置分区或主键列条件。 禁止使用INSERT INTO tbl1 VALUES (“1”), (“a”);方式导入数据,少量少次写可以,多量多频次时需使用Doris提供的StreamLoad、BrokerLoad、SparkLoad或者Flink Connector方式。 在Flink实时写入数据到Doris的场景下,CheckPoint设置的时间需要考虑每批次数据量,如果每批次数据太小会造成大量小文件,推荐值为60s。 建议不使用insert values作为数据写入的主要方式,批量数据导入推荐使用StreamLoad、BrokerLoad或SparkLoad。 使用INSERT INTO WITH LABEL XXX SELECT方式进行数据导入,如果有下游依赖或查询,需要先查看导入的数据是否为可见状态。 具体查看方法:通过show load where label='xxx' SQL命令查询当前INSERT任务状态(status)是否为“VISIBLE”,如果为“VISIBLE”导入的数据才可见。 Streamload数据导入适合10 GB以内的数据量、Brokerload适合百GB以内数据,数据过大时可考虑使用SparkLoad。 禁止使用Doris的Routine Load进行导入数据操作,推荐使用Flink查询Kafka数据再写入Doris,更容易控制导入数据单批次数据量,避免大量小文件产生。如果确实已经使用了Routine Load进行导数,在没整改前请配置FE“max_tolerable_backend_down_num”参数值为“1”,以提升导入数据可靠性。 建议低频攒批导入数据,平均单表导入批次间隔需大于30s,推荐间隔60s,一次导入1000~100000行数据。
  • 避免写入单条记录超大的数据 单条记录超大的数据在影响处理效率的同时还可能写入失败,此时需要在初始化Kafka生产者实例时根据情况调整“max.request.size ”值,在初始化消费者实例时调整“max.partition.fetch.bytes”值。 例如,参考本例,可以将max.request.size 、max.partition.fetch.bytes配置项设置为“5252880”: // 协议类型:当前支持配置为SASL_PLAINTEXT或者PLAINTEXT props.put(securityProtocol, kafkaProc.getValues(securityProtocol, "SASL_PLAINTEXT")); // 服务名 props.put(saslKerberosServiceName, "kafka"); props.put("max.request.size", "5252880"); // 安全协议类型 props.put(securityProtocol, kafkaProc.getValues(securityProtocol, "SASL_PLAINTEXT")); // 服务名 props.put(saslKerberosServiceName, "kafka"); props.put("max.partition.fetch.bytes","5252880");
  • 合理设置分区键,控制分区数在一千以内,分区字段使用整型 建议使用toYYYYMMDD(表字段pt_d)作为分区键,表字段pt_d是date类型。 如果业务场景需要做小时分区,使用toYYYYMMDD(表字段pt_d)、toYYYYMMDD(表字段pt_h)做联合分区键,其中toYYYYMMDD(表字段pt_h)是整型小时数。 如果保存多年数据,建议考虑使用月做分区,例如toYYYYMM(表字段pt_d)。 综合考虑数据分区粒度、每个批次提交的数据量、数据的保存周期等因素,合理控制part数量。
  • 设置合理的part大小 min_bytes_to_rebalance_partition_over_jbod参数表示参与在JBOD卷中磁盘之间自动平衡分发part的最小size,该值不能设置得太小或者太大。 若该值设置得太小,小于max_bytes_to_merge_at_max_space_in_pool/1024,那么clickhouse server进程将会启动失败,另外还会引发不必要的part在磁盘间移动。 若该值设置得过大,则很难有part达到这个条件,比如:min_bytes_to_rebalance_partition_over_jbod大于max_data_part_size_bytes(卷中的磁盘可以存储的part的最大大小),则没有part能达到自动平衡的条件。
  • 本地表建表参考 本地表创建参考: CREATE TABLE mybase_local.mytable ( `did` Int32, `app_id` Int32, `region` Int32, `pt_d` Date ) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/mybase_local/mytable', '{replica}') PARTITION BY toYYYYMMDD(pt_d) ORDER BY (app_id, region) SETTINGS index_granularity = 8192, use_minimalistic_part_header_in_zookeeper = 1; 使用说明: 表引擎选择: ReplicatedMergeTree:支持副本特性的MergeTree引擎,也是最常用的引擎。 ZooKeeper上的表信息注册路径,用于区分集群中的不同配置: /clickhouse/tables/{shard}/{databaseName}/{tableName}:{shard}是分片名称,{databaseName}是数据库名称,{tableName}是复制表名称。 order by 主键字段: 查询时最常使用且过滤性最高的字段作为主键。依次按照访问频度从高到低、维度基数从小到大来排。排序字段不宜太多,建议不超过4个,否则merge的压力会较大。排序字段不允许为null,如果存在null值,需要进行数据转换。 partition by 分区字段 分区键不允许为null,如果字段中有null值,需要进行数据转换。 表级别的参数配置: index_granularity:稀疏索引粒度配置,默认是8192。 use_minimalistic_part_header_in_zookeeper:ZooKeeper中数据存储是否启动新版本的优化存储方式。 建表定义可以参考官网链接:https://clickhouse.tech/docs/en/engines/table-engines/mergetree-family/mergetree/。
  • 基于大宽表进行数据分析,不建议使用大表join大表的操作,对分布式join查询转化成本地表的join查询操作,提升性能 ClickHouse分布式join的性能较差,建议在模型侧将数据聚合成大宽表再导入ClickHouse。分布式join的查询转成本地表的join查询,不仅省去大量的节点间数据传播,同时本地表参与计算的数据量也会少很多。业务层再基于所有分片本地join的结果进行数据汇总,性能会有数量级的提升。
  • 分布式表建表参考 本地表创建参考: CREATE TABLE mybase.mytable AS mybase_local.mytable ENGINE = Distributed(cluster_3shards_2replicas, mybase_local, mytable, rand()); 使用说明: 分布式表名称:mybase.mytable。 本地表名称:mybase_local.mytable。 通过“AS”关联分布式表和本地表,保证分布式表的字段定义跟本地表一致。 分布式表引擎的参数说明: cluster_3shards_2replicas:逻辑集群名称。 mybase_local:本地表所在库名。 mytable:本地表名。 rand():可选参数,分片键(sharding key),可以是表中一列的原始数据(如did),也可以是函数调用的结果,如随机值rand()。注意该键要尽量保证数据均匀分布,另外一个常用的操作是采用区分度较高的列的哈希值,如intHash64(user_id)。
  • Doris UDF开发规则 UDF中方法调用必须是线程安全的。 UDF实现中禁止读取外部大文件到内存中,如果文件过大可能会导致内存耗尽。 需避免大量递归调用,否则容易造成栈溢出或oom。 需避免不断创建对象或数组,否则容易造成内存耗尽。 Java UDF应该捕获和处理可能发生的异常,不能将异常给服务处理,以避免程序出现未知异常。可以使用try-catch块来处理异常,并在必要时记录异常信息。 UDF中应避免定义静态集合类用于临时数据的存储,或查询外部数据存在较大对象,否则会导致内存占用过高。 应该避免类中import的包和服务侧包冲突,可通过grep -lr "完全限定类名"命令来检查冲突的Jar包。如果发生类名冲突,可通过完全限定类名方式来避免。
  • Doris UDF开发建议 不要执行大量数据的复制操作,防止堆栈内存溢出。 应避免使用大量字符串拼接操作,否则会导致内存占用过高。 Java UDF应该使用有意义的名称,以便其他开发人员能够轻松理解其用途。建议使用驼峰式命名法,并以UDF结尾,例如:MyFunctionUDF。 Java UDF应该指定返回值的数据类型,并且必须具有返回值,返回值默认或异常时不要设置为NULL。建议使用基本数据类型或Java类作为返回值类型。
  • HQL编写之隐式类型转换 查询语句使用字段的值做过滤时,不建议通过Hive自身的隐式类型转换来编写HQL。因为隐式类型转换不利于代码的阅读和移植。 建议示例: select * from default.tbl_src where id = 10001; select * from default.tbl_src where name = 'TestName'; 不建议示例: select * from default.tbl_src where id = '10001'; select * from default.tbl_src where name = TestName; 表tbl_src的id字段为Int类型,name字段为String类型。
  • UDF管理 建议由管理员创建永久UDF,避免每次使用时都去add jar,和重新定义UDF。 Hive的UDF会有一些默认属性,比如“deterministic”默认为“true”(同一个输入会返回同一个结果),“stateful”(是否有状态,默认为“true”)。当用户实现的自定义UDF内部实现了汇总等,需要在类上加上相应的注解,例如如下类: @UDFType(deterministic = false) Public class MyGenericUDAFEvaluator implements Closeable {
  • Spark应用中,需引入Spark的类 对于Java开发语言,正确示例: // 创建SparkContext时所需引入的类。 import org.apache.spark.api.java.JavaSparkContext // RDD操作时引入的类。 import org.apache.spark.api.java.JavaRDD // 创建SparkConf时引入的类。 import org.apache.spark.SparkConf 对于Scala开发语言,正确示例: // 创建SparkContext时所需引入的类。 import org.apache.spark.SparkContext // RDD操作时引入的类。 import org.apache.spark.SparkContext._ // 创建SparkConf时引入的类。 import org.apache.spark.SparkConf
  • 应用程序结束之前必须调用SparkContext.stop 利用spark做二次开发时,当应用程序结束之前必须调用SparkContext.stop()。 利用Java语言开发时,应用程序结束之前必须调用JavaSparkContext.stop()。 利用Scala语言开发时,应用程序结束之前必须调用SparkContext.stop()。 以Scala语言开发应用程序为例,分别介绍下正确示例与错误示例。 正确示例: //提交spark作业 val sc = new SparkContext(conf) //具体的任务 ... //应用程序结束 sc.stop() 错误示例: //提交spark作业 val sc = new SparkContext(conf) //具体的任务 ... 如果不添加SparkContext.stop,YARN界面会显示失败。如图1,同样的任务,前一个程序是没有添加SparkContext.stop,后一个程序添加了SparkContext.stop()。 图1 添加SparkContext.stop()和不添加的区别
  • 操作步骤 进入购买微服务引擎专享版页面。 每个项目默认最多可以创建5个微服务引擎专享版,如果您想创建更多,可以提交工单申请扩大配额。 关于项目,请参考项目。 参考下表设置参数,参数前面带*号的是必须设置的参数。 参数 说明 *计费模式 选择计费方式,目前支持: 包年/包月 按需计费 *企业项目 选择微服务引擎所在的项目,可在下拉框中搜索和选择需要的企业项目。 企业项目是一种云资源管理方式,企业项目管理服务提供统一的云资源按项目管理,以及项目内的资源管理、成员管理。 参考开通企业项目,创建并启用新的企业项目后可以使用,默认选择default。 说明: 微服务引擎创建成功后,不支持修改企业项目。 微服务引擎使用期间,请勿停用企业项目,否则会导致该引擎在引擎列表中不可见,影响正常使用。 *规格 选择微服务实例数配额。 须知: 微服务引擎创建成功后,不支持规格变更。 *引擎类型 选择微服务引擎的类型。 引擎类型为集群,其为集群模式部署,主机级容灾。 *微服务引擎名称 输入微服务引擎的名称,名称以字母开头,由字母、数字和-组成,且不能以-结尾,长度为3~24个字符。引擎创建后不能修改名称。 须知: 微服务引擎名称不允许命名为“default”。 *可用区 选择可用区。 根据环境可用区数量,为引擎选择1个或者3个可用区。 选择1个可用区,可提供主机级别容灾能力。 选择3个可用区,可提供可用区级别容灾能力。 说明: 已创建的微服务引擎不支持更换可用区。 同一个区域内的可用区内网互通。 多可用区可加强容灾能力。 *网络 为引擎选择虚拟私有云及其子网,可以为您的引擎构建隔离的、自主配置和管理的虚拟网络环境。 使用已创建的VPC,可在下拉列表中搜索和选择当前账号已创建的虚拟私有云和子网。 使用新的VPC,在下拉列表中单击“创建新虚拟私有云”,创建新的虚拟私有云,具体操作请参考创建虚拟私有云和子网。 使用共享VPC,请在下拉列表选择其他账号共享给当前账号的VPC。 共享VPC基于 资源访问管理 (Resource Access Manager,简称 RAM )服务的机制,VPC的所有者可以将VPC内的子网共享给一个或者多个账号使用。通过共享VPC功能,可以简化网络配置,帮助您统一配置和运维多个账号下的资源,有助于提升资源的管控效率,降低运维成本。有关VPC子网共享的更多信息,请参见共享VPC。 说明: 当引擎创建完成后,不支持变更虚拟私有云。 描述 单击,输入引擎描述信息。 安全认证 开启了“安全认证”的微服务引擎专享版,通过微服务引擎控制台提供了基于RBAC(Role-Based Access Control,基于角色的访问控制)的系统管理功能。 选择“开启安全认证”: 根据业务需要确认是否需要开启“编程接口安全认证”。 开启编程接口安全认证后,需要在微服务的配置文件中添加对应用户的账号密码,否则服务无法注册到引擎。 关闭编程接口安全认证,微服务的配置文件中无需配置账号密码即可将服务注册到引擎,效率性能更高,建议用于VPC内访问时使用。 输入root账号的“密码”,并在“再次输入密码”输入框输入密码进行确认。 密码请妥善保管,以免遗失。 选择“关闭安全认证”: 关闭安全认证功能,可以在实例创建完成后再设置开启。 购买时长 计费模式选择“包年/包月”时需要设置。可设置是否开通自动续费。 单击“立即购买”,进入引擎信息确认界面。 单击“提交”,等待引擎创建完毕。 微服务引擎创建完成,大约需要31分钟。 微服务引擎创建成功后,“状态”为“可用”。查看微服务引擎状态,请参考查看微服务引擎信息。 如果微服务引擎创建失败,可在操作日志页面上查看失败原因并处理后可进行以下操作: 可在“微服务引擎信息”区域,单击“重试”重新创建。 如果重试失败,可删除创建失败的微服务引擎,删除微服务引擎,请参考删除微服务引擎专享版。
  • 前提条件 微服务引擎运行于虚拟私有云,创建微服务引擎前,需保证有可用的虚拟私有云和子网。 创建虚拟私有云和子网,请参考创建虚拟私有云和子网。 如果引擎创建账号的权限为创建引擎的最小权限,如微服务引擎细粒度权限依赖说明中的“cse:engine:create”所示。则需要由主账号为其预置VPC默认安全组cse-engine-default-sg,并添加如表1所示规则。 添加安全组规则,请参考添加安全组规则。 表1 默认安全组cse-engine-default-sg规则说明 方向 优先级 策略 协议端口 类型 源地址 入方向 1 允许 ICMP : 全部 IPv6 ::/0 1 允许 TCP : 30100-30130 IPv6 ::/0 1 允许 全部 IPv6 cse-engine-default-sg 1 允许 TCP : 30100-30130 IPv4 0.0.0.0/0 1 允许 ICMP : 全部 IPv4 0.0.0.0/0 出方向 100 允许 全部 IPv4 0.0.0.0/0 100 允许 全部 IPv6 ::/0
  • 操作步骤 登录ServiceStage控制台。 单击“应用管理”。 单击待批量克隆的组件所在的应用名称,进入“应用概览”页面。 勾选“组件列表”中待批量克隆的组件,单击“批量克隆”。 参考下表批量设置待克隆组件版本配置信息。 参数 说明 组件名称 组件的名称,组件部署完成后不支持修改。 Kubernetes类型环境: 不同应用下的同名组件可以部署在同一个环境下。 同一个应用下的同名组件可以部署在同一个环境下相同CCE集群下的不同泳道。关于泳道,请参考全链路流量控制概述。 同一个应用下的同名组件可以部署在不同环境下。 虚拟机类型环境: 不同应用下的同名组件可以部署在同一个环境下。 同一个应用下的同名组件可以部署在不同环境下。 组件版本 组件版本号。 默认以您开始执行批量克隆组件操作的时间来生成版本号,格式为yyyy.mmdd.hhmms,s取时间戳中秒数的个位值。例如:时间戳为2022.0803.104321,则版本号为2022.0803.10431。 您也可以自定义版本号,格式为:A.B.C或者A.B.C.D。A、B、C、D为自然数,例如:1.0.0或者1.0.0.0。 须知: 自定义版本号需唯一,请勿与该组件的历史版本号重复。 您可以执行以下操作,批量同步设置组件版本号: 鼠标移动到指定组件的“组件版本”输入框,单击。 勾选需要同步配置组件版本号的其他组件。 单击“确定”。 所属应用 选择组件所属应用。您可以执行以下操作,批量同步设置组件所属应用: 鼠标移动到指定组件“所属应用”下拉列表框,单击。 勾选需要同步配置组件所属应用的其他组件。 单击“确定”。 所属环境 选择组件部署环境,仅可选择Kubernetes类型环境。 您可以执行以下操作,批量同步设置组件所属环境: 鼠标移动到指定组件“所属环境”下拉列表框,单击。 勾选需要同步配置组件所属环境的其他组件。 单击“确定”。 所属命名空间 选择执行构建的环境下CCE集群命名空间,用于隔离构建数据。关于命名空间,请参考管理命名空间。 您可以执行以下操作,批量同步设置组件所属命名空间: 鼠标移动到指定组件“所属命名空间”下拉列表框,单击。 勾选需要同步配置组件所属命名空间的其他组件。 单击“确定”。 软件包/镜像包/源码仓库 单击,重新选择软件包/镜像包/源码仓库,请参考组件来源说明。 实例数 设置运行在环境下的组件实例数,取值范围为[1, 200]。 您可以执行以下操作,批量同步设置组件实例数: 鼠标移动到指定组件“实例数”输入框,单击。 勾选需要同步配置组件实例数的其他组件。 单击“确定”。 操作 单击指定组件“操作”列的,可以取消克隆该组件。 单击指定组件“操作”列的“高级配置”,可以设置组件的高级配置。 请参考11设置组件的公网访问参数。 请参考13设置“微服务引擎”、“分布式缓存”、“云数据库”、“组件配置”、“部署配置”和“运维监控”等参数。 说明: 您可以执行以下操作,批量同步为组件绑定微服务引擎、分布式缓存或云数据库: 单击,展开“高级配置”下“微服务引擎”、“分布式缓存”或“云数据库”。 鼠标移动到指定组件已绑定的微服务引擎、分布式缓存或云数据库,单击。 勾选需要同步配置的其他组件。 单击“确定”。 您可以执行以下操作,批量为组件同步删除微服务引擎、分布式缓存或云数据库: 单击,展开“高级配置”下“微服务引擎”、“分布式缓存”或“云数据库”。 鼠标移动到指定组件已绑定的微服务引擎、分布式缓存或云数据库,单击。 单击“同步删除”,勾选需要同步配置的其他组件,单击“确定”。 如果仅为当前组件删除已绑定的微服务引擎、分布式缓存或云数据库,单击“取消”。 您可以执行以下操作,为指定组件重新绑定微服务引擎、分布式缓存或云数据库: 单击,展开“高级配置”下的“微服务引擎”、“分布式缓存”或“云数据库”。 鼠标移动到指定组件已绑定的微服务引擎、分布式缓存或云数据库,单击。 重新选择当前环境下已纳管的微服务引擎、分布式缓存或云数据库,单击“确定”。 (可选)单击“高级设置预检查”,检查各组件的高级配置是否正确。 单击“完成并执行”。 等待组件状态由“初始化”转换为“运行中”,表示已成功完成组件批量克隆。
  • 后续操作 阈值规则创建完成后,您还可以按照表2中的步骤来管理阈值告警。 表2 管理阈值告警相关操作 操作 说明 修改阈值告警 当您发现当前的阈值规则设置不合理时,您可以参考如下操作对阈值规则进行修改,以便更好的满足您的业务需求。 单击阈值告警列表“操作”列的“修改”。 在“修改阈值规则”页面中根据界面提示修改阈值规则的相关参数。 单击“修改”。 删除阈值告警 随着业务的变动,当您发现当前的阈值规则已不再需要时,您可以参考如下操作删除阈值规则,以便释放更多的阈值规则资源。 删除阈值规则。 删除单个阈值:单击阈值规则列表“操作”列的“删除”。 批量删除阈值规则:选中单个或多个阈值规则前的复选框,单击页面上方的“删除”。 在弹出的对话框中单击“确定”。 搜索阈值告警 在下拉列表框中选择时间段。 在页面右上角的搜索框中输入阈值告警名称或描述的关键字。 单击,或在键盘上按“Enter”键。 也可单击“高级搜索”设置搜索条件,单击“搜索”进行查询。 查看阈值告警 在已设的连续周期内,当指标数据满足阈值条件时,系统会发送阈值告警。 在阈值告警列表中查看该告警。 查看历史告警 单击阈值规则列表“操作”列的“历史记录”,查看历史告警。 查看数据不足事件 在已设的连续周期内,当没有指标数据上报时,系统会发送数据不足事件。 可在“事件”页面查看该事件,请参考查看组件运行事件。
  • 治理策略说明 支持负载均衡、限流、容错、降级、熔断、错误注入和黑白名单等策略的配置,具体说明见下表。 名称 说明 负载均衡 应用场景 微服务一般会部署多个实例,负载均衡控制微服务消费者访问微服务提供者的多个实例的策略,以达到流量均衡的目的。策略包括轮询、随机、响应时间权值、会话粘滞等。 该治理策略的配置示例及在POM中添加依赖可参考负载均衡中相关内容。 限流 应用场景 用于控制访问微服务的请求量大小,避免由于流量冲击对系统造成破坏。 该治理策略的配置示例及在POM中添加依赖可参考限流中相关内容。 降级 应用场景 用于控制微服务调用其他微服务的时候,强制返回缺省值或者抛出异常,而不将请求发送到目标微服务,以达到屏蔽对目标微服务的访问和降低其压力的目的。 该治理策略的配置示例及在POM中添加依赖可参考降级中相关内容。 容错 应用场景 当微服务消费者访问提供者出现异常,比如实例网络不通等,需要将请求转发到其他可用的实例。这里的容错,常被称为重试。 该治理策略的配置示例及在POM中添加依赖可参考容错中相关内容。 熔断 应用场景 当微服务消费者访问提供者出现异常,比如实例网络不通、请求超时等,并且异常积累到一定的程度,需要停止访问提供者,返回一个异常或者缺省值,防止雪崩效应。 熔断提供了自动熔断策略。自动熔断需要结合错误率等判断是否熔断。 该治理策略的配置示例及在POM中添加依赖可参考熔断中相关内容。 错误注入 应用场景 错误注入可以模拟一个调用失败,主要用于功能验证、故障场景演示等场景。 Java Chassis开发框架接入的微服务治理,该治理策略的配置示例及在POM中添加依赖可参考错误注入中相关内容。 说明: 该服务治理策略只适用于Java Chassis开发框架接入的微服务。 黑白名单 应用场景 基于公钥认证机制,微服务引擎提供了黑白名单功能。通过黑白名单,可以控制微服务允许其他哪些服务访问。 Java Chassis开发框架接入的微服务治理 只有启用了公钥认证,设置的黑白名单才能生效,请参考公钥认证。 说明: 该服务治理策略只适用于Java Chassis开发框架接入的微服务。
  • 操作步骤 登录云应用模型控制台,选择“实例管理”。 您可选择以下任一种方式进入设计页面。 选择待操作实例,在“操作”栏单击。 单击待操作实例名称,进入实例概览页面。在设计缩略图模块,单击“进入设计”按钮。 单击页面上方“预览”按钮,可以预览实例的架构图。 预览状态下,不能编辑实例,只支持对架构图进行缩放、居中和导出。 图1 预览架构图 (可选)单击可切换架构图显示效果。 图2 3D预览效果 部署成功的实例,可查看部署时参数视图及参数录入详情。 在设计区内双击待查看资源或单击右侧对应的资源图标,可查看部署时参数视图。 图3 部署参数视图 单击,可切换查看参数录入详情。 图4 资源参数录入详情
  • 示例流程 图1 给用户授权ServiceStage权限流程 创建用户组并授权 在 IAM 控制台创建用户组,并授予ServiceStage服务“ServiceStage ReadOnlyAccess”权限。 创建用户并加入用户组 在IAM控制台创建用户,并将其加入1中创建的用户组。 用户登录并验证权限 新创建的用户登录控制台,验证ServiceStage的只读权限: 在“服务列表”中选择“应用管理与运维平台 ServiceStage”。 进入“应用管理”页面,单击“创建应用”。 若提示权限不足,表示“ServiceStage ReadOnlyAccess”已生效。
  • 操作步骤 登录ServiceStage控制台。 单击“全链路流量控制”。 选择以下任意方式弹出泳道组编辑对话框: 单击待操作泳道组所在行“操作”列“编辑”。 单击待操作泳道组名称,进入“全链路流量控制”页面,单击“编辑”。 参考下表填写泳道组信息,其中带“*”标志的参数为必填参数。 参数 参数说明 *泳道组名称 泳道组的名称。 流量入口网关 流量入口网关即微服务应用网关,用于通过标签控制流量转发到对应泳道的目标服务组件。 须知: 流量入口网关更换过程中,路由配置会失效。 您可以根据实际业务需要,在下拉列表选择已创建好的微服务应用网关。 单击“创建应用网关”,您可以根据实际业务需要创建新的微服务应用网关以供选择。创建应用网关,请参考创建应用网关。 *目标服务 设置了“流量入口网关”参数时,需要选择通过该网关转发流量的目标服务。 您可以根据实际业务需要,在下拉列表选择已创建好的目标服务。 说明: 可选择的目标服务需要未被其他泳道组使用,其对应的微服务未被其他泳道组使用且支持路由。 单击“创建目标服务”,您可以根据实际业务需要创建新的目标服务以供选择。创建目标服务,请参考创建服务。 单击已关联目标服务后的,可以删除已关联目标服务。 描述 泳道组的描述信息。 单击“确定”,完成泳道组编辑。
  • 模板文件介绍 CAM按照Terraform的最佳实践,一组描述文件主要由main.tf、variables.tf和outputs.tf组成。 main.tf:是主要描述文件,用来表示需要创建的环境资源或者组件资源。例如创建一个VPC和Subnet的资源。 图2 创建VPC和Subnet的资源 variables.tf:表示main.tf中的变量定义,定义了变量的类型,默认值等属性。CAM针对原生Terraform作了部分扩展。比如description属性是一个变量描述,可以通过定义"{\"label\":xxx}"的方式指定变量在Console展示的名称。 图3 定义变量的类型 同时CAM还引入了内置变量的概念,以cam_inner开头的变量作为CAM的内置变量,您只需要在variable.tf文件中写入了这种变量,服务会自动给该变量赋值,并且不会显示在console页面上提供输入,当前CAM支持的内置变量如表1所示。 表1 内置变量说明 变量名 变量描述 使用示例 cam_inner_instance_name CAM实例的名称 variable "cam_inner_instance_name" { type = string description = "{\"label\":\"实例名称\"}" } cam_inner_project_id 用户的projectId variable "cam_inner_project_id" { type = string description = "{\"label\":\"projectId\"}" } outputs.tf:表示一组描述文件可以输出的参数值,以环境的输出参数值为例,可以供组件中引用。比如RDS输出的IP,可以在微服务组件中引用作为环境变量注入。 以样例模板展开描述,环境模板中main.tf创建出ServiceStage应用和环境资源,输出相关的id和name。 图4 outputs.tf文件 如果组件模板需要引用环境模板的输出,那么nginx文件夹下的variables.tf需要定义与environment文件夹下的output.tf同名的变量。 图5 variables.tf文件变量定义 图6 output.tf文件变量定义 更多相关信息请查看华为云terraform学习文档:https://support.huaweicloud.com/basics-terraform/terraform_0007.html。
  • 模板结构介绍 图1 模板结构 environment文件夹是用来存放相关资源开通的描述文件。 例如: 部署CCE的Nginx镜像所需环境资源:VPC、Subnet、CCE集群、EIP、ServiceStage应用和环境。 环境关联关系:CCE集群、ServiceStage相关资源需要关联同一VPC;EIP绑定CCE Node节点以供外网访问;ServiceStage环境纳管VPC、CCE和EIP;ServiceStage应用部署ServiceStage的组件,这里是要部署Nginx组件。 components文件夹用来存放各个组件,可以是函数组件、微服务组件等。各个组件使用单独的子文件夹存放相关资源的描述文件。 例如: 部署CCE的Nginx镜像所需组件资源:ServiceStage组件以及ServiceStage组件实例。 组件关联关系:ServiceStage组件实例需要关联ServiceStage环境、应用和组件,ServiceStage组件实例通过关联的镜像部署应用。
  • 更多操作 创建实例过程中,您还可以执行如表6的操作。 表6 相关操作 操作 说明 缩放 在页面下方缩略图单击,可以自定义放大架构图。 在页面下方缩略图单击,可以自定义缩小架构图。 在页面下方缩略图单击,默认缩小至原图50%。 在页面下方缩略图单击,默认还原架构图大小,居中显示,显示比例为100%。 全屏 在页面下方缩略图单击,画布全屏显示。 在页面下方缩略图单击,画布退出全屏显示。 居中 在页面上方单击,可以快速让架构图居中。 撤销 在页面上方单击,可以撤销上一步执行的操作。 重做 在页面上方单击,可以返回撤销前的状态。 快捷键 在页面下方单击,显示常用快捷键参考。 图元搜索 在页面下方单击,显示画布中所有图元。 在搜索框中输入图元名称进行筛选,支持模糊匹配。 单击显示框中的图元名称,即可锁定选中画布上对应图元。
  • 操作步骤 登录云应用模型控制台。 单击“设计器”,进入设计页面。 参考以下步骤配置E CS 实例。 在左侧列表中,选择“虚拟私有云 VPC”并拖拽至设计区。 参考下表配置虚拟私有云信息,其中带“*”标志的参数为必填参数。 表1 配置VPC参数说明 参数 说明 取值样例 *名称 VPC名称。默认名称“vpc-系统随机码”,创建成功后可修改。 名称必须唯一,不能重复。本示例使用默认名称。 名称只能由中文、英文字母、数字、“_”、“-”和“.”组成,且不能有空格,长度不能大于64个字符。 vpc-bd81 *IPv4网段 VPC的地址范围。 建议使用网段: 10.0.0.0/8~24 172.16.0.0/12~24 192.168.0.0/16~24 10.0.0.0/8 *企业项目 设置企业项目。 企业项目管理提供了一种按企业项目管理云资源的方式,帮助您实现以企业项目为基本单元的资源及人员的统一管理,默认项目为default。 开通企业项目后可以使用。 default 在左侧列表中,选择“子网 Subnet”并拖拽至设计区“虚拟私有云 VCP”内。 参考下表配置子网信息,其中带“*”标志的参数为必填参数 表2 配置子网参数说明 参数 说明 取值样例 *名称 子网名称,默认名称“subnet-系统随机码”,创建成功后可修改。 名称必须唯一,不能重复。本示例使用默认名称。 subnet-f497 *IPv4网段 子网地址范围。 子网的网段须在VPC网段范围内,且子网的掩码范围为:子网所在VPC掩码~29。 说明: 子网的掩码长度范围是:所在VPC掩码~29,比如VPC网段为192.168.0.0/16,VPC的掩码为16,则子网的掩码可在16~29范围内选择。 10.0.0.0/24 *网关 子网的网关。 通向其他子网的IP地址,用于实现与其他子网的通信。 10.0.0.1 在左侧列表中,选择“安全组 Security Group”并拖拽至设计区“子网 Subnet”内。 安全组可独立创建,不依赖子网。在需要关联时,拖拽至子网内即可。 具体要求,请参考设计器部署实例时需注意哪些关联关系? 在右侧弹框中,输入安全组名称。本示例使用默认值。 单击“添加安全组规则”,参考下表配置安全组规则,其中带“*”标志的参数为必填参数。 表3 配置安全组规则参数说明 参数 说明 取值样例 优先级 安全组规则优先级。 优先级可选范围为1-100,默认值为1,即最高优先级。优先级数字越小,规则优先级级别越高。 1 策略 安全组规则策略,支持的策略如下: 如果“策略”设置为允许,表示允许源地址访问安全组内云服务器的指定端口。 如果“策略”设置为拒绝,表示拒绝源地址访问安全组内云服务器的指定端口。 优先级相同的情况下,拒绝策略优先于允许策略。 允许 *规则方向 选择入方向或者出方向,对安全组内部的云主机出入方向网络流量进行访问控制。 入方向:指从外部访问安全组规则下的实例。 出方向:指安全组规则下的实例访问安全组外的实例。 入方向 *协议 网络协议。 目前支持“全部协议”、“tcp”、“udp”、“icmp”和“icmpv6”协议。本示例选择tcp。 tcp *类型 IP地址类型。 IPv4 IPv6 IPv4 *端口 允许远端地址访问弹性云服务器指定端口,取值范围为:1~65535。常用端口请参见弹性云服务器常用端口。 端口填写包括以下形式: 单个端口:例如22。 连续端口:例如22-30。 多个端口:例如22,23-30,一次最多支持20个不连续端口组, 端口组之间不能重复。 全部端口:为空或1-65535。 22 *地址类型 源地址是入方向规则中,用来匹配外部请求的地址,支持以下格式: IP地址:表示源地址为某个固定的IP地址。 安全组:表示源地址为另外一个安全组。 IP地址组:表示源地址为一个IP地址组,IP地址组是一个或者多个IP地址的集合。 IP地址 *对端IP地址 对端IP地址。当“地址类型”选择“IP地址”时显示。 单个IP地址:比如192.168.10.10/32(IPv4地址)、fc00:50::44/128(IPv6地址)。 默认IP地址:默认IP地址可以匹配任意IP地址,比如0.0.0.0/0(IPv4地址)、::/0(IPv6地址)。 IP网段:比如192.168.1.0/24(IPv4地址段)、fc00:c080:802:469::/64(IPv6地址段)。 0.0.0.0/0 *安全组信息 当“地址类型”选择“安全组”时显示。 您可以在下拉列表中,选择当前账号下,同一个区域内的其他安全组。当安全组A内有实例a,安全组B内有实例b,在安全组A设置入方向规则时的“策略”为允许,源地址选择安全组B时,表示来自实例b的内网访问请求被允许进入实例a。 cse-engine-2636 *IP地址组信息 当“地址类型”选择“IP地址组”时显示。 您可以在下拉列表中,选择可用的IP地址组。对于安全策略相同的IP网段和IP地址,此处建议您使用IP地址组简化管理。 ipGroup-e09d-1 单击“确定”,添加安全组规则完成。 在左侧列表中,选择“弹性云服务器 ECS”并拖拽至设计区“安全组 Security Group”、“子网 Subnet”内。 在右侧弹框中,参考下表配置弹性云服务器,其中带“*”标志的参数为必填参数。 表4 配置ECS参数说明 参数 说明 取值样例 *计费模式 支持“包年/包月”和“按需计费”。 包年/包月 *计费周期单位 当“计费模式”选择“包年/包月”时显示。 可选择“年”或“月”。 年 *订购周期 当“计费模式”选择“包年/包月”时显示。最短为1个月,最长为3年。 “计费周期单位”选择“年”时,订购周期范围 1-3。 “计费周期单位”选择“月”时,订购周期范围 1-9。 1 *名称 云服务器名称,默认名称“ecs-系统随机码”,可在云服务器创建成功后修改。 名称必须唯一,不能重复。本示例使用默认名称。 ecs-8141 *可用区 可用区是指在同一地域内,电力和网络互相独立的物理区域。在同一VPC网络内可用区与可用区之间内网互通,可用区之间能做到物理隔离。详细信息请参见区域和可用区。 可用区1 *CPU架构 选择“CPU架构”。 X86计算:x86 CPU架构采用复杂指令集(CISC),CISC指令集的每个小指令可以执行一些较低阶的硬件操作,指令数目多而且复杂,每条指令的长度并不相同。由于指令执行较为复杂所以每条指令花费的时间较长。 鲲鹏计算:鲲鹏 CPU架构采用RISC精简指令集(RISC),RISC是一种执行较少类型计算机指令的微处理器,它能够以更快的速度执行操作,使计算机的结构更加简单合理地提高运行速度,相对于X86 CPU架构具有更加均衡的性能功耗比。鲲鹏的优势是高密度低功耗,可以提供更高的性价比。 X86计算 *规格 针对不同的应用场景,可以选择不同规格的弹性云服务器。 ac6.12xlarge.2 *镜像 镜像是一个包含了操作系统及必要配置的弹性云服务器模板,使用镜像可以创建弹性云服务器。 公共镜像是云平台提供的常见的标准操作系统镜像,所有用户可见,包括操作系统以及预装的公共应用。公共镜像具有高度稳定性,皆为正版授权,您也可以根据实际需求自助配置应用环境或相关软件。 基于云服务器或外部镜像文件等方式创建的个人镜像,仅用户自己可见。包含操作系统、预装的公共应用以及用户的私有应用。选择私有镜像创建云服务器,可以节省您重复配置云服务器的时间。怎样制作私有镜像? 您可以接受云平台其他用户共享的私有镜像,作为自己的镜像进行使用。怎样共享镜像? CentOS 7.6 64bit for Tenant 20210525 *系统盘 默认只分配系统盘,无数据盘。弹性云服务器支持使用的磁盘类型,请参见云硬盘。 若需要添加数据盘,可单击“增加一块数据盘”进行配置。 极速型SSD 40GB *网络 可选择“手动分配IP地址”或“自动分配IP地址”。 自动分配IP地址:系统将自动分配IP地址。 手动分配IP地址:系统将分配您指定的IP地址。 IP地址必须在子网地址范围内。 自动分配IP地址 *企业项目 设置企业项目。 企业项目管理提供了一种按企业项目管理云资源的方式,帮助您实现以企业项目为基本单元的资源及人员的统一管理,默认项目为default。 开通企业项目后可以使用。 default *登录凭证 可选择“密码”或“密钥对”。 密码:指使用设置初始密码方式作为弹性云服务器的鉴权方式,此时,您可以通过用户名密码方式登录弹性云服务器。 密钥对:指使用密钥对作为弹性云服务器的鉴权方式。您可以选择使用已有的密钥,或者选择“实例自定义数据注入”。 例如:您可以通过注入一段脚本,激活待创建云服务器的root用户权限,注入成功后,您可以使用root用户登录弹云服务器。 实例自定义数据注入的详细操作,请参见实例自定义数据注入。 - 设计器云服务目录中还为您提供了快捷箱,您可以直接拖拽快捷箱中的图标至设计页面,即可自动设计一个ECS或CCE实例。 图1 设计快捷箱 创建EIP并通过连线绑定ECS实例。 在左侧列表中,选择“弹性公网IP EIP”并拖拽至设计区空白处。 在右侧弹框中配置EIP。 参考下表配置EIP,其中带“*”标志的参数为必填参数。 表5 配置EIP参数说明 参数 说明 取值样例 *计费模式 目前只支持按需计费,不可编辑。 按需计费 *名称 EIP名称,默认名称“eip-系统随机码”。 名称必须唯一,不能重复。 本示例使用默认名称。 eip-8f66 *公网宽带 选择“按需计费”时,需要选择公网带宽的计费方式。 按带宽计费:指定带宽上限,按使用时间计费,与使用的流量无关。适用于流量较大或较稳定场景使用。 按流量计费:指定带宽上限,按实际使用的出公网流量计费,与使用时间无关。适用于流量小或流量波动较大的场景。 加入共享带宽:带宽可以加入多个弹性公网IP,带宽被多个弹性公网IP地址共用。适用于多业务流量错峰分布场景。 按流量计费 *带宽大小 带宽大小,单位Mbit/s。 带宽范围:1-300 Mbit/s。 30 *线路 5_sbgp:静态BGP,网络结构发生变化时,无法实时通过自动调整网络设置来保障用户体验。 静态BGP弹性公网IP每服务周期的服务可用率不低于99%。若选择静态BGP,需要应用系统自行具备容灾切换能力。 5_bgp:全动态BGP,可以根据设定的寻路协议实时自动优化调整网络结构,以保证客户网络的持续稳定和高效运行。 全动态BGP弹性公网IP每服务周期的服务可用率不低于99.95%。若选择全动态BGP,将提供更持续稳定、高效的网络质量。 5_sbgp *企业项目 设置企业项目。 企业项目管理提供了一种按企业项目管理云资源的方式,帮助您实现以企业项目为基本单元的资源及人员的统一管理,默认项目为default。 开通企业项目后可以使用。 default 鼠标停留在弹性公网IP图标上,显示绿色节点,选择任一节点并拖拽,直至连线箭头链接到“弹性云服务器 ECS”节点上。 此时连线由红色变绿色,表示绑定成功。 图2 EIP通过连线绑定ECS 单击关闭右侧弹窗。单击页面上方,在弹框中输入实例名称。 单击,只会创建一个CAM实例,不会部署,实例状态为未部署。 单击,会直接创建一个CAM实例并部署。 单击“确定”,实例创建完成。可在“实例管理”页面查看实例,也可以在设计器页面浏览架构图。 此时实例状态为未部署,如您需要进行实例部署,具操作请参考部署实例。
  • 操作步骤 登录ServiceStage控制台。 选择以下任意方式进入组件“实例列表”页面: 在“应用管理”页面,单击组件所属应用名称,在“组件列表”单击待操作组件名称或者在组件名称上单击右键选择打开组件“概览”页面的方式,在左侧导航栏单击“实例列表”。 在“组件管理”页面,单击待操作组件名称或者在组件名称上单击右键选择打开组件“概览”页面的方式,在左侧导航栏单击“实例列表”。 在“实例列表”页面,您可执行如下表所示操作。 操作名称 操作说明 重启单个实例 对于部署环境为Kubernetes类型的组件,如果某个实例运行异常,可以通过删除该实例来进行实例重启。 选择待删除实例,单击“操作”列的“删除”。 在弹出对话框,单击“确定”。 查看实例运行监控 通过查看实例运行监控信息,可以了解单个实例运行中的CPU、内存利用率。 单击实例列表待操作实例名称前的。 选择“监控”页签,查看该实例运行监控信息。 查看实例运行事件 ServiceStage支持查看指定实例运行过程中发生的事件详情。 单击实例列表待操作实例名称前的。 选择“事件”页签,查看该实例运行过程中发生的事件详情。 查看实例运行容器 对于部署环境为Kubernetes类型的组件,ServiceStage支持查看指定实例运行容器信息,包括容器名称、运行状态、挂载镜像等。 单击实例列表待操作实例名称前的。 选择“容器”页签,查看该实例运行容器信息。
  • 操作步骤 登录ServiceStage控制台。 在“环境管理”页面,单击待操作环境名称。 在“资源配置”下左侧列表,参考下表纳管需要纳管到环境下的资源。 资源类型 资源名称 操作方法 计算 云容器引擎 CCE 请参考绑定CCE集群。 如需管理Kubernetes类型的环境下的CCE集群资源,请参考CCE资源管理。 弹性云服务器 ECS 选择“计算”资源下的“弹性云服务器 ECS”。 单击“纳管资源”。 勾选待纳管的ECS资源。 单击“确定”。 说明: 同一VPC下,已被其他环境纳管的ECS资源,不支持被再次纳管。 “虚拟机”类型的环境,如果纳管的ECS资源Agent状态为“缺少Agent,请先安装”,请参考安装虚拟机Agent完成Agent安装。 弹性伸缩组 AS 选择“计算”资源下的“弹性伸缩组 AS”。 单击“纳管资源”。 勾选待纳管的AS资源。 单击“确定”。 说明: 同一VPC下,已被其他环境纳管的AS资源,不支持被再次纳管。 网络 弹性负载均衡 ELB 选择“网络”资源下的“弹性负载均衡 ELB”。 单击“纳管资源”。 勾选待纳管的ELB资源。 单击“确定”。 弹性公网 EIP 选择“网络”资源下的“弹性公网 EIP”。 单击“纳管资源”。 勾选待纳管的EIP资源。 单击“确定”。 中间件 分布式缓存 DCS 选择“中间件”资源下的“分布式缓存 DCS”。 单击“纳管资源”。 勾选待纳管的DCS资源。 单击“确定”。 微服务引擎 CSE 选择“中间件”资源下的“微服务引擎 CSE”。 单击“纳管资源”。 选择待纳管的CSE资源。 单击“确定”。 云数据库 RDS 选择“中间件”资源下的“云数据库 RDS”。 单击“纳管资源”。 勾选待纳管的RDS资源。 单击“确定”。
  • 前提条件 根据实际需要创建需纳管的资源: 已创建环境待纳管的状态为运行中的弹性 云服务器ECS ,ECS和环境所在的VPC需要一致,且不能被其他环境纳管。 弹性云服务器ECS用于“虚拟机”类型环境下部署和运行组件。创建弹性云服务器ECS,请参考购买弹性云服务。 已创建环境待纳管的弹性伸缩组AS,AS和环境所在的VPC需要一致,且不能被其他环境纳管。且AS中已包含弹性云服务器。 弹性伸缩组AS用于“虚拟机”类型环境下部署和运行组件。创建弹性伸缩组AS,请参考创建伸缩组。 拉美-圣保罗一、拉美-墨西哥城二区域不支持纳管弹性伸缩组AS。 已创建环境待纳管的弹性负载均衡ELB,ELB和环境所在的VPC需要一致。 弹性负载均衡ELB用于通过ELB方式访问组件提供的服务。创建弹性负载均衡ELB,请参考创建共享型负载均衡器。 已创建环境待纳管的弹性公网IP。 弹性公网IP用于通过弹性IP公网访问方式访问组件提供的服务。创建弹性公网IP,请参考申请弹性公网IP。 已创建环境待纳管的分布式缓存DCS,DCS和环境所在的VPC需要一致。 分布式缓存DCS用于在应用运行时读取环境变量来获取分布式缓存的相关信息。创建分布式缓存DCS,请参考购买Redis实例。 已创建环境待纳管的MySQL数据库引擎的云数据库RDS实例,RDS和环境所在的VPC需要一致。 云数据库RDS用于应用数据持久化存储。创建云数据库RDS,请参考步骤一:购买实例。 已创建环境待纳管的 微服务引擎CSE ,如果CSE与环境所在VPC不一致,需正确配置VPC连通。 微服务引擎CSE用于将运行在环境下的微服务接入引擎,实现微服务注册发现、服务治理和配置管理。创建微服务引擎CSE,请参考创建微服务引擎。
  • 创建模板 登录云应用模型控制台,选择“我的模板”。 单击“创建模板”,参考表1设置模板基本信息,其中带“*”标志的参数为必填参数。 表1 模板参数说明 参数 说明 *模板名称 输入模板名称。 模板名称必须唯一,不能重复。 名称只能由中文、英文字母、数字、“_”、“-”和“()”组成,且不能有空格,长度不能大于64个字符。 托管到ServiceStage 选择自定义模板是否托管到ServiceStage, 默认值为“暂不托管”。 暂不托管 立即托管 标签 输入标签。 标签最多可设置5个,标签在创建完成后可以修改。 描述 输入模板描述。 *模板文件 上传模板文件。目前支持上传CAM和RF两种类型模板。 CAM模板校验规则: 上传文件名称只能由英文字母、数字、“_”、“-”和“.”组成,且不能有空格。 上传文件大小须小于1MB。 上传文件类型为ZIP。 RF模板校验规则: 压缩包首层目录必须包含tf或者tf.json文件。 所有文件名只能包括中文、英文字母、数字、“_”、“-”和“.”,且以中文和英文字母开头,总字符长度最大为128。 所有的文件类型只支持tf、tf.json、txt。 若压缩包内存在文件夹,则文件夹内的文件类型需符合以上2个条件。 单击“创建并发布”,模板创建并发布完成。 单击“创建”:只创建模板,模板状态为未发布。 单击“创建并发布”:模板创建并发布。 图1 创建并发布模板
共100000条