华为云用户手册

  • 基础概念 Internal Catalog Doris原有的Database和Table都将归属于Internal Catalog。Internal Catalog是内置的默认Catalog,用户不可修改或删除。 External Catalog 可以通过CREATE CATA LOG 命令创建一个External Catalog。创建后,可以通过SHOW CATALOGS命令查看已创建的Catalog。 切换Catalog 用户登录Doris后,默认进入Internal Catalog,因此默认的使用和之前版本并无差别,可以直接使用SHOW DATABASES,USE DB等命令查看和切换数据库。 用户可以通过SWITCH命令切换Catalog。如: SWITCH internal; SWITCH hive_catalog; 切换后,可以直接通过SHOW DATABASES,USE DB等命令查看和切换对应Catalog中的Database。Doris会自动通过Catalog中的Database和Table。用户可以像使用Internal Catalog一样,对External Catalog中的数据进行查看和访问。 当前,Doris只支持对 External Catalog中的数据进行只读访问。 删除Catalog External Catalog中的Database和Table都是只读的。但是可以删除Catalog(Internal Catalog无法删除)。可以通过DROP CATALOG命令删除一个External Catalog。 该操作仅会删除Doris中该Catalog的映射信息,并不会修改或变更任何外部数据目录的内容。 Resource Resource是一组配置的集合。用户可以通过CREATE RESOURCE命令创建一个Resource。之后可以在创建Catalog时使用这个Resource。 一个Resource可以被多个Catalog使用,以复用其中的配置。
  • 复合分区与单分区 复合分区。 第一级称为Partition,即分区。用户可以指定某一维度列作为分区列(当前只支持整型和时间类型的列),并指定每个分区的取值范围。 第二级称为Distribution,即分桶。用户可以指定一个或多个维度列以及桶数对数据进行HASH分布或者不指定分桶列设置成Random Distribution对数据进行随机分布。 此场景推荐使用复合分区。 有时间维度或类似带有有序值的维度,可以以这类维度列作为分区列。分区粒度可以根据导入频次、分区数据量等进行评估。 历史数据删除需求:如有删除历史数据的需求(比如仅保留最近N天的数据)。使用复合分区,可以通过删除历史分区来达到目的。也可以通过在指定分区内发送DELET语句进行数据删除。 解决数据倾斜问题:每个分区可以单独指定分桶数量。如按天分区,当每天的数据量差异很大时,可以通过指定分区的分桶数,合理划分不同分区的数据,分桶列建议选择区分度大的列。 单分区。 用户也可以不使用复合分区,即使用单分区。则数据只做Hash分布。
  • 关于Random Distribution的设置以及使用场景 如果OLAP表没有更新类型的字段,将表的数据分桶模式设置为RANDOM,则可以避免严重的数据倾斜(数据在导入表对应的分区的时候,单次导入作业每个batch的数据将随机选择一个tablet进行写入)。 当表的分桶模式被设置为RANDOM时,因为没有分桶列,无法根据分桶列的值仅对几个分桶查询,对表进行查询的时候将对命中分区的全部分桶同时扫描,该设置适合对表数据整体的聚合查询分析而不适合高并发的点查询。 如果OLAP表的是Random Distribution的数据分布,那么在数据导入的时候可以设置单分片导入模式(将load_to_single_tablet设置为true),那么在大数据量的导入的时候,一个任务在将数据写入对应的分区时将只写入一个分片,这样将能提高数据导入的并发度和吞吐量,减少数据导入和Compaction导致的写放大问题,保障集群的稳定性。
  • 关于Partition和Bucket的数量和数据量的建议 一个表的Tablet总数量等于 (Partition num*Bucket num)。 一个表的Tablet数量,在不考虑扩容的情况下,推荐略多于整个集群的磁盘数量。 单个Tablet的数据量理论上没有上下界,但建议在1G-10G的范围内。如果单个Tablet数据量过小,则数据的聚合效果不佳,且元数据管理压力大。如果数据量过大,则不利于副本的迁移、补齐,且会增加Schema Change或者Rollup操作失败重试的代价(这些操作失败重试的粒度是Tablet)。 当Tablet的数据量原则和数量原则冲突时,建议优先考虑数据量原则。 在建表时,每个分区的Bucket数量统一指定。但是在动态增加分区时(ADD PARTITION),可以单独指定新分区的Bucket数量。可以利用这个功能方便的应对数据缩小或膨胀。 一个Partition的Bucket数量一旦指定,不可更改。所以在确定Bucket数量时,需要预先考虑集群扩容的情况。比如当前只有3台host,每台host有1块盘。如果Bucket的数量只设置为3或更小,那么后期即使再增加机器,也不能提高并发度。 举一些例子:假设在有10台BE,每台BE一块磁盘的情况下。如果一个表总大小为500MB,则可以考虑4-8个分片。5GB:8-16个分片。50GB:32个分片。500GB:建议分区,每个分区大小在50GB左右,每个分区16-32个分片。5TB:建议分区,每个分区大小在50GB 左右,每个分区16-32个分片。
  • 基本原理 下图展示了Stream load的主要流程,省略了一些导入细节。 ^ + | | | | 1A. User submit load to FE | | | +--v-----------+ | | FE | 5. Return result to user | +--+-----------+ | | | | 2. Redirect to BE | | | +--v-----------+ +---+Coordinator BE| 1B. User submit load to BE +-+-----+----+-+ | | | +-----+ | +-----+ | | | 3. Distrbute data | | | +-v-+ +-v-+ +-v-+ |BE | |BE | |BE | +---+ +---+ +---+ Stream load中,Doris会选定一个节点作为Coordinator节点。该节点负责接数据并分发数据到其他数据节点。您可以通过HTTP协议提交导入命令。如果提交到FE,则FE会通过HTTP redirect指令将请求转发给某一个BE。用户也可以直接提交导入命令给某一指定BE。导入的最终结果由Coordinator BE返回给用户。
  • JDBC通过ssl方式连接doris(验证证书) 在应用层进行代码重试和负载均衡时,代码重试需要应用自己多个配置doris前端节点地址。比如发现一个连接异常退出,就自动在其他连接上进行重试。 前提条件:集群必须开启HTTPS。 下载证书请在集群详情页面下载。 在已安装mysql客户端的ecs服务器上先执行以下命令,导入服务器证书。 your_certificate_path:自定义证书存放路径。 your_truststore_name:自定义truststore名称。 your_truststore_password:自定义 truststore密码。 keytool -importcert -alias MySQLCACert -file your_certificate_path -keystore your_truststore_name -storepass your_truststore_password 运行该命令的过程中,需要手动输入yes,如下所示: 图1 运行图 执行以下代码样例。 以下java代码中your_truststore_path为truststore文件路径,your_truststore_password为上述命令设置的truststore密码。 public class Main { private static String URL = "jdbc:mysql:loadbalance://" + "[FE1_host]:[FE1_port],[FE2_host]:[FE2_port],[FE3_host]:[FE3_port]/[your_database]?" + "loadBalanceConnectionGroup=first&ha.enableJMX=true"; static Connection getNewConnection() throws SQLException, ClassNotFoundException { Class.forName("com.mysql.cj.jdbc.Driver"); System.setProperty("javax.net.ssl.trustStore","your_truststore_path"); System.setProperty("javax.net.ssl.trustStorePassword","your_truststore_password"); String user = "your_username"; String password = "your_password"; Properties props = new Properties(); props.setProperty("user", user); props.setProperty("password", password); props.setProperty("useSSL", "true"); props.setProperty("requireSSL", "true"); props.setProperty("verifyServerCertificate", "true"); props.setProperty("sslMode", "VERIFY_CA"); return DriverManager.getConnection(URL, props); } public static void main(String[] args) throws Exception { Connection c = getNewConnection(); try { System.out.println("begin print"); String query = "your sqlString"; c.setAutoCommit(false); Statement s = c.createStatement(); ResultSet resultSet = s.executeQuery(query); while(resultSet.next()) { int id = resultSet.getInt(1); System.out.println("id is: "+id); } System.out.println("end print"); Thread.sleep(Math.round(100 * Math.random())); c.close(); } catch (Exception e) { e.printStackTrace(); } } } 父主题: 通过JDBC方式连接Doris
  • 数据模型选择 Doris数据模型上目前分为三类:AGGREGATE KEY,UNIQUE KEY,DUPLICATE KEY。三种模型中数据都是按KEY进行排序。 Aggregate模型。 Aggregate模型可以通过预聚合,极大地降低聚合查询时所需扫描的数据量和查询的计算量,非常适合有固定模式的报表类查询场景。但是该模型对count( * ) 查询很不友好。同时因为固定了Value列上的聚合方式,在进行其他类型的聚合查询时,需要考虑语意正确性。 Aggregate Key相同时,新旧记录进行聚合,目前支持的聚合函数有SUM,MIN,MAX,REPLACE。 CREATE TABLE site_visit ( siteid INT, city SMALLINT, username VARCHAR(32), pv BIGINT SUM DEFAULT '0' ) AGGREGATE KEY(siteid, city, username) DISTRIBUTED BY HASH(siteid) BUCKETS 10; Unique模型。 Unique模型针对需要唯一主键约束的场景,Unique key相同时,新记录覆盖旧记录,可以保证主键唯一性约束。适用于有更新需求的分析业务。目前Unique key实现上和Aggregate key的 REPLACE聚合方法一样,二者本质上相同。但是无法利用ROLLUP等预聚合带来的查询优势(因为本质是REPLACE,没有SUM这种聚合方式)。 CREATE TABLE sales_order ( orderid BIGINT, status TINYINT, username VARCHAR(32), amount BIGINT DEFAULT '0' ) UNIQUE KEY(orderid) DISTRIBUTED BY HASH(orderid) BUCKETS 10; Duplicate模型。 Duplicate模型相同的行不会合并,适合任意维度的Ad-hoc查询。虽然无法利用预聚合的特性,但是不受聚合模型的约束,可以发挥列存模型的优势(列裁剪、向量执行等)。 CREATE TABLE session_data ( visitorid SMALLINT, sessionid BIGINT, visittime DATETIME, city CHAR(20), province CHAR(20), ip varchar(32), brower CHAR(20), url VARCHAR(1024) ) DUPLICATE KEY(visitorid, sessionid) DISTRIBUTED BY HASH(sessionid, visitorid) BUCKETS 10;
  • 大宽表与Star Schema 业务方建表时, 为了和前端业务适配, 往往不对维度信息和指标信息加以区分, 而将Schema定义成大宽表,这种操作对于数据库其实不是那么友好,我们更建议用户采用星型模型。 Schema中字段数比较多, 聚合模型中可能key列比较多, 导入过程中需要排序的列会增加。 维度信息更新会反应到整张表中,而更新的频率直接影响查询的效率。 使用过程中,建议用户尽量使用Star Schema区分维度表和指标表。频繁更新的维度表也可以放在MySQL外部表中。而如果只有少量更新, 可以直接放在Doris中。在Doris中存储维度表时,可对维度表设置更多的副本,提升Join的性能。
  • 表格存储 里面的数据是否可以迁移? CloudTable使用 对象存储服务 存储集群数据的备份和快照,实现安全、高可靠和低成本的存储需求,了解更多请参见对象存储服务。如果需要查看账号下建立的桶,参考OBS服务《控制台指南》管理桶章节。 CloudTable使用 云数据迁移 可以将云上云下或第三方云上的多种数据源的数据迁移到CloudTable集群的HBase表中。详细步骤参见使用CMD迁移数据到CloudTable 父主题: 数据读写类
  • 如何调整数据均衡的灵敏度? BE定期(每隔一分钟)会向FE汇报一次磁盘使用情况。FE记录这些统计值,并根据这些统计值,限制不同的操作请求。 在FE中分别设置了 高水位(High Watermark)和危险水位(Flood Stage) 两级阈值。危险水位高于高水位。当磁盘使用率高于高水位时,Doris会限制某些操作的执行(如副本均衡等)。而如果高于危险水位,则会禁止某些操作的执行(如导入)。 同时,在BE上也设置了 危险水位(Flood Stage)。考虑到FE并不能完全及时的检测到BE上的磁盘使用情况,以及无法控制某些 BE 自身运行的操作(如 Compaction)。因此BE上的危险水位用于 BE 主动拒绝和停止某些操作,达到自我保护的目的。请参见磁盘空间管理。
  • 设置回收站时间 回收站原理:删除的数据不会直接从磁盘上删除,而是先放入回收站,等待超时时间满足后,再从磁盘上直接删除。 设置回收站时间需要考虑的因素。 回收站时间过长,会累积垃圾文件,占用磁盘空间。 回收站时间过长,调用admin clean trash;命令后,容易导致数据不均衡,触发二次数据均衡,再次产生垃圾文件。 回收站时间过短,容易误删、异常原因导致被删除的tablet无法被恢复。建议根据实际业务,观察回收站占用的磁盘空间的平均值,并根据占用磁盘空间和所需的防误删时间窗口,设置合理时间值。 curl -X POST http://{be_ip}:{be_http_port}/api/update_config?trash_file_expire_time_sec={value}\&persist=true be_host:节点地址。 be_webserver_port:节点端口。 trash_file_expire_time_sec:回收站清理的间隔,72个小时,当磁盘空间不足时,trash下的文件保存期可不遵守这个参数,默认值259200。
  • 如何查看回收站数据 登录CloudTable控制台。 创建Doris集群。 连接Doris集群。 查看回收站数据。 show trash; 图1 回收站数据 恢复回收站数据。 curl -X POST http://{be_host}:{be_webserver_port} /api/restore_tablet?tablet_id={tablet_id}\&schema_hash={schema_hash} be_host:节点地址。 be_webserver_port:节点端口。
  • 操作步骤 登录ServiceStage控制台。 单击“全链路流量控制”。 单击待操作泳道组名称,进入“全链路流量控制”页面。 单击泳道组当前关联的流量入口网关卡片上的“网关路由配置”。 “配置方式”选择“基于流量配置”。 根据您的实际业务需要,输入各泳道的流量配置百分比。 各泳道的流量配置取值范围为[0, 100]之间的整数,全部泳道流量配置百分比之和必须等于100%。 单击“确定”,完成基于流量的网关路由配置。 配置会对泳道组下所有泳道生效。
  • 前提条件 只能在应用下新增组件,请先创建应用,请参考创建应用。 组件需要部署在指定环境下,请先创建环境并纳管资源,请参考环境管理。 需要根据组织管理组件构建生成的镜像,请先创建组织,请参考创建组织。 (可选)如果基于Kubernetes类型的环境创建并部署组件,请先创建命名空间,请参考创建命名空间。 如果您基于“源码仓库”创建组件,那么您首先需要创建仓库授权,请参考仓库授权。 如果您基于软件包创建组件,那么您首先需要将软件包上传至CodeArts软件发布库、SWR软件仓库或者OBS对象存储中。 将软件包上传至CodeArts软件发布库,请参考上传软件包。 将软件包上传至SWR软件仓库,请参考上传软件包。 将软件包上传至OBS对象存储中,请参考上传对象。 如果上传软件包失败,请参考如何解决上传软件包失败的问题?。
  • 操作步骤 登录ServiceStage控制台。 单击“全链路流量控制”。 单击待操作非基线泳道所在泳道组名称,进入“全链路流量控制”页面。 单击待操作非基线泳道卡片上的。 单击切换开关,设置路由规则生效方式。 或:默认生效方式,匹配任意一条路由规则就生效。 且:匹配所有路由规则才生效。 单击“新增匹配规则”,参考下表设置路由匹配规则。 参数 参数说明 匹配类型 支持的路由规则匹配类型。 当前仅支持基于“请求头”类型的匹配。 参数名称 “匹配类型”对应的key值。 条件类型 “条件值”满足的匹配规则。 前缀匹配:以前缀作为匹配条件。 精确匹配:即完全匹配。 正则匹配:以正则表达式作为匹配条件。 条件值 “匹配类型”对应的value值。 单击“确定”,完成基于内容的网关路由配置。 开启泳道流量,使配置生效。 单击。 单击“确定”。 配置会对该非基线泳道下的所有组件生效。如果业务请求无法匹配到该非基线泳道所配置的路由规则,则网关将业务请求转发至基线泳道的组件处理。
  • 使用限制 使用Kubernetes类型环境部署且绑定了微服务引擎(对应于 微服务引擎CSE 服务的ServiceComb引擎专享版)的微服务组件,支持使用全链路流量控制。关于创建并部署组件,请参考创建并部署组件。 微服务组件依赖的开发框架为spring-cloud-huawei 1.11.5-2021.0.x及以上版本。 加入全链路流量控制的组件,将不再支持通过灰度发布方式升级组件。关于灰度发布升级组件,请参考灰度发布(金丝雀)方式升级。
  • 使用流程 图2 全链路流量控制使用流程 全链路流量控制的使用流程如图2所示。 创建并部署基线版本组件 使用ServiceStage创建并使用Kubernetes类型环境部署基线版本微服务组件,并为所有基线版本组件绑定同一个微服务引擎,请参考创建并部署组件。 创建应用网关 应用网关用于转发打标签组件流量,请参考创建应用网关。 绑定目标服务 将1中已接入微服务引擎的组件对应微服务与2创建的应用网关绑定,以便网关获取组件微服务地址,请参考创建服务。 配置路由 为2创建的应用网关配置路由规则,当应用网关收到访问流量时,会根据已配置的路由规则判断是否匹配并做相应的处理,请参考配置路由。 创建泳道组 泳道组是一组泳道的集合,用于区分不同的组织或场景,请参考创建泳道组。 创建基线泳道 泳道用于为相同版本组件定义一套隔离环境。只有满足了流控路由规则的请求流量才会通过标签控制流量转发到对应泳道的目标服务组件。一个组件只能属于一个泳道,一个泳道可以包含多个组件。 基线泳道包括应用中所有组件的基线版本,当微服务调用链中不存在某个组件的时候,会默认访问基线泳道中的组件,请参考创建基线泳道。 关联基线版本组件到基线泳道 为6创建的基线泳道关联所有应用组件,请参考关联基线版本组件到基线泳道。 创建非基线泳道 非基线泳道用于关联应用的灰度版本组件,请参考创建非基线泳道。 创建并部署灰度版本组件 非基线泳道创建后,需要根据实际业务需要创建灰度版本组件,用于调整流量至非基线泳道验证业务,请参考创建灰度版本组件。 调整非基线泳道流量验证业务 根据实际业务需要修改路由配置,调整流量至非基线泳道验证业务,请参考配置路由。 升级基线泳道组件并调整流量 升级基线泳道组件,并根据业务需要调整流量至基线泳道组件。 升级单个组件,请参考单批发布方式升级或滚动发布方式升级。 批量升级组件,请参考批量升级组件版本配置。
  • 背景信息 在一个存在多个微服务组件的应用体系中,对其中一个微服务组件进行版本升级发布时,会涉及到其他微服务组件版本的变动升级。所以要求在灰度验证时能够使得灰度流量同时经过涉及到的所有微服务组件灰度版本。如图1所示,由于Microservice-B组件发布新版本涉及到Microservice-C组件的变动,所以在做灰度验证时要求流量能够同时经过Microservice-B、Microservice-C组件的灰度版本。因此,需要额外配置涉及到的Microservice-C组件微服务治理规则,确保流入灰度环境下Microservice-B组件流量能够转发到Microservice-C组件的灰度版本。 图1 全链路流量控制示意图 但是在真实业务场景中,由于业务的微服务组件规模和数量很大,一条请求链路可能会经过很多个微服务组件。新功能发布时也可能会涉及到多个微服务组件同时变更,并且业务的微服务组件之间依赖错综复杂。频繁的组件版本发布、以及组件多版本并行开发导致流量治理规则日益膨胀,给整个系统的可维护性和稳定性带来了严重挑战。 对于以上问题和挑战,业界结合实际业务场景和产业实践经验,提出了一种端到端的灰度发布方案,来进行全链路流量控制,即全链路灰度。全链路流量控制功能将应用组件的相关版本隔离成一个独立的运行环境(即泳道),通过设置流控路由规则,将满足规则的请求流量路由到目标版本组件。
  • 操作步骤 登录ServiceStage控制台。 单击“全链路流量控制”。 选择以下任意方式弹出泳道组编辑对话框: 单击待操作泳道组所在行“操作”列“编辑”。 单击待操作泳道组名称,进入“全链路流量控制”页面,单击“编辑”。 参考下表填写泳道组信息,其中带“*”标志的参数为必填参数。 参数 参数说明 *泳道组名称 泳道组的名称。 流量入口网关 流量入口网关即微服务应用网关,用于通过标签控制流量转发到对应泳道的目标服务组件。 须知: 流量入口网关更换过程中,路由配置会失效。 您可以根据实际业务需要,在下拉列表选择已创建好的微服务应用网关。 单击“创建应用网关”,您可以根据实际业务需要创建新的微服务应用网关以供选择。创建应用网关,请参考创建应用网关。 *目标服务 设置了“流量入口网关”参数时,需要选择通过该网关转发流量的目标服务。 您可以根据实际业务需要,在下拉列表选择已创建好的目标服务。 说明: 可选择的目标服务需要未被其他泳道组使用,其对应的微服务未被其他泳道组使用且支持路由。 单击“创建目标服务”,您可以根据实际业务需要创建新的目标服务以供选择。创建目标服务,请参考创建服务。 单击已关联目标服务后的,可以删除已关联目标服务。 描述 泳道组的描述信息。 单击“确定”,完成泳道组编辑。
  • 通过CCE模板管理页面安装Sermant Injector 第一次启动Sermant Injector实例之前,需申请Sermant Injector https证书。 登录已安装kubectl命令的CCE节点,请参考Linux弹性云服务器登录方式概述选择相应方式登录CCE节点。 执行以下命令申请Sermant Injector https证书: wget -O- https://cse-bucket-cn-east-3.obs.cn-east-3.myhuaweicloud.com/javaagent/certificate.sh | sh 该步骤会把证书挂载到cse命名空间中,如果不存在cse命名空间,则会自动创建。 该步骤会向k8s集群申请名为sermant-injector.cse.svc的CertificateSigningRequest,如果之前存在,则会被覆盖。 该步骤会在cse命名空间中创建名为sermant-injector-secret的Secret,如果之前存在,则会被覆盖。 使用Sermant Injector时,如果提示证书失效等证书相关的错误,请重新申请证书并重新安装Sermant Injector实例。 上传Sermant Injector模板。 下载模板。Sermant Injector模板版本及下载地址如下表所示: 版本 发行时间 获取路径 1.0.9 2023.06.30 sermant-injector-1.0.9.tgz 上传模板,请参考上传模板。 安装Sermant Injector,请参考创建模板实例。 安装时,按需修改配置文件,配置说明如下: agent: image: # 选填配置,Sermant Agent镜像版本,默认为最新版本。 version: ${agent.version} cse: config: # 必填配置,微服务引擎配置中心地址,获取方式请参考获取微服务引擎配置中心地址。 endpoints: https://localhost:30110 registry: # 必填配置,注册中心类型,当前支持SERVICE_COMB/NACOS type: SERVICE_COMB # 必填配置,微服务引擎注册中心地址,获取方式请参考获取微服务引擎服务注册发现地址。 endpoints: https://localhost:30100 image: # 选填配置,镜像拉取策略:Always(总是拉取)/IfNotPresent(本地有则使用本地镜像,不拉取)/Never(只使用本地镜像,从不拉取) pullPolicy: IfNotPresent # 必填配置,CCE所在的region,具体请参考地区和终端节点。 region: ${region} injector: image: # 选填配置,injector镜像版本,默认为最新版本。 version: ${injector.version} # 选填配置,拉取镜像的密钥。 pullSecrets: default-secret # 选填配置,injector实例数,若CCE集群只有一个节点,则需配置为1。 replicas: 2 webhooks: # 必填配置,K8s集群证书,请在已安装kubectl命令的CCE节点中使用以下命令获取 # kubectl config view --raw --minify --flatten -o jsonpath='{.clusters[].cluster.certificate-authority-data}' caBundle: null 目前Sermant Injector只支持安装到cse命名空间中,如果安装时,无法在页面上找到cse命名空间,请刷新页面。 父主题: 安装Sermant Injector
  • 操作步骤 登录ServiceStage控制台。 单击“全链路流量控制”。 单击待操作泳道组名称,进入“全链路流量控制”页面。 泳道组已关联流量入口网关,单击泳道组当前关联的流量入口网关名称后的。 泳道组未关联流量入口网关,单击“点击关联流量入口网关”。 参考下表填写相关参数,其中带“*”标志的参数为必填参数。 参数 参数说明 流量入口网关 流量入口网关即微服务应用网关,用于通过标签控制流量转发到对应泳道的目标服务组件。 您可以根据实际业务需要,在下拉列表选择已创建好的微服务应用网关。 单击“创建应用网关”,您可以根据实际业务需要创建新的微服务应用网关以供选择。创建应用网关,请参考创建应用网关。 *目标服务 设置了“流量入口网关”参数时,需要至少选择1个通过该网关转发流量的目标服务。 您可以根据实际业务需要,在下拉列表选择已创建好的目标服务。 说明: 可选择的目标服务需要未被其他泳道组使用,其对应的微服务未被其他泳道组使用且支持路由。 单击“创建目标服务”,您可以根据实际业务需要创建新的目标服务以供选择。创建目标服务,请参考创建服务。 单击已关联目标服务后的,可以删除已关联目标服务。 单击“确定”,完成泳道组网关更换。
  • 背景信息 CCE容器部署的Spring Cloud应用可通过Sermant Injector插件自动挂载Sermant Agent,通过Sermant Agent接入未开启安全认证的微服务引擎。同Spring Cloud Huawei接入方式相比,Sermant Agent方式无需修改代码即可接入并使用应用注册发现等功能,但是不支持使用微服务治理功能。关于Sermant Agent,请参考Sermant-agent使用手册。 请根据您的实际业务需要选择使用Sermant Agent、Spring Cloud Huawei接入方式中的一种将Spring Cloud应用接入微服务引擎,但不可同时使用,以免导致冲突。
  • 使用条件 已创建Kubernetes类型的环境,请参考创建环境。 环境中已绑定1.15以上版本的CCE集群,请参考绑定CCE集群。 CCE集群节点已安装kubectl,安装kubectl命令请参考通过kubectl连接集群中相关操作。 环境中已纳管2.4.0及以上版本的未开启安全认证的微服务引擎专享版,请参考纳管资源。 Sermant Agent及Sermant Injector版本要求1.0.3及以上。
  • 操作步骤 登录ServiceStage控制台。 单击“全链路流量控制”。 单击待操作泳道组名称,进入“全链路流量控制”页面。 单击泳道组当前关联的流量入口网关卡片上的“网关路由配置”。 “配置方式”选择“基于内容配置”。 单击以对应非基线泳道名称命名的页签,进入为指定非基线泳道配置网关路由页面。 单击切换开关,设置路由规则生效方式。 或:默认生效方式,匹配任意一条路由规则就生效。 且:匹配所有路由规则才生效。 单击“新增匹配规则”,参考下表设置路由匹配规则。 参数 参数说明 匹配类型 支持的路由规则匹配类型。 当前仅支持基于“请求头”类型的匹配。 参数名称 “匹配类型”对应的key值。 条件类型 “条件值”满足的匹配规则。 前缀匹配:以前缀作为匹配条件。 精确匹配:即完全匹配。 正则匹配:以正则表达式作为匹配条件。 条件值 “匹配类型”对应的value值。 单击“确定”,完成基于内容的网关路由配置。 配置会对泳道组下对应非基线泳道的所有组件立即生效。如果业务请求无法匹配到非基线泳道所配置的路由规则,则网关将业务请求转发至基线泳道的组件去处理。 如需关闭非基线泳道流量,请参考开启/关闭非基线泳道流量。
  • 操作步骤 登录ServiceStage控制台。 单击“全链路流量控制”。 单击待操作非基线泳道所在泳道组名称,进入“全链路流量控制”页面。 选择待操作非基线泳道卡片,进入“创建组件”页面。 泳道不存在组件:单击非基线泳道卡片上的“创建组件”或右上角的。 泳道已存在组件:单击非基线泳道卡片右上角的。 创建组件,请参考创建并部署组件。 在执行13操作步骤时: “微服务引擎”选择绑定基线泳道下已关联基线版本组件绑定的微服务引擎(对应于微服务引擎 CS E服务的ServiceComb引擎专享版)。为基线泳道关联组件,请参考关联基线版本组件到基线泳道。 “所属泳道”选择待操作泳道名称。 单击非基线泳道卡片上当前已创建的组件数,可以查看泳道下的灰度版本组件详情。
  • 通过Helm客户端安装Sermant Injector 安装Helm客户端。 Helm下载链接:https://github.com/helm/helm/releases,请选择合适的版本,本章节以helm v3.3.0为例进行演示。 下载helm-v3.3.0-linux-amd64.tar.gz。 登录已安装kubectl命令的CCE节点,然后将Helm安装包上传到CCE节点上。 请参考Linux弹性云服务器登录方式概述选择相应方式登录CCE节点。 解压Helm安装包。 在Helm安装包所在的路径执行命令tar -zxf helm-v3.3.0-linux-amd64.tar.gz解压Helm安装包。 将helm移动到系统path所在路径。 以“/usr/local/bin/helm”为例,在Helm解压包所在的路径执行命令mv linux-amd64/helm /usr/local/bin/helm进行移动。 验证安装结果。 执行命令helm version,如果输出下图中的信息,则说明安装成功: 安装用户需要有安装目录和系统path路径的读写权限。 第一次启动Sermant Injector实例之前,需申请Sermant Injector https证书。 登录已安装kubectl命令的CCE节点,请参考Linux弹性云服务器登录方式概述选择相应方式登录CCE节点。 在已安装kubectl命令的CCE节点中执行以下命令申请Sermant Injector https证书: wget -O- https://cse-bucket-cn-east-3.obs.cn-east-3.myhuaweicloud.com/javaagent/certificate.sh | sh 该步骤会把证书挂载到cse命名空间中,如果不存在cse命名空间,则会自动创建。 该步骤会向k8s集群申请名为sermant-injector.cse.svc的CertificateSigningRequest,如果之前存在,则会被覆盖。 该步骤会在cse命名空间中创建名为sermant-injector-secret的Secret,如果之前存在,则会被覆盖。 使用Sermant Injector时,如果提示证书失效等证书相关的错误,请重新申请证书并重新安装Sermant Injector实例。 安装Sermant Injector模板。 登录已安装Helm客户端的CCE节点并执行以下命令下载Sermant Injector模板: wget -O- 'https://cse-bucket-cn-east-3.obs.cn-east-3.myhuaweicloud.com/javaagent/sermant-injector-1.0.9.tgz' | tar zx Sermant Injector模板版本信息如下: 版本 发行时间 1.0.9 2023.06.30 修改配置。 下载模板后,编辑模板包中的values.yaml文件,按需修改配置。配置说明如下: agent: image: # 选填配置,Sermant Agent镜像版本,默认为最新版本。 version: ${agent.version} cse: config: # 必填配置,微服务引擎配置中心地址,获取方式请参考获取微服务引擎配置中心地址。 endpoints: https://localhost:30110 registry: # 必填配置,注册中心类型,当前支持SERVICE_COMB/NACOS type: SERVICE_COMB # 必填配置,微服务引擎注册中心地址,获取方式请参考获取微服务引擎服务注册发现地址。 endpoints: https://localhost:30100 image: # 选填配置,镜像拉取策略:Always(总是拉取)/IfNotPresent(本地有则使用本地镜像,不拉取)/Never(只使用本地镜像,从不拉取) pullPolicy: IfNotPresent # 必填配置,CCE所在的region,具体请参考地区和终端节点。 region: ${region} injector: image: # 选填配置,injector镜像版本,默认为最新版本。 version: ${injector.version} # 选填配置,拉取镜像的密钥。 pullSecrets: default-secret # 选填配置,injector实例数,若CCE集群只有一个节点,则需配置为1。 replicas: 2 webhooks: # 必填配置,K8s集群证书,请在已安装kubectl命令的CCE节点中使用以下命令获取 # kubectl config view --raw --minify --flatten -o jsonpath='{.clusters[].cluster.certificate-authority-data}' caBundle: null 安装Sermant Injector模板。 在Sermant Injector模板包所在路径执行命令helm install sermant-injector sermant-injector-1.0.9进行安装。 如果需要卸载Sermant Injector,请执行helm uninstall sermant-injector命令。卸载Sermant Injector后,不会再自动挂载Sermant Agent。已挂载Sermant Agent的应用如果未重启则不受影响,如果重启,因为Sermant Injector已被卸载,则应用不会再挂载Sermant Agent。 父主题: 安装Sermant Injector
  • 操作步骤 登录ServiceStage控制台。 单击“全链路流量控制”。 单击待关联组件的基线泳道所在泳道组名称,进入“全链路流量控制”页面。 基线泳道未关联组件:单击基线泳道卡片上的“关联组件”或右上角的,在弹出的“关联组件”对话框勾选待关联的组件。 基线泳道已关联组件:单击基线泳道卡片上右上角的,在弹出的“关联组件”对话框勾选待关联的组件。 所有待关联组件需已经绑定同一个微服务引擎(对应于微服务引擎CSE服务的ServiceComb引擎专享版)。 组件未被其他泳道关联。 组件的标签为默认的base标签。 单击“确定”,完成基线泳道组件关联。 单击基线泳道卡片上当前已关联的组件数,可以查看基线泳道已关联的组件列表。
  • 前提条件 已创建基线泳道,请参考创建基线泳道。 关联新建组件,需已创建并使用Kubernetes类型环境部署基线微服务组件,并为组件绑定待操作基线泳道所在泳道组的流量入口网关所绑定的微服务引擎(对应于微服务引擎CSE服务的ServiceComb引擎专享版),请参考创建并部署组件。 关联升级到当前版本的环境下已存在的组件,需执行组件升级操作为组件绑定待操作基线泳道所在泳道组的流量入口网关所绑定的微服务引擎(对应于微服务引擎CSE服务的ServiceComb引擎专享版),请参考单批发布方式升级。
  • 操作步骤 登录ServiceStage控制台。 单击“全链路流量控制”。 单击待创建基线泳道所在泳道组名称,进入“全链路流量控制”页面。 单击“创建基线泳道”,参考下表填写泳道信息,其中带“*”标志的参数为必填参数。 参数 参数说明 *泳道名称 基线泳道的名称。 *标签 用于在Kubernetes类型的环境下创建并部署组件时,将绑定微服务引擎(对应于微服务引擎CSE服务的ServiceComb引擎专享版)的组件打上相应的标签以标记流量。当有请求访问时,应用网关会根据路由规则将流量转发到对应流量标签的微服务上。当无法找到对应标签的微服务时,将转发至基线泳道对应的微服务。 基线泳道的标签默认为base,不可修改。 单击“确定”,完成基线泳道创建。
  • 操作步骤 登录ServiceStage控制台。 单击“全链路流量控制”。 单击待操作泳道组名称,进入“全链路流量控制”页面。 单击泳道组当前关联的流量入口网关卡片上“目标服务”后的。 参考下表填写相关参数,其中带“*”标志的参数为必填参数。 参数 参数说明 *目标服务 选择通过该网关转发流量的目标服务。 您可以根据实际业务需要,在下拉列表选择已创建好的目标服务。 说明: 可选择的目标服务需要未被其他泳道组使用,其对应的微服务未被其他泳道组使用且支持路由。 单击“创建目标服务”,您可以根据实际业务需要创建新的目标服务以供选择。创建目标服务,请参考创建服务。 单击已关联目标服务后的,可以删除已关联目标服务。 单击“确定”,完成泳道组目标服务更换。
共100000条