云服务器内容精选

  • 约束与限制 仅支持Java函数。 如果应用函数强依赖于有状态,需要考虑使用Restore Hook进行状态刷新。 对于强依赖CPU指令集特性的函数,请先提前与客服确认。 依赖硬编码的host 环境(例如 hostname, 或者 hostip)的函数在迁移到其他主机上的时候,可能会有问题。建议避免依赖这些变量,请先提前与客服确认。 当前仅支持基于x86机器开发的应用。 该功能当前仅支持西南-贵阳一、土耳其-伊斯坦布尔。
  • 概述 华为云发布的基于进程级快照的冷启动加速方案,是一种性能优化服务,用户无需额外付费,只需进行简单的配置、少量的代码修改,即可享受到该创新方案带来的冷启动性能提升。 当用户 Java 函数打开冷启动加速的配置开关后,华为云 FunctionGraph 会预先执行函数对应的初始化代码,获取其初始化执行上下文环境的快照,并进行加密缓存。后续调用该函数并触发冷启动扩容时,会直接从提前初始化后的应用快照来恢复执行环境,而非重新走一遍初始化流程,以此达到极大提升启动性能的效果。
  • 操作步骤 登录 FunctionGraph 控制台,配置 Java 函数,并打开“快照式冷启动”开关。 (可选)配置 Restore Hook,并在函数代码中实现对应的 Hook 逻辑。 图1 开启Restore Hook 函数代码中Restore Hook示例如下: 函数发布新版本后,触发快照的自动化制作。 图2 发布新版本 请耐心等待快照制作完成(5min 超时时间)。 调用 Java 函数,体验快照优化后的性能提升。
  • 已冻结/冻结期满,配额被删除 当配额状态为“已冻结”时,或者冻结期满,配额被彻底删除后,HSS均不会再防护您的主机,您无法通过管理控制台清除SSH登录IP白名单。 清除配置的SSH登录IP白名单,操作步骤如下所示。 登录需要清除SSH登录IP白名单的云主机。 执行以下命令,查看“/etc/sshd.deny.hostguard”文件,如图1所示。 cat /etc/sshd.deny.hostguard 图1 查看文件内容 执行以下命令,打开“/etc/sshd.deny.hostguard”文件。 vim /etc/sshd.deny.hostguard 按“i”进入编辑模式,删除“ALL”。 按“Esc”退出编辑,输入“:wq”保存并退出。
  • 规则详情 表1 规则详情 参数 说明 规则名称 elb-members-weight-check 规则展示名 ELB后端服务器权重检查 规则描述 后端服务器的权重为0,且其所属的后端服务器组的负载均衡算法不为“SOURCE_IP”时,视为“不合规”。 标签 elb 规则触发方式 配置变更 规则评估的资源类型 elb.members 规则参数 weight:后端云服务器的权重,请求将根据后端服务器组配置的负载均衡算法和后端云服务器的权重进行负载分发。 权重值越大,分发的请求越多。 取值范围:0-100。
  • 评估由配置变更触发的示例函数 Config服务检测到自定义合规规则范围内的资源发生更改时,会调用函数的示例如下: import time import http.client from huaweicloudsdkcore.auth.credentials import GlobalCredentials from huaweicloudsdkcore.exceptions.exceptions import ConnectionException from huaweicloudsdkcore.exceptions.exceptions import RequestTimeoutException from huaweicloudsdkcore.exceptions.exceptions import ServiceResponseException from huaweicloudsdkconfig.v1.region.config_region import ConfigRegion from huaweicloudsdkconfig.v1.config_client import ConfigClient from huaweicloudsdkconfig.v1 import PolicyResource, PolicyStateRequestBody from huaweicloudsdkconfig.v1 import UpdatePolicyStateRequest ''' 合规规则评估逻辑: 返回“Compliant” 或 “NonCompliant” 本示例中, 当资源类型为ecs.cloudservers, 且该ecs的vpcId字段不是合规规则参数所指定的vpcId时, 会返回不合规, 否则返回合规。 ''' def evaluate_compliance(resource, parameter): if resource.get("provider") != "ecs" or resource.get("type") != "cloudservers": return "Compliant" vpc_id = resource.get("properties", {}).get("metadata", {}).get("vpcId") return "Compliant" if vpc_id == parameter.get("vpcId") else "NonCompliant" def update_policy_state(context, domain_id, evaluation): auth = GlobalCredentials(ak=context.getAccessKey(), sk=context.getSecretKey(), domain_id=domain_id) client = ConfigClient.new_builder() \ .with_credentials(credentials=auth) \ .with_region(region=ConfigRegion.value_of(region_id="cn-north-4")) \ .build() try: response = client.update_policy_state(evaluation) return 200 except ConnectionException as e: print("A connect timeout exception occurs while the Config performs some operations, exception: ", e.error_msg) return e.status_code except RequestTimeoutException as e: print("A request timeout exception occurs while the Config performs some operations, exception: ", e.error_msg) return e.status_code except ServiceResponseException as e: print("There is service error, exception: ", e.status_code, e.error_msg) return e.status_code def handler(event, context): domain_id = event.get("domain_id") resource = event.get("invoking_event", {}) parameters = event.get("rule_parameter") compliance_state = evaluate_compliance(resource, parameters) request_body = UpdatePolicyStateRequest(PolicyStateRequestBody( policy_resource = PolicyResource( resource_id = resource.get("id"), resource_name = resource.get("name"), resource_provider = resource.get("provider"), resource_type = resource.get("type"), region_id = resource.get("region_id"), domain_id = domain_id ), trigger_type = event.get("trigger_type"), compliance_state = compliance_state, policy_assignment_id = event.get("policy_assignment_id"), policy_assignment_name = event.get("policy_assignment_name"), evaluation_time = event.get("evaluation_time"), evaluation_hash = event.get("evaluation_hash") )) for retry in range(5): status_code = update_policy_state(context, domain_id, request_body) if status_code == http.client.TOO_MANY_REQUESTS: print("TOO_MANY_REQUESTS: retry again") time.sleep(1) elif status_code == http.client.OK: print("Update policyState successfully.") break else: print("Failed to update policyState.") break
  • 参考:配置委托权限 将账号的操作权限委托给DataArts Studio服务后,需要配置委托身份的权限,才可与其他服务进行交互。 为实现对权限较小化的安全管控要求,可根据作业中的节点类型,以服务为粒度,参见表1配置相应的服务Admin权限。 也可精确到具体服务的操作、资源以及请求条件等。根据作业中的节点类型,以对应服务API接口为粒度进行权限拆分,满足企业对权限最小化的安全管控要求。参见表2进行配置。例如包含Import GES节点的作业,您只需要创建自定义策略,并勾选ges:graph:getDetail(查看图详情),ges:jobs:getDetail(查询任务状态),ges:graph:access(使用图)这三个授权项即可。 当满足如下条件之一时,MRS集群才支持委托方式提交作业。 非安全集群。 安全集群,集群版本大于 2.1.0,并且安装了MRS 2.1.0.1及以上版本的补丁。 当MRS集群不支持委托方式提交作业时,如下节点相关作业不能配置委托。 MRS相关的节点(MRS Presto SQL、MRS Spark、MRS Spark Python、MRS Flink Job、 MRS MapReduce),以及通过API方式连接的(MRS Spark SQL、MRS Hive SQL)节点。 配置服务级Admin权限 因作业执行过程中,需要往OBS写执行日志信息,因此粗粒度授权时,所有作业都需要添加OBS OperateAccess权限。 表1 配置相关节点的admin权限 节点名称 系统权限 权限描述 CDM Job、DIS Stream、DIS Dump、DIS Client DAYU Administrator 数据治理中心服务的所有执行权限。 Import GES GES Administrator 图引擎服务的所有执行权限。该角色有依赖,需要在同项目中勾选依赖的角色:Tenant Guest、Server Administrator。 MRS Presto SQL、MRS Spark、MRS Spark Python、MRS Flink Job、 MRS MapReduce MRS Spark SQL、MRS Hive SQL(通过MRS API方式连接MRS集群的) MRS Administrator MRS Fullaccess KMS Administrator MRS Administrator:RBAC策略下MapReduce服务的所有执行权限。该角色有依赖,需要在同项目中勾选依赖的角色:Tenant Guest、Server Administrator。 MRS Fullaccess:细粒度策略下MRS管理员权限,拥有该权限的用户可以拥有MRS所有权限。 KMS Administrator:数据加密服务加密密钥的管理员权限。 MRS Spark SQL、MRS Hive SQL、MRS Kafka、Kafka Client(通过代理方式连接集群) DAYU Administrator KMS Administrator DAYU Administrator:数据治理中心服务的所有执行权限。 KMS Administrator:数据加密服务加密密钥的管理员权限。 DLI Flink Job、DLI SQL、DLI Spark DLI Service Admin 数据湖探索的所有执行权限。 DWS SQL、Shell、RDS SQL(通过代理方式连接数据源) DAYU Administrator KMS Administrator DAYU Administrator:数据治理中心服务的所有执行权限。 KMS Administrator:数据加密服务加密密钥的管理员权限。 CSS DAYU Administrator Elasticsearch Administrator DAYU Administrator:数据治理中心服务的所有执行权限。 Elasticsearch Administrator:云搜索服务的所有执行权限。该角色有依赖,需要在同项目中勾选依赖的角色:Tenant Guest、Server Administrator。 Create OBS、Delete OBS、OBS Manager OBS OperateAccess 查看桶、上传对象、获取对象、删除对象、获取对象ACL等对象基本操作权限 SMN SMN Administrator 消息通知服务的所有执行权限。 配置细粒度权限(根据各服务支持的授权项,创建自定义策略) 创建自定义策略的详细操作请参见创建自定义策略。 作业执行过程中,需要向OBS中写入执行日志。当采取精细化授权方式时,任何类型的作业均需要添加OBS的如下授权项: obs:bucket:GetBucketLocation obs:object:GetObject obs:bucket:CreateBucket obs:object:PutObject obs:bucket:ListAllMyBuckets obs:bucket:ListBucket CDM Job、DIS Stream、DIS Dump、DIS Client节点隶属于DataArts Studio模块,DataArts Studio不支持细粒度授权。因此包含这几类节点的作业,给服务配置权限仅支持DataArts Studio Administarator。 CSS不支持细粒度授权,且需要通过代理执行。因此包含这类节点的作业,需要配置DataArts Studio Administarator和Elasticsearch Administrator权限。 SMN不支持细粒度授权,因此包含这类节点的作业,需要配置SMN Administarator权限。 表2 自定义策略 节点名称 授权项 Import GES ges:graph:access ges:graph:getDetail ges:jobs:getDetail MRS Presto SQL、MRS Spark、MRS Spark Python、MRS Flink Job、 MRS MapReduce MRS Spark SQL、MRS Hive SQL(通过MRS API方式连接MRS集群的) mrs:job:delete mrs:job:stop mrs:job:submit mrs:cluster:get mrs:cluster:list mrs:job:get mrs:job:list kms:dek:crypto kms:cmk:get MRS Spark SQL、MRS Hive SQL、MRS Kafka、Kafka Client(通过代理方式连接集群) kms:dek:crypto kms:cmk:get DataArts Studio Administarator(角色) DLI Flink Job、DLI SQL、DLI Spark dli:jobs:get dli:jobs:update dli:jobs:create dli:queue:submit_job dli:jobs:list dli:jobs:list_all DWS SQL、Shell、RDS SQL(通过代理方式连接数据源) kms:dek:crypto kms:cmk:get DataArts Studio Administarator(角色) Create OBS、Delete OBS、OBS Manager obs:bucket:GetBucketLocation obs:bucket:ListBucketVersions obs:object:GetObject obs:bucket:CreateBucket obs:bucket:DeleteBucket obs:object:DeleteObject obs:object:PutObject obs:bucket:ListAllMyBuckets obs:bucket:ListBucket
  • 参考:创建委托 登录IAM服务控制台。 选择“委托”,单击“创建委托”。 设置“委托名称”。例如:DGC_agency。 在创建委托页面,委托类型选择“云服务”,云服务选择“数据湖治理中心DGC”,将操作权限委托给DataArts Studio,让DataArts Studio以您的身份使用其他云服务,代替您进行一些资源运维工作。 图3 创建委托 单击“下一步”,进入授权页面。 在授权页面中搜索“Tenant Administrator”策略,勾选“Tenant Administrator”策略并单击“下一步”。 因Tenant Administrator策略具有除统一身份认证服务IAM外,其他所有服务的所有执行权限。所以给委托服务DataArts Studio配置Tenant Administrator,可访问周边所有服务。 若您想达到对权限较小化的安全管控要求,Tenant Administrator可不配置,仅配置OBS OperateAccess权限(因作业执行过程中,需要往OBS写执行日志信息,因此需要添加 OBS OperateAccess权限)。然后再根据作业中的节点类型,配置不同的委托权限。例如某作业仅包含Import GES节点,可配置GES Administrator权限和OBS OperateAccess权限即可。详细方案请参考参考:配置委托权限。 图4 配置权限 单击“确定”完成委托创建。
  • 调度身份的分类 调度身份分为委托和IAM账户两大类。 委托:由于云各服务之间存在业务交互关系,一些云服务需要与其他云服务协同工作,需要您创建云服务委托,将操作权限委托给这些服务,让这些服务以您的身份使用其他云服务,代替您进行一些资源运维工作。 委托可以分为: 公共委托:工作空间级别的全局委托。适用于该空间内的所有作业。配置公共委托请参考配置公共委托。 作业委托:适用于单个作业级别。配置作业委托请参考配置作业委托。 IAM账号:通过用户组统一配置,权限管理相对于委托来说,流程简便;并且使用IAM账号的兼容性更好,可支持MRS相关的节点(MRS Presto SQL、MRS Spark、MRS Spark Python、MRS Flink Job、 MRS MapReduce),通过直连方式的(MRS Spark SQL、MRS Hive SQL)节点,以及目标端为DWS的ETL Job节点,解决部分MRS集群和部分ETL Job节点不支持委托方式提交作业的问题。 IAM账户可分为: 公共IAM账户:工作空间级别的全局IAM账户。适用于该空间内的所有作业。配置公共IAM账户请参考配置公共IAM账号。 执行用户:作业级别的IAM账户,适用于单个作业级别。配置执行用户请参考配置执行用户。
  • 录入EPS配置 进入运维中心工作台。 将鼠标悬停在右上角的账号,选择下拉列表中的“服务环境配置”,选择左侧导航栏的“服务关联”。 在项目配置区域,单击“新增”。 新增项目配置,具体参数如表1所示。 表1 项目配置参数 名称 说明 部门 选择已录入的部门。 产品 选择已录入的产品。 服务 选择已录入的服务。 华为公有云账号名 选择用户的华为云账号名。 类型 关联项目:关联已有的公有云EPS。 关联且新增项目:在公有云EPS创建一个新项目,同时进行关联。 企业项目名称 关联项目时,选择已有的公有云EPS。 关联且新增时,填写创建的企业项目名称。 单击“确定”。
  • 录入EPS配置 进入运维中心工作台。 将鼠标悬停在右上角的账号,选择下拉列表中的“服务环境配置”,选择左侧导航栏的“服务关联”。 在项目配置区域,单击“新增”。 新增项目配置,具体参数如表1所示。 表1 项目配置参数 名称 说明 部门 选择已录入的部门。 产品 选择已录入的产品。 服务 选择已录入的服务。 华为公有云账号名 选择用户的华为云账号名。 类型 关联项目:关联已有的公有云EPS。 关联且新增项目:在公有云EPS创建一个新项目,同时进行关联。 企业项目名称 关联项目时,选择已有的公有云EPS。 关联且新增时,填写创建的企业项目名称。 单击“确定”。
  • 支持配置的加密套件说明 WAF默认配置的加密套件为“加密套件1”,可以满足浏览器兼容性和安全性,各加密套件相关说明如表2所示。 表2 加密套件说明 加密套件名称 支持的加密算法 不支持的加密算法 说明 默认加密套件 说明: WAF默认给网站配置的是“加密套件1”,但是如果请求信息不携带sni信息,WAF就会选择缺省的“默认加密套件”。 ECDHE-RSA-AES256-SHA384 AES256-SHA256 RC4 HIGH MD5 aNULL eNULL NULL DH EDH AESGCM 兼容性:较好,支持的客户端较为广泛 安全性:一般 加密套件1 ECDHE-ECDSA-AES256-GCM-SHA384 HIGH MEDIUM LOW aNULL eNULL DES MD5 PSK RC4 kRSA 3DES DSS EXP CAMELLIA 推荐配置。 兼容性:较好,支持的客户端较为广泛 安全性:较高 加密套件2 EECDH+AESGCM EDH+AESGCM - 兼容性:一般,严格符合PCI DSS的FS要求,较低版本浏览器可能无法访问。 安全性:高 加密套件3 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES256-SHA384 RC4 HIGH MD5 aNULL eNULL NULL DH EDH 兼容性:一般,较低版本浏览器可能无法访问。 安全性:高,支持ECDHE、DHE-GCM、RSA-AES-GCM多种算法。 加密套件4 ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES256-SHA384 AES256-SHA256 RC4 HIGH MD5 aNULL eNULL NULL EDH 兼容性:较好,支持的客户端较为广泛 安全性:一般,新增支持GCM算法。 加密套件5 AES128-SHA:AES256-SHA AES128-SHA256:AES256-SHA256 HIGH MEDIUM LOW aNULL eNULL EXPORT DES MD5 PSK RC4 DHE 仅支持RSA-AES-CBC算法。 加密套件6 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-RSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES256-SHA384 ECDHE-RSA-AES256-SHA384 ECDHE-ECDSA-AES128-SHA256 ECDHE-RSA-AES128-SHA256 - 兼容性:一般 安全性:较好 WAF提供的加密套件对于高版本的浏览器及客户端都可以兼容,不能兼容部分老版本的浏览器。TLS版本不同,加密套件的浏览器或客户端兼容情况也不同。以TLS v1.0协议为例,加密套件的浏览器及客户端兼容性说明如表3所示。 建议您以实际客户端环境测试的兼容情况为准,避免影响现网业务。 表3 加密套件不兼容的浏览器/客户端参考说明(TLS v1.0) 浏览器/客户端 默认加密套件 加密套件1 加密套件2 加密套件3 加密套件4 加密套件5 加密套件6 Google Chrome 63 /macOS High Sierra 10.13.2 × √ √ √ × √ √ Google Chrome 49/ Windows XP SP3 × × × × × √ √ Internet Explorer 6/Windows XP × × × × × × × Internet Explorer 8/Windows XP × × × × × × × Safari 6/iOS 6.0.1 √ √ × √ √ √ √ Safari 7/iOS 7.1 √ √ × √ √ √ √ Safari 7/OS X 10.9 √ √ × √ √ √ √ Safari 8/iOS 8.4 √ √ × √ √ √ √ Safari 8/OS X 10.10 √ √ × √ √ √ √ Internet Explorer 7/Windows Vista √ √ × √ √ × √ Internet Explorer 8~10/Windows 7 √ √ × √ √ × √ Internet Explorer 10/Windows Phone 8.0 √ √ × √ √ × √ Java 7u25 √ √ × √ √ × √ OpenSSL 0.9.8y × × × × × × × Safari 5.1.9/OS X 10.6.8 √ √ × √ √ × √ Safari 6.0.4/OS X 10.8.4 √ √ × √ √ × √
  • 支持配置的最低TLS版本说明 WAF默认配置的最低TLS版本为“TLS v1.0”,为了确保网站安全,建议您根据业务实际需求进行配置,支持配置的最低TLS版本如表1所示。 表1 支持配置的最低TLS版本说明 场景 最低TLS版本(推荐) 防护效果 网站安全性能要求很高(例如,银行金融、证券、电子商务等有重要商业信息和重要数据的行业) TLS v1.2 WAF将自动拦截TLS v1.0和TLS v1.1协议的访问请求。 网站安全性能要求一般(例如,中小企业门户网站) TLS v1.1 WAF将自动拦截TLS1.0协议的访问请求。 客户端APP无安全性要求,可以正常访问网站 TLS v1.0 所有的TLS协议都可以访问网站。
  • MRS存算分离简介 MRS支持在大数据存储容量大、计算资源需要弹性扩展的场景下,用户将数据存储在OBS服务中,使用MRS集群仅作数据计算处理的存算分离模式,从而实现按需灵活扩展资源、低成本的海量数据分析方案。 大数据存算分离场景,请务必使用OBS并行文件系统(并行文件系统),使用普通对象桶会对集群性能产生较大影响。 存算分离功能使用流程: 配置存算分离集群。 请选择如下其中一种配置即可(推荐使用委托方式)。 通过为MRS集群绑定ECS委托方式访问OBS,避免了AK/SK直接暴露在配置文件中的风险,具体请参考配置存算分离集群(委托方式)。 在MRS集群中配置AK/SK,AK/SK会明文暴露在配置文件中,请谨慎使用,具体请参考配置存算分离集群(AKSK方式)。 MRS通过集群内的Guardian组件对接OBS,为其他组件提供获取访问OBS的临时认证凭据、细粒度权限控制的能力,具体请参考配置Guardian服务对接OBS。 目前仅MRS 3.3.0-LTS及之后的版本支持基于Guardian组件对接OBS,其他版本集群请参考MRS集群组件对接OBS(基于委托)相关章节进行配置。 基于Guardian存算分离管理面作业提交依赖JobGateway模式,不支持Executor模式。 使用存算分离集群。 在具备OBS资源的访问权限后,MRS集群内相关组件可通过客户端访问对应文件资源。 各组件访问OBS配置说明可参考如下内容: MRS集群组件对接OBS(基于委托) MRS集群组件对接OBS(基于Guardian) 父主题: 配置存算分离
  • 操作步骤 NVIDIA驱动安装。 wget https://us.download.nvidia.com/tesla/515.105.01/NVIDIA-Linux-x86_64-515.105.01.run chmod +x NVIDIA-Linux-x86_64-515.105.01.run ./NVIDIA-Linux-x86_64-515.105.01.run CUDA安装(可选,若在宿主机上不开发,可以忽略此步骤)。 wget https://developer.download.nvidia.com/compute/cuda/11.7.1/local_installers/cuda_11.7.1_515.65.01_linux.run chmod +x cuda_11.7.1_515.65.01_linux.run ./cuda_11.7.1_515.65.01_linux.run --toolkit --samples –silent 安装Docker。 curl https://get.docker.com | sh && sudo systemctl --now enable docker 安装NIVDIA容器插件。 distribution=$(. /etc/os-release;echo $ID$VERSION_ID) && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list apt-get update apt-get install -y nvidia-container-toolkit nvidia-ctk runtime configure --runtime=docker systemctl restart docker 验证Docker模式环境是否安装成功。 基于PyTorch2.0镜像验证(本案例中镜像较大,拉取时间可能较长)。 docker run -ti --runtime=nvidia --gpus all pytorch/pytorch:2.0.0-cuda11.7-cudnn8-devel bash 图1 成功拉取镜像