华为云用户手册

  • 处理方法 以root用户登录执行代码检查任务的执行机。 执行以下命令,确保rpcbind服务正在运行。 bash systemctl start rpcbind systemctl enable rpcbind 执行以下命令,启动nfslock服务。 bash systemctl start nfs-server systemctl enable nfs-server 如果系统提示nfslock服务不存在,可以尝试使用nfs-server或者nfs-kernel-server命令启动NFS服务。 执行以下命令,检查nfslock服务是否成功启动,若未成功, 需执行3重新启动。 bash systemctl status nfs-server 确保“/etc/exports”文件中配置了需要共享的目录,并且nfslock服务的配置文件“/etc/sysconfig/nfs”已经正确设置。 如果修改了NFS的配置文件,需执行以下命令,重启NFS服务,使修改生效。 bash systemctl restart nfs-server 检查防火墙设置,确保防火墙没有阻止NFS服务所需的端口。如果被阻止,需要添加相应的规则来允许NFS流量通过。
  • 处理方法 以root用户登录执行代码检查任务的执行机。 执行以下命令,查看当前系统最大线程数。 ulimit -Hu ulimit -Su 执行“vim /etc/security/limits.conf”命令,打开文件。 增加以下配置命令,用户退出后重新登录生效。 * soft nproc 4096 * hard nproc 4096 命令前需要注意带“*”号。 按“Esc”键返回普通模式。 输入“:wq”保存并退出。 执行以下命令,查看当前可打开的文件数是否已修改为4096。 ulimit -Hn ulimit -Sn
  • 处理方法 减少单个代码检查任务的代码扫描量,可通过以下3种方式。 将报错的代码检查任务拆分多个任务,并在拆分的任务中分别设置不同语言的规则集。设置规则集可参考设置规则集。 例如:报错的代码检查任务A中有多种语言的代码,Java、C、C#,则可以将任务A拆分为任务A1、任务A2和任务A3,其中A1使用Java语言的规则集扫描,A2使用C语言的规则扫描,A3使用C#语言的规则集扫描。 将报错的代码检查任务拆分多个任务,并在拆分的任务中,分别排除部分文件后进行扫描。设置排除文件可参考设置检查模式。 例如:将报错的代码检查任务A拆分为任务A1、任务A2和任务A3,其中A1扫描第1个文件,排除第2个和第3个文件,A2扫描第2个文件,排除第1个和第3个文件,A3扫描第3个文件,排除第1个和第2个文件。 将报错的代码检查任务使用的代码仓拆分成多个子仓分别创建代码检查任务进行扫描。
  • 处理方法 原因一: 减少单个代码检查任务的代码扫描量,可通过以下3种方式。 将报错的代码检查任务拆分多个任务,并在拆分的任务中分别设置不同语言的规则集。设置规则集可参考设置规则集。 例如:报错的代码检查任务A中有多种语言的代码,Java、C、C#,则可以将任务A拆分为任务A1、任务A2和任务A3,其中A1使用Java语言的规则集扫描,A2使用C语言的规则扫描,A3使用C#语言的规则集扫描。 将报错的代码检查任务拆分多个任务,并在拆分的任务中,分别排除部分文件后进行扫描。设置排除文件可参考设置检查模式。 例如:将报错的代码检查任务A拆分为任务A1、任务A2和任务A3,其中A1扫描第1个文件,排除第2个和第3个文件,A2扫描第2个文件,排除第1个和第3个文件,A3扫描第3个文件,排除第1个和第2个文件。 将报错的代码检查任务使用的代码仓拆分成多个子仓分别创建代码检查任务进行扫描。 原因二: 请联系技术支持,使用更大规格的执行机。
  • 参考信息 表2 DataCheck目录说明 文件或文件夹 说明 DataCheck bin 保存校验工具入口脚本。 Windows版本:datacheck.bat Linux版本:datacheck.sh conf 配置文件,进行源数据库和目的数据库的连接配置和日志打印设置。 lib 保存校验工具运行所需的相关jar包。 check_input.xlsx 待校验的表信息,包括Schema名、表名、列名等。 记录用户的校验级别信息和校验规则。已支持3种级别校验,包括high、middle、low,默认为low。 logs 压缩包中不包含该文件,校验工具执行后自动生成,记录工具运行过程日志。 check_input_result.xlsx 压缩包中不包含该文件,执行校验工具后会在check_input.xlsx相同路径下生成校验结果文件。
  • 步骤三:表数据校验 迁移完成之后,可使用数据校验工具DataCheck校验源端、目标端的数据是否一致。 下载软件包后,解压DataCheck-*.zip包,进入DataCheck-*目录,即可使用。目录下各文件的使用说明参见表2。 配置工具包。 Windows环境下: 打开conf文件夹中的dbinfo.properties文件,根据实际需要进行配置。Holo源的配置参考下图: 图16 配置DataCheck 文件中的密码src.passwd和dws.passwd可使用工具,执行以下命令生成密文。 encryption.bat password 运行成功后会在本地bin目录下生成加密文件,如下图。 Linux环境下: 其他步骤相同。密文生成方法与上文中Window环境下的方法类似,命令为sh encryption.sh [password]。 执行数据校验。 Windows环境下: 打开check.input文件,将要校验的Schema、数据库、源表、目标端表填入,Row Range可根据需要填写特定范围的数据查询语句。 源端的库名在配置文件中配置后,check.input文件中的源端会默认填写配置文件中的库名,若check.input文件中填入其他库名,以check.input文件中的优先级为高。 校验级别Check Strategy支持high、middle、low三种,若未填写,默认为low。 校验模式Check mode支持statistics,即统计值校验。 下图为元数据对比的check_input文件。 图17 check_input 在bin目录下使用命令datacheck.bat执行校验工具: 查看已生成的校验结果 check_input_result.xlsx: 下图为源端元数据与目标端一致的结果。 下图为源端元数据与目标端不一致的结果。 统计值校验参考下图。 Linux环境下: 编辑check_input.xlsx文件并上传,参考Window环境下的第一步。 使用命令sh datacheck.sh执行校验工具。 查看校验结果check_input_result.xlsx(校验结果分析与Windows场景相同)。
  • 步骤一:元数据迁移 在Hologres中,使用以下SQL命令进行用户的角色和权限查询。 1 2 SELECT ROLNAME FROM pg_roles; SELECT user_display_name(ROLNAME) FROM pg_roles; 在 GaussDB (DWS)中,集群创建成功后,默认情况下未开启三权分立,数据库系统管理员具有与对象所有者相同的权限。默认只有对象所有者或者系统管理员可以查询、修改和销毁对象。根据Hologres的查询出的角色和权限,相应在GaussDB(DWS)中创建对应的角色和权限,并通过以下途径授权用户权限。 使用GRANT将对象的权限授予其他用户。 1 2 GRANT USAGE ON SCHEMA schema TO user; GRANT SELECT ON TABLE schema.table To user; 使用户继承角色所拥有的对象权限。 1 2 CREATE ROLE role_name WITH CREATEDB PASSWORD '*******'; GRANT role_name to user; 导出源语法。源语法是客户业务的实现逻辑,从Hologres中导出源语法,再修改为适用于GaussDB(DWS)的语法,可以减少建模的工作量,提升业务迁移的效率。 执行以下SQL进行全量语法导出。 1 SELECT hg_dump_script('schema_name.table_name'); 由于源语法涉及业务范围的识别,需熟悉业务的DBA进行操作,建议源语法由客户DBA提供。 如果进行批量导出,可以使用UNION ALL将所有待查询表关联,语法格式如下: 1 2 3 4 SELECT hg_dump_script('schema_name.table_name') UNION ALL SELECT hg_dump_script('schema_name.table_name') … 如果执行失败,需要使用如下命令在DB中创建extension,然后再执行上述SQL。 1 CREATE EXTENSION hg_toolkit; 连接GaussDB(DWS),执行以下SQL创建数据库,推荐使用MySQL兼容模式建库。 1 CREATE DATABASE tldg WITH ENCODING 'UTF-8' TEMPLATE template0 DBCOMPATIBILITY 'MYSQL'; 使用DSC工具对DDL语法进行转换。 解压迁移前准备获取到的DSC工具包。 将待转换的DDL语法文件放入DSC的input文件夹中。 图2 input目录 打开命令行工具,Windows环境下双击runDSC.bat。(Linux环境下运行runDSC.sh。) 执行以下命令进行语法转换。 1 runDSC.bat -S Hologres 图3 DDL语法转换 可以在output文件夹下查看转换结果。 图4 DDL转换结果 连接GaussDB(DWS),执行上一步转换完成的DDL语句,完成建表。 DSC更多内容请参见DSC工具使用指导。
  • 迁移前准备 已经购买了GaussDB(DWS)和 CDM 集群,参见CDM使用指南。 需确保源Hologres集群、目标GaussDB(DWS)集群与CDM网络互通。本例GaussDB(DWS)和CDM创建在同一个区域、同一个网络私有云和子网下。 迁移用户权限放通。 源端和目标端客户端安装完成。 已准备表1所列的迁移工具:DSC、DataCheck。 DataCheck运行环境满足以下要求: 服务器:Linux或Windows服务器,支持64位操作系统。 JRE或JDK:系统已安装JRE 1.8。 网络环境:安装、运行DataCheck工具的服务器,需要与待连接的数据库的网络互通。
  • 步骤五:准备DWS对接Flink工具dws-connector-flink dws-connector-flink是一款基于DWS JDBC接口实现对接Flink的一个工具。在配置 DLI 作业阶段,将该工具及依赖放入Flink类加载目录,提升Flink作业入库DWS的能力。 浏览器访问https://mvnrepository.com/artifact/com.huaweicloud.dws。 在软件列表中选择最新版本的DWS Connectors Flink,本实践选择DWS Connector Flink 2 12 1 12。 单击“1.0.4”分支,实际请以官网发布的新分支为准。 单击“View ALL”。 单击dws-connector-flink_2.12_1.12-1.0.4-jar-with-dependencies.jar,下载到本地。 创建OBS桶,本实践桶名设置为obs-flink-dws,并将此文件上传到OBS桶下,注意桶也保持与DLI在一个区域下,本实践为“ 华北-北京四”。 图12 上传jar包到OBS桶
  • 参考信息 更多参考信息可查看工具指南-DataCheck。 表1 DataCheck目录说明 文件或文件夹 说明 DataCheck bin 保存校验工具入口脚本。 Windows版本:datacheck.bat Linux版本:datacheck.sh conf 配置文件,进行源数据库和目的数据库的连接配置和日志打印设置。 lib 保存校验工具运行所需的相关jar包。 check_input.xlsx 待校验的表信息,包括Schema名、表名、列名等。 记录用户的校验级别信息和校验规则。已支持3种级别校验,包括high、middle、low,默认为low。 logs 压缩包中不包含该文件,校验工具执行后自动生成,记录工具运行过程日志。 check_input_result.xlsx 压缩包中不包含该文件,执行校验工具后会在check_input.xlsx相同路径下生成校验结果文件。 表2 数据校验工具基本功能介绍 DataCheck工具介绍 支持DWS,MySQL,PostgreSQL数据库的数据校验。 支持通用类型字段校验:数值、时间、字符类型。 支持校验级别设置:包括high、middle、low三种。 支持指定schema、表名、列名进行校验。 支持指定记录的校验范围,默认为校验所有记录。 校验方式涉及count(*)、max、min、sum、avg以及抽样明细校验等方式。 输出校验结果和相关校验明细说明。 表3 数据校验级别说明 校验级别 校验说明 校验相关语法 低 数据数量校验 条数校验: COUNT(*) 中 数据数量校验 数值类型校验 条数校验: COUNT(*) 数值校验: MAX, MIN, SUM, AVG 高 数据数量校验 数值类型校验 日期类型校验 字符类型校验 条数校验: COUNT(*) 数值校验: MAX, MIN, SUM, AVG 日期校验: MAX, MIN 字符校验:order by limit 1000,读出数据并校验内容是否相同。
  • 步骤一:元数据迁移 使用华为云自研工具DSC迁移,将Redshift中客户源端导出的样例表的DDL语句转成DWS中可执行的SQL。 解压获取到的DSC工具包,将需要转换的文件放入DSC的input目录下。 Redshift表结构设计中不含索引,影响性能的关键点取决于DDL中的数据分布键DISTSTYLE和排序键SORTKEY。 图2 DDL语句 自定义配置features-pg.properties文件。 图3 features-pg.properties文件 进入到DSC对应目录下,执行runDSC脚本。Windows环境下双击runDSC.bat。(Linux环境下执行runDSC.sh。) 执行以下命令进行语法转换。 1 runDSC.bat -S postgres 图4 DSC转换 查看结果及转换信息。 图5 转换结果 连接GaussDB(DWS),执行上一步转换完成的DDL语句,完成建表。 DSC更多内容请参见DSC工具使用指导。
  • 步骤六:优化迁移作业 配置Kettle内存。 为了增加Kettle并发数及缓存数据量大小,可以设置Kettle的内存大小。 用Notpad++打开Spoon.bat脚本,编辑内存相关内容,一般建议为主机内存的60%-80%,如下图所示。 图28 配置内存 配置Job。 当表数据量小于千万时,Job调度的表个数建议配置在10个左右。 对于相对大一点的表,例如1亿左右的数据,建议配置2~3个即可,这样配置,即使其中一个任务中途失败,也可以打开相应的转换任务,单独调度,提高效率。 对于数据量超过1亿以上的表,尤其是字段数特别多的表,Kettle抽取效率相对较慢,可以根据业务实际情况选择相应的迁移方式。 图29 配置Job 在配置任务的时候,尽量将表数据量大致相同的任务放到一个Job中,这样可以保证所有任务执行完成的时间大致相同,不会有拖尾任务,影响下一个job的执行。 如果任务出错,可以查看相应的报错日志,一般情况下遇到的都是源端连接限制导致断开的问题。遇到该情况,可以重启Kettle软件,重试即可。
  • 了解Kettle Kettle是一个开源的ETL(Extract-Transform-Load)工具,全称为KDE Extraction, Transportation, Transformation and Loading Environment。它提供了一个可视化的图形化界面,使用户能够通过拖放和连接组件来设计和配置ETL流程。支持多种数据源和目标,包括关系型数据库、文件、API、Hadoop等。Kettle提供了丰富的转换和清洗功能,可以对数据进行格式转换、数据过滤、数据合并、数据计算等操作。 它的主要功能如下: 无代码拖拽式构建数据管道。 多数据源对接。 数据管道可视化。· 模板化开发数据管道。 可视化计划任务。 深度Hadoop支持。 DWS需要绑定公网IP后才能与Kettle连接使用。 Kettle和 云数据迁移 (Cloud Data Migration,简称CDM)都适用于批处理场景,当数据量或表数量较小时,推荐使用kettle,反之使用CDM。 支持从数据库导出数据到文件,也支持将数据导入到数据库。 Kettle可通过建立触发器、时间戳字段、Kafka等方式实现数据实时同步。 本实践预计时长90分钟,演示迁移Redshift的基本流程如下: 迁移前准备:准备迁移工具Kettle和相关套件包。 步骤一:元数据迁移:使用DSC工具进行迁移。 步骤二:部署Kettle工具:配置Kettle工具。 步骤三:新建Transformation并配置源端数据库和目标数据库:创建一个transformation任务,配置好源端和目标端数据库。 步骤四:迁移数据:包括全量迁移、增量迁移。 步骤五:并发执行迁移作业:创建一个job,用于并发执行多个transformation任务,达到并发迁移多张表的目的。 步骤六:优化迁移作业:通过调整Kettle内存大小和Job的任务数量,提高迁移效率。 步骤七:表数据校验:迁移后数据一致性验证。
  • 迁移前准备 已经购买了GaussDB(DWS)集群,并已绑定弹性公网IP,并已规划创建好目标数据库dws_vd。 已获取DSC工具包,下载并安装DSC。 已获取DataCheck工具包,下载并安装DataCheck。 已获取Kettle工具包,下载地址(本文以9.4.0.0-343版本为例)。 已安装JDK 1.8环境,并配置相关环境变量。 已获取Kettle工具套件。工具包中包括DWS驱动包、Redshift驱动包、plugin文件夹。 图1 Kettle工具套件
  • 步骤四:迁移数据 全量数据迁移 右键编辑Table input,数据库选择源端数据库连接。 图16 编辑Table input 右键编辑DWS TableOutput,数据库选择目的端数据库连接。勾选Turncate table、Specify database fields,同时选择Database fields下的Get fields获取源端和目的端的字段映射连接,单击OK。 图17 编辑Table output 图18 编辑Database fields 配置好后单击Run,开始执行迁移任务。 图19 执行Run 增量数据迁移 增量迁移和全量迁移的步骤大致相同,区别在于源端SQL中增加了where条件,目的端配置去掉了勾选Truncate table。 右键编辑Table input,数据库选择源端数据库连接。 图20 编辑Table input 右键编辑DWS TableOutput,数据库选择目的端数据库连接。去勾选Truncate table,同时选择Database fields 下的Get fields获取源端和目的端的字段映射连接,单击OK。 图21 编辑TableOutput 配置好后单击Run,开始执行迁移任务。 图22 执行Run
  • 步骤七:表数据校验 迁移完成之后,可使用数据校验工具DataCheck校验源端、目标端的数据是否一致。 下载软件包后,解压DataCheck-*.zip包,进入DataCheck-*目录,即可使用。目录下各文件的使用说明参见表1。 配置工具包。 Windows环境下: 打开conf文件夹中的dbinfo.properties文件,根据实际需要进行配置。Redshift源的配置参考下图: 图30 配置DataCheck 文件中的密码src.passwd和dws.passwd可使用工具,执行以下命令生成密文。 encryption.bat password 运行成功后会在本地bin目录下生成加密文件,如下图。 Linux环境下: 其他步骤相同。密文生成方法与上文中Window环境下的方法类似,命令为sh encryption.sh [password]。 执行数据校验。 Windows环境下: 打开check_input.xlsx文件,将要校验的Schema、数据库、源表、目标端表填入,Row Range可根据需要填写特定范围的数据查询语句。 源端的库名在配置文件中配置后,check_input.xlsx文件中的源端会默认填写配置文件中的库名,若check_input.xlsx文件中填入其他库名,以check_input.xlsx文件中的优先级为高。 校验级别Check Strategy支持high、middle、low三种,若未填写,默认为low。 校验模式Check mode支持statistics,即统计值校验。 下图为元数据对比的check_input.xlsx文件。 图31 check_input.xlsx 在bin目录下使用命令datacheck.bat执行校验工具: 查看已生成的校验结果 check_input_result.xlsx: 下图为源端元数据与目标端一致的结果。 下图为源端元数据与目标端不一致的结果。 统计值校验参考下图。 Linux环境下: 编辑check_input.xlsx文件并上传,参考Window环境下的第一步。 使用命令sh datacheck.sh执行校验工具。 查看校验结果check_input_result.xlsx(校验结果分析与Windows场景相同)。
  • 步骤三:获取GaussDB(DWS)外部服务器所需鉴权信息 获取OBS桶的终端节点。 登录OBS管理控制台。 单击桶名称,左侧选择“概览”,并记录终端节点。 访问终端节点获取DLI的终端节点。 本例(华北-北京四)为dli.cn-north-4.myhuaweicloud.com。 获取创建DLI所使用的账号的特定区域的项目ID。 鼠标悬浮在右上方的账户名,单击“我的凭证”。 左侧选择“API凭证”。 从列表中,找到DLI所属区域,本例为华北-北京四,记录区 域名 所在的项目ID。 获取账号的AK和SK,参见准备工作。
  • 步骤四:通过外表导入DLI表数据 使用系统管理员dbadmin用户登录GaussDB(DWS)数据库,默认登录gaussdb数据库即可。 执行以下SQL创建外部Server。其中OBS终端节点从1获取,AK和SK从准备工作获取,DLI终端节点从2获取。 如果DWS和DLI是同一个账户创建下,则AK和SK分别对应重复填写一次。 1 2 3 4 5 6 7 8 9 CREATE SERVER dli_server FOREIGN DATA WRAPPER DFS_FDW OPTIONS ( ADDRESS 'OBS终端节点', AC CES S_KEY 'AK值', SECRET_ACCESS_KEY 'SK值', TYPE 'DLI', DLI_ADDRESS 'DLI终端节点', DLI_ACCESS_KEY 'AK值', DLI_SECRET_ACCESS_KEY 'SK值' ); 执行以下SQL创建目标schema。 1 CREATE SCHEMA dws_data; 执行以下SQL创建外表。其中项目ID替换为3获取的实际值。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 CREATE FOREIGN TABLE dws_data.dli_pq_order ( order_id VARCHAR(14) PRIMARY KEY NOT ENFORCED, order_channel VARCHAR(32), order_time TIMESTAMP, cust_code VARCHAR(6), pay_amount DOUBLE PRECISION, real_pay DOUBLE PRECISION ) SERVER dli_server OPTIONS ( FORMAT 'parquet', ENCODING 'utf8', DLI_PROJECT_ID '项目ID', DLI_DATABASE_NAME 'dli_data', DLI_TABLE_NAME 'dli_order') DISTRIBUTE BY roundrobin; 执行以下SQL,通过外表查询DLI的表数据。 结果显示,成功访问DLI表数据。 1 SELECT * FROM dws_data.dli_pq_order; 执行以下SQL,创建一张新的本地表,用于导入DLI表数据。 1 2 3 4 5 6 CREATE TABLE dws_data.dws_monthly_order ( order_month CHAR(8), cust_code VARCHAR(6), order_count INT, total_pay_amount DOUBLE PRECISION, total_real_pay DOUBLE PRECISION ); 执行以下SQL,查询出2023年的月度订单明细,并将结果导入DWS表。 1 2 3 4 5 6 7 8 INSERT INTO dws_data.dws_monthly_order ( order_month, cust_code, order_count , total_pay_amount, total_real_pay ) SELECT TO_CHAR(order_time, 'MON-YYYY'), cust_code, COUNT(*) , SUM(pay_amount), SUM(real_pay) FROM dws_data.dli_pq_order WHERE DATE_PART('Year', order_time) = 2023 GROUP BY TO_CHAR(order_time, 'MON-YYYY'), cust_code; 执行以下SQL查询表数据。 结果显示,DLI表数据成功导入DWS数据库。 1 SELECT * FROM dws_data.dws_monthly_order;
  • 场景介绍 GaussDB(DWS)使用对象标识符(oid)来保存对象之间的引用关系,这使得视图在定义的时候就绑定了其依赖的数据库对象的oid,不管视图名称怎么改变,都不会改变这层依赖关系。如果要对基表进行一些字段修改,会因为与视图字段存在强绑定而报错。如果要删除某个表字段或整个表,就需要连同其关联的视图一起使用cascade关键字删除,表字段删除完成或表重建后再依次重建各级视图,给用户的使用增加了很大的工作量,导致易用性较差。 为了解决这一问题,GaussDB(DWS)在8.1.0集群版本实现了视图的解耦,使得存在视图依赖的基表或其他数据库对象(视图、同义词、函数、表字段)可以单独删除,而其对应对象上关联的依赖视图依然存在,而在基表重建后,可以通过ALTER VIEW REBUILD命令重建依赖关系。而8.1.1集群版本在此基础上又实现了自动重建,可以无感知自动重建依赖关系,开启自动重建后会有锁冲突,因此不建议用户开启自动重建。8.2.1.200集群版本在此基础上取消了无感知自动重建,改为本地自动重建,即视图自动重建后未更新系统表,此时,无效视图仍旧无效,但是无效视图依然可以进行DML操作,如果需要将视图元数据刷新为有效状态,依然需要执行ALTER VIEW REBUILD操作。
  • 修改配置文件 编辑resources目录下的application.yml文件,修改actuator相关的配置来暴露Prometheus格式的指标数据。 management: endpoints: web: exposure: include: prometheus 配置完成后,此springboot项目可以通过/actuator/prometheus路径,9090端口暴露出Prometheus格式的监控指标。
  • 在springboot项目中自定义监控指标 定义一个Counter类型的指标,每次前端单击时调用后端api,就自增1。 src\main\java\com\huawei\cae\controller\UserDataController.java中,定义如下字段和方法,并import所需类: 作用是定义了一个Counter类型的监控指标,名为"click_operated_total"。 import io.micrometer.core.instrument.Counter; import io.micrometer.core.instrument.MeterRegistry; import javax.annotation.PostConstruct; ... @Autowired private MeterRegistry registry; private Counter visitCounter; @PostConstruct private void init() { visitCounter = registry.counter("click_operated_total", "click_operated_total",""); } 在前端调用访问的方法clientTest()第一行,添加如下代码: visitCounter.increment(); 这样,当每次访问该方法时,上面定义的“click_operated_total”就会增加1。 修改后的项目即可部署在CAE上,并监控自定义的Prometheus指标。
  • 配置访问方式后,为什么实例异常了? CAE 从环境外部访问本组件-负载均衡配置默认开启后端服务TCP健康检查,实质是进行TCP三次握手,正常的TCP三次握手后,会进行数据传输,但是在健康检查时会发送RST中断建立的TCP连接。该实现方式可能会导致您的组件认为TCP连接异常退出,并打印错误信息,如“Connection reset by peer”。解决方案如下: 关闭访问方式健康检查。 采用HTTP健康检查。 业务代码中忽略健康检查的连接错误。 图1 配置负载均衡访问方式的健康检查 父主题: 组件配置类
  • 验证VPC访问IP绑定 当已经成功添加域名配置后,如图1 域名配置,可以使用与CAE环境所属VPC相同的E CS 访问,检查域名是否与VPC访问IP绑定。 图4 域名配置 登录ECS控制台,选择“弹性云服务器”。 在弹性云服务器列表中,选择连接到同一VPC下的ECS。 图5 选择同一VPC下的ECS(此处用vpc-demotest2演示) 从ECS上ping该内网域名(test18.com),验证网络是否连通。 从ECS上使用wget命令访问内网域名(test18.com),验证组件是否正常运行。
  • 操作步骤 脚本报错,通常来说是用户侧问题。 用户自行修改了脚本,需要先核对脚本。 用户没有填写必填参数。 脚本分为软件包部署场景和镜像部署场景,用户填写场景错误。 咨询客户是否自行修改脚本内容,并核对脚本内容。 核对用户必填参数是否已经填写,并且场景正确。 其他场景导致的脚本执行后报错,比如脚本报CAE格式校验错误。 运行脚本的时候,加入参数 -x 。 bash -x deploy.sh 检查脚本信息,并检查是否符合预期。 修改脚本,重新运行即可。
  • 配置示例 加速域名为www.example.com,该加速域名配置了referer白名单规则:包含空referer,白名单内容为www.test.com,如下图所示。 用户1:请求URL:https://www.example.com/file.html,该请求携带的referer字段值为空,CDN将会正常返回内容。 用户2:请求URL:https://www.example.com/file.html,该请求携带的referer字段值为:www.test.com,CDN将会正常返回内容。 用户3:请求URL:https://www.example.com/file.html,该请求携带的referer字段值为:www.abc.com,CDN节点将会返回403禁止访问的错误信息。 加速域名为www.example01.com,该加速域名配置了referer黑名单规则:包含空referer,黑名单内容为www.test01.com,如下图所示。 用户1:请求URL:https://www.example01.com/file.html,该请求携带的referer字段值为空,CDN节点将会返回403禁止访问的错误信息。 用户2:请求URL:https://www.example01.com/file.html,该请求携带的referer字段值为:www.test01.com,CDN节点将会返回403禁止访问的错误信息。 用户3:请求URL:https://www.example01.com/file.html,该请求携带的referer字段值为:www.bcd.com,CDN将会正常返回内容。
  • 操作步骤 创建nginx-v1服务 进入CCE Console页面,单击在网格已添加的CCE集群名称进入集群详情页,单击“服务-服务”,选择对应命名空间,单击“创建服务”按钮。 参数填写说明: Service名称:自定义服务名称,例如nginx-v1。 访问类型:选择集群内访问。 选择器:单击“引用负载标签”,选择对应的工作负载,例如nginx。 端口配置:容器端口填写业务容器进程监听端口,例如80。服务端口填写通过service访问的端口,例如5566。 创建nginx-v2服务 参考步骤1创建nginx-v2服务。 创建基于流量比例的路由 进入华为云UCS控制台,依次单击“服务网格-要配置的网格名称-服务网关-网关路由-HTTP路由-YAML创建”。 使用以下内容,创建nginx-canary网关路由。 apiVersion: gateway.networking.k8s.io/v1beta1 kind: HTTPRoute metadata: name: nginx-canary # 网关路由名 namespace: whtest # 网关路由所在的命名空间 spec: parentRefs: - group: gateway.networking.k8s.io kind: Gateway name: gwtest1 # 网关名 namespace: whtest # 网关所在的命名空间 rules: - backendRefs: - group: '' kind: Service name: nginx-v1 # nginx-v1服务的服务名 port: 5566 # nginx-v1服务的服务端口 weight: 30 # nginx-v1服务的流量比例 - group: '' kind: Service name: nginx-v2 # nginx-v2的服务名 port: 5566 # nginx-v2服务的端口 weight: 70 # nginx-v2服务的流量比例 matches: - path: type: PathPrefix value: / 该配置表示路由规则引用whtest命名空间下名为gwtest1的Gateway资源。因为未指定监听器名称,此处会尝试引用该Gateway的所有监听器。对于路径前缀为/的请求,将30%流量路由到同命名空间下的nginx-v1服务的5566端口,将70%流量路由到同命名空间下的nginx-v2服务的5566端口。 验证基于流量比例的路由生效 等待几秒钟待新规则配置下发成功,通过网关访问目标服务nginx应用,查看路由规则是否生效。 查看方法如下: 在浏览器中输入地址 http://$GATEWAY_ELB_IP:$GATEWAY_PORT/ ,其中, $GATEWAY_ELB_IP 是路由引用的whtest命名空间下名为gwtest1的网关的负载均衡公网地址; $GATEWAY_PORT是gwtest1网关的监听器对外端口。 预期结果: 反复多次刷新浏览器,约有70%的时间可以看到v2版本的nginx服务内容。
  • 使用场景 服务网关是网格的流量入口,网格外部的客户端通过服务网关访问网格内的服务。目前默认是基于Kubernetes Gateway API模型实现网关能力,网格服务详情中的灰度发布策略只适用于东西向网格内部服务间;对于南北向入口网关的目标服务,如果需要配置灰度发布策略,可参考下文为入口网关的目标服务配置灰度发布策略。 东西向网格内部服务间灰度发布,使用的是Istio的VirtualService/DestinationRule模型,依赖DestinationRulesubsets 来定义服务的版本。 南北向入口网关的目标服务灰度发布,使用的是Kubernetes Gateway API的后端服务定义(backend service definitions),依赖定义多个service来定义服务的版本。
  • 问题描述 kube-prometheus-stack插件的kube-state-metrics组件负责将Prometheus的metrics数据格式转换成K8s API接口能识别的格式。kube-state-metrics组件在默认配置下,不采集K8s资源的所有labels和annotation。如需采集则需要在启动参数中修改采集配置,并同时检查名称为kube-state-metrics的ServiceMonitor中采集白名单是否添加相应指标。
  • 操作步骤 执行以下命令打开kube-state-metrics工作负载对应的YAML文件。 kubectl edit deployment kube-state-metrics -nmonitoring 修改kube-state-metrics的启动参数。 例如需要采集Pod的所有labels时,则将kube-state-metrics的启动参数修改为: --metric-labels-allowlist=pods=[*],nodes=[node,failure-domain.beta.kubernetes.io/zone,topology.kubernetes.io/zone] kube-state-metrics将开始采集Pod和Node的labels指标,并通过kubectl edit servicemonitor kube-state-metrics -nmonitoring查询kube_pod_labels是否在普罗的采集任务中。 如需采集annotation,则在启动参数中以相同方法添加参数--metric-annotations-allowlist。 参考文档:https://github.com/kubernetes/kube-state-metrics/blob/v2.2.3/docs/cli-arguments.md
  • 操作步骤 修改“/etc/default/grub”文件的GRUB_CMDLINE_LINUX配置项,添加systemd.unified_cgroup_hierarchy=no,关闭cgroup v2。 GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0 systemd.unified_cgroup_hierarchy=no" 使用sudo grub-mkconfig -o /boot/grub/grub.cfg命令重新生成引导。 执行reboot重启机器。
共100000条
提示

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