云服务器内容精选
-
响应消息 表3 响应参数 参数 参数类型 描述 addons Arrays of objects 插件版本信息,请参考表4。 表4 addons 参数 参数类型 描述 name String 插件名称。 sermantInjector:Sermant Injector插件。用于自动挂载Sermant Agent,通过Sermant Agent接入未开启安全认证的ServiceComb引擎。无需修改应用代码即可接入引擎并使用应用注册发现、全链路灰度发布、优雅上下线、标签路由等功能,但是不支持使用微服务治理功能。 latest_version String 插件最新版本。
-
约束与限制 下载的驱动必须是后缀为“.run”的文件。 仅支持Nvidia Tesla驱动,不支持GRID驱动。 安装或重装插件时,需要保证驱动下载链接正确且可正常访问,插件对链接有效性不做额外校验。 gpu-device-plugin插件仅提供驱动的下载及安装脚本执行功能,插件的状态仅代表插件本身功能正常,与驱动是否安装成功无关。 如您使用A100/A800的多GPU卡机型,您需要手动安装与版本驱动对应的nvidia-fabricmanager服务才可以正常使用,详情请参见安装nvidia-fabricmanager服务。
-
安装插件 登录U CS 控制台,单击集群名称进入集群,在左侧导航栏中选择“插件中心”。 在“可安装插件”中找到gpu-device-plugin,单击“安装”。 在安装插件页面,填写插件配置。 插件规格:可配置“默认”或“自定义”规格,请根据实际情况选择。 容器:选择“自定义”规格时支持设置。 Nvidia驱动:您可使用CCE提供的驱动地址或手动填写自定义Nvidia驱动的地址,集群下全部GPU节点将使用相同的驱动。 GPU虚拟化功能仅支持470.57.02、470.103.01、470.141.03、510.39.01、510.47.03版本的GPU驱动。 建议您使用CCE提供的驱动地址,以满足驱动版本的要求。 如果下载链接为公网地址,例如地址为nvidia官网地址https://us.download.nvidia.com/tesla/470.103.01/NVIDIA-Linux-x86_64-470.103.01.run,则各GPU节点均需要绑定EIP。获取驱动链接方法请参考获取驱动链接-公网地址。 若下载链接为OBS上的链接,无需绑定EIP 。获取驱动链接方法请参考获取驱动链接-OBS地址。 请确保Nvidia驱动版本与GPU节点适配。 更改驱动版本后,需要重启节点才能生效。 对于linux 5.x内核系统,如华为云欧拉操作系统 2.0或ubuntu 22.04,建议使用470及以上版本驱动。 图1 安装gpu-device-plugin 驱动选择:若您不希望集群中的所有GPU节点使用相同的驱动,CCE支持以节点池为单位安装不同的GPU驱动。 插件将根据节点池指定的驱动版本进行安装,仅对节点池新建节点生效。 新建节点更新驱动版本后,需重启节点生效。非新建节点不支持更新驱动版本。 插件卸载会自动删除已安装的GPU驱动。 GPU虚拟化:选择开启GPU虚拟化,支持GPU单卡的算力、显存分割与隔离。 若集群中未安装volcano插件,将不支持开启GPU虚拟化,您可单击“一键安装”进行安装。如需配置volcano插件参数,请单击“自定义安装”,详情请参见volcano。 若集群中已安装volcano插件,但插件版本不支持使用GPU虚拟化,您可单击“一键升级”进行升级。如需配置volcano插件参数,请单击“自定义升级”,详情请参见volcano。 单击“安装”,安装gpu-device-plugin插件的任务即可提交成功。
-
安装nvidia-fabricmanager服务 A100/A800 GPU支持 NvLink & NvSwitch,若您使用多GPU卡的机型,需额外安装与驱动版本对应的nvidia-fabricmanager服务使GPU卡间能够互联,否则可能无法正常使用GPU实例。 本文以驱动版本470.103.01为例,您可参考以下步骤进行安装,请根据实际情况需要替换驱动版本。 登录需要安装nvidia-fabricmanager服务的GPU节点,该节点需绑定EIP用以下载nvidia-fabricmanager服务。 安装与驱动版本对应的nvidia-fabricmanager服务,您可通过官方下载操作系统和驱动版本对应的安装包。 CentOS操作系统 以CentOS 7为例: driver_version=470.103.01 wget https://developer.download.nvidia.cn/compute/cuda/repos/rhel7/x86_64/cuda-drivers-fabricmanager-${driver_version}-1.x86_64.rpm rpm -ivh nvidia-fabric-manager-${driver_version}-1.x86_64.rpm Ubuntu等其他操作系统 以Ubuntu 18.04为例: driver_version=470.103.01 driver_version_main=$(echo $driver_version | awk -F '.' '{print $1}') wget https://developer.download.nvidia.cn/compute/cuda/repos/ubuntu1804/x86_64/nvidia-fabricmanager-${driver_version_main}_${driver_version}-1_amd64.deb dpkg -i nvidia-fabricmanager-${driver_version_main}_${driver_version}-1_amd64.deb 启动nvidia-fabricmanager服务。 systemctl enable nvidia-fabricmanager systemctl start nvidia-fabricmanager 查看nvidia-fabricmanager服务状态。 systemctl status nvidia-fabricmanager
-
获取驱动链接-公网地址 登录CCE控制台。 创建节点,在节点规格处选择要创建的GPU节点,选中后下方显示的信息中可以看到节点的GPU显卡型号。 登录到nvidia网站。 如图2所示,在“NVIDIA驱动程序下载”框内选择对应的驱动信息。其中“操作系统”必须选Linux 64-bit。 图2 参数选择 驱动信息确认完毕,单击“搜索”按钮,会跳转到驱动信息展示页面,该页面会显示驱动的版本信息如图3,单击“下载”到下载页面。 图3 驱动信息 获取驱动软件链接方式分两种: 方式一:如图4,在浏览器的链接中找到url=/tesla/470.103.01/NVIDIA-Linux-x86_64-470.103.01.run的路径,补齐全路径为https://us.download.nvidia.com/tesla/470.103.01/NVIDIA-Linux-x86_64-470.103.01.run,该方式节点需要绑定EIP 。 方式二:如图4,单击“下载”按钮下载驱动,然后上传到OBS,获取软件的链接,该方式节点不需要绑定EIP。 图4 获取链接
-
注意事项 plpgsql为内置插件,不允许卸载。 decoderbufs, wal2json等逻辑复制插件可以直接使用,不需要安装。 部分插件依赖“shared_preload_libraries”参数,只有在加载相关库之后,才能安装成功。 pg_cron插件当前仅支持PostgreSQL 12(12.11.0及其以上版本)、PostgreSQL 13及以上版本。使用时需要先修改参数“cron.database_name”为需要使用的数据库(仅支持单个数据库),同时修改“cron.use_background_workers”为“on”。 pltcl插件在PostgreSQL 13.2版本实例暂不支持使用,如需使用该插件,请先升级到最新小版本。 部分插件安装或卸载时,会同步安装或卸载其依赖插件,以及相关依赖表。例如:创建插件postgis_sfcgal时,需要先创建postgis插件,这时会同步创建postgis_sfcgal插件;同时,卸载postgis插件时,会同步卸载postgis_sfcgal插件。 部分插件在小版本升级后不支持直接升级,如需升级请卸载后重新安装。
-
SQL审计功能验证 执行sql语句。 create table t1 (id int); insert into t1 values (1); select * from t1; id ---- 1 (1 rows) 在界面上通过“SQL审计”页签进行审计日志下载。 审计日志包含以下内容: AUDIT: OBJECT,1,1,READ,SELECT,TABLE,public.t1,select * from t1; AUDIT:表示这是一个审计日志条目。 OBJECT:表示这是一个对象级别的审计日志。 第一个1:表示对象的 ID。 第二个1:表示对象的子 ID。 READ:表示这是一个读取操作。 SELECT:表示这是一个 SELECT 查询。 TABLE:表示对象类型是表。 public.t1:表示表的名称和模式。 select * from t1:表示执行的 SQL 查询语句。
-
支持版本说明 PostgreSQL 12及以上版本的最新小版本支持该插件。可通过以下SQL语句查询当前实例是否支持该插件: SELECT * FROM pg_available_extension_versions WHERE name = 'pgaudit'; 如果不支持,可通过升级内核小版本或者使用转储与还原升级大版本使用该插件。 RDS PostgreSQ L实例 支持的插件,具体请参见支持的插件列表。
-
基本使用 设置pgaudit扩展 首先需要在插件管理中预加载pgaudit插件,因为pgaudit扩展会安装用于审核数据定义语言 (DDL) 语句的事件触发器。 默认插件管理中已预加载pgaudit插件,也可通过如下命令查看是否加载成功。 show shared_preload_libraries; shared_preload_libraries --------------------------------------------------------------------------------- pg_stat_statements,pgaudit,passwordcheck.so,pg_sql_history,auth_delay,pglogical (1 row) 加载成功后再进行创建插件,请参考插件安装/卸载。 插件安装好后,需要开启审计日志。 如需开通审计日志功能,请联系客服申请。 在控制台上单击实例名称,在概览页面,选择“SQL审计”页签。 单击“设置SQL审计”。 在弹框中,开启审计日志开关,可选择审计日志保留天数。 图1 设置SQL审计 开启审计日志后,还需要配置参数。 在界面“参数修改”页签,搜索“pgaudit.log”参数(指定会话审计日志将记录哪些类型的语句)并设置为适合业务需要的值,可以捕获对日志的插入、更新、删除和其他一些类型的更改。“pgaudit.log”参数取值如下: 表1 参数值说明 参数值 描述 none 这是原定设置值。不记录任何数据库更改。 all 记录所有内容(read、write、function、role、ddl、misc)。 ddl 记录所有数据定义语言(DDL)语句(不包括在 ROLE 类中)。 function 记录函数调用和DO块。 misc 记录其他命令,例如:DISCARD、FETCH、CHECKPOINT、VACUUM、SET read 当源为关系(例如表)或查询时记录SELECT和COPY。 role 记录与角色和权限相关的语句,例如:GRANT、REVOKE、CREATE ROLE、ALTER ROLE、DROP ROLE write 当目标为关系(表)时,记录INSERT、UPDATE、DELETE、TRUNCATE和COPY。 pgaudit还有一些参数,可根据业务需要在界面上进行设置。 表2 参数说明 参数名称 描述 pgaudit.log 指定会话审计日志记录将记录哪些类的语句。 pgaudit.log_catalog 指定在语句中的所有关系都在pg_catalog中的情况下,应该启用会话日志记录。 pgaudit.log_client_authentication 控制是否记录用户认证的信息。 pgaudit.log_extra_field 控制是否记录PID、IP、用户名、数据库等字段。 pgaudit.log_file_rotation_age 设置独立审计日志的轮转时间。 pgaudit.log_parameter 指定审核日志记录应该包含与语句传递的参数。 pgaudit.log_relation 指定会话审核日志记录是否应该为SELECT或DML语句中引用的每个关系(表、视图等)创建单独的日志项。 pgaudit.log_rows 指定审计日志记录应包括语句检索或影响的行。 pgaudit.log_write_txid 控制是否记录写操作(insert/update等)的txid。 pgaudit.logstatementonce 指定日志记录是否包含语句、文本和参数。 pgaudit.log_client 指定审计日志是否发送到客户端。 pgaudit.log_level 指定用于日志条目的日志级别。 pgaudit.write_into_pg_log_file 控制是否仍旧向PostgreSQL的运行日志记录审计信息。 如果您需要在客户端上显示审计日志,可以通过修改以下参数进行配置: “pgaudit.write_into_pg_log_file”和“pgaudit.log_client”参数值同时为on,再根据“pgaudit.log_level”参数选择客户端显示的日志级别(例如notice),客户端再次进行查询时,可以在客户端显示对应级别的审计日志。 “pgaudit.write_into_pg_log_file”和“pgaudit.log_client”参数只要有一个值为off,客户端不会显示审计日志。 “pgaudit.log_level”仅在“pgaudit.log_client”打开时启用。
-
视图接口说明 表3 视图接口说明 序号 视图 列 说明 1 rds_pg_sql_ccl.get_all_enabled_rule dbid oid, queryid bigint, max_concurrency int, max_wait int 查看所有生效的限流规则。 2 rds_pg_sql_ccl.get_activity_query_status queryid bigint, wait_start_time timestamptz, pid int, dbid oid 查看当前实例每个SQL的运行状态(queryid,是否等待等)。 3 rds_pg_sql_ccl.get_current_db_ccl_rule rule_id bigint, query_id bigint , query_string, max_concurrency int, max_waiting int, search_path text, create_time timestamptz, enabled bool 查看当前数据库创建的限流规则(不一定生效)。
-
函数接口说明 表2 函数接口说明 序号 函数名 参数 返回值 功能 1 rds_pg_sql_ccl.get_query_id query_string text, search_path text default 'public' queryid 计算SQL的queryid。 2 rds_pg_sql_ccl.add_ccl_rule_by_query query_string text, max_concurrency int default 0, max_waiting int default 0, search_path text default 'public' ruleid 通过SQL语句添加限流规则。 3 rds_pg_sql_ccl.add_ccl_rule_by_queryid query_id bigint, max_concurrency int default 0, max_waiting int default 0, search_path text default 'public' ruleid 通过queryid添加限流规则。 5 rds_pg_sql_ccl.enable_ccl_rule rule_id bigint bool 通过ruleid让限流规则生效。 6 rds_pg_sql_ccl.disable_ccl_rule rule_id bigint bool 通过ruleid让限流规则失效。 7 rds_pg_sql_ccl.disable_all_ccl_rule - void 让所有限流规则失效。 8 rds_pg_sql_ccl.delete_ccl_rule rule_id bigint void 通过ruleid删除限流规则。 9 rds_pg_sql_ccl.update_ccl_rule new_rule_id bigint, new_max_concurrency int, new_max_waiting int void 通过ruleid更新限流规则。 部分参数说明: max_concurrency:最大并发数,并发执行该类型SQL的最大数量。 max_wait:最大等待时间,达到最大并发数之后,该类型的新SQL的最大等待时间,超过这个时间,则执行失败。 new_max_concurrency:新的最大并发数。 new_max_wait:新的最大等待时间。
-
绑定变量的SQL限流 JDBC等驱动支持prepare statement,对参数化SQL进行预编译,在输入参数后实际执行SQL。在pg_stat_statements视图中会以绑定变量的方式呈现。对于参数是绑定变量的SQL,内核计算的query id值与参数为实际值的SQL不一致,因此无法直接通过添加SQL语句方式进行限流。 对于这类SQL而言,只能通过实际执行后手动添加的方式进行限流。 首先实际执行一次带绑定变量的SQL,这样内核会计算其query id。基于JDBC的prepare statement程序示例如下: String sql = "select pg_sleep(?);"; PreparedStatement preparedStatement = conn.prepareStatement(sql); preparedStatement.setInt(1, 500); ResultSet resultSet = preparedStatement.executeQuery(); 而后在pg_stat_statements视图可以查询到该SQL的query id。 select queryid from pg_stat_statements where query like '%select pg_sleep%'; 通过查询到的query id添加限流规则。 select rds_pg_sql_ccl.add_ccl_rule_by_queryid($queryid); 通过上一条SQL的返回值(rule_id)使该规则生效。 select rds_pg_sql_ccl.enable_ccl_rule($rule_id); 从插件提供的get_all_enabled_rule视图可以获取到当前所有生效的限流规则。 select * from rds_pg_sql_ccl.get_all_enabled_rule;
-
创建规则 同一个数据库中,不能创建重复(query id相同)的限流规则;不同的数据库中,可以创建重复的限流规则。 规则创建后不会立刻生效,需要调用enable_ccl_rule函数让规则生效。 get_query_id函数获取不到绑定变量的SQL的queryid,add_ccl_rule_by_query限制不了绑定变量SQL。 绑定变量SQL的queryid可以通过pg_stat_statements插件获取,之后可以通过add_ccl_rule_by_queryid创建规则,可参考后续绑定变量SQL限流。
-
简介 高并发和消耗资源过多的SQL会导致实例不稳定,对此,RDS for PostgreSQL提供了限流能力,是由华为云自研插件rds_pg_sql_ccl实现,其中ccl是concurrent control的缩写,合理地使用SQL限流可以保障实例的稳定性,可以很好地做到性能优化和资源保护,应对的场景有: 业务量突增:通过限制某类SQL的执行保障实例的稳定性。 保障核心任务:通过限制其他SQL的执行从而降低资源的消耗保障核心任务的顺利完成。 该插件提供了两种限流方式: 方式1: 限制同一时刻同时执行SQL数量( 由rds_pg_sql_ccl.max_concurrent_sql参数控制,默认值为-1,即不限制)。 方式2: 限制某一类SQL(query id相同)同一时刻并发执行的数量,由限流规则控制,限流规则见下文。
-
支持的版本 PostgreSQL16.2, 15.4, 14.8, 13.11, 12.15, 11.20及以上的最新小版本支持该插件。可通过以下SQL语句查询当前实例是否支持该插件: SELECT * FROM pg_available_extension_versions WHERE name = 'rds_pg_sql_ccl'; 如果不支持,可通过升级内核小版本或者使用转储与还原升级大版本使用该插件。 RDS for PostgreSQL实例支持的插件,具体可参见支持的插件列表。
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格