华为云用户手册

  • 什么是网页篡改&网页被篡改的后果 网页篡改是一种通过网页应用中的漏洞获取权限,通过非法篡改Web应用中的内容、植入暗链等,传播恶意信息,危害社会安全并牟取暴利的网络攻击行为。 如果网页被篡改,可能导致网页被植入色情、诈骗等非法信息的链接;发表反动言论,从而造成不良社会影响,损害企业品牌形象;对政府、高校、企事业单位等有影响力的单位来说,页面被恶意篡改将无意间成为传播危害社会安全等信息的帮凶,无形中错误引导大众,造成难以挽回的损失。
  • HSS和WAF的网页防篡改的区别 表1 HSS和WAF网页防篡改的区别 类别 HSS WAF 静态网页 锁定驱动级文件目录、Web文件目录下的文件,禁止攻击者修改。 缓存服务端静态网页 动态网页 动态数据防篡改 提供tomcat应用运行时自我保护,能够检测针对数据库等动态数据的篡改行为。 特权进程管理 配置特权进程白名单后,网页防篡改功能将主动放行可信任的进程,确保正常业务进程的运行。 不支持 备份恢复 主动备份恢复 若检测到防护目录下的文件被篡改时,将立即使用本地主机备份文件自动恢复被非法篡改的文件。 远端备份恢复 若本地主机上的文件目录和备份目录失效,可通过远端备份服务恢复被篡改的网页。 不支持 防护对象 支持预防篡改和恢复篡改能力,适用于对网站防护要求高的用户。 适用于对网站防护要求低,仅需要对应用层进行防护的用户。
  • 准备工作 在购买Web应用防火墙之前,请先注册华为账号并开通华为云。具体操作详见注册华为账号并开通华为云、实名认证。 如果您已开通华为云并进行实名认证,请忽略此步骤。 请保证账户有足够的资金,以免购买Web应用防火墙失败。具体操作详见账户充值。 请确保已为账号赋予相关WAF权限。具体操作请参见创建用户组并授权使用WAF。 表1 WAF系统角色 系统角色/策略名称 描述 类别 依赖关系 WAF Administrator Web应用防火墙服务的管理员权限。 系统角色 依赖Tenant Guest和Server Administrator角色。 Tenant Guest:全局级角色,在全局项目中勾选。 Server Administrator:项目级角色,在同项目中勾选。 WAF FullAccess Web应用防火墙服务的所有权限。 系统策略 无。 WAF ReadOnlyAccess Web应用防火墙的只读访问权限。 系统策略
  • 步骤二:将防护网站添加到WAF 添加防护网站前收集防护网站的配置信息: 表2 准备防护域名相关信息 获取信息 参数 说明 示例 域名是否使用代理 是否已使用代理 七层代理:使用了DDoS高防(七层代理)、CDN、云加速等Web代理产品。 四层代理:使用了DDoS高防(四层转发)等Web代理产品。 无代理:未使用任何代理产品。 无代理 配置参数 防护域名 由一串用点分隔的英文字母组成(以字符串的形式来表示服务器IP),用户通过域名来访问网站。 www.example.com 防护域名端口 需要防护的域名对应的业务端口。 标准端口 80:HTTP对外协议默认使用端口 443:HTTPS对外协议默认使用端口 非标准端口 80/443以外的端口 80 对外协议 客户端(例如浏览器)请求访问网站的协议类型。WAF支持“HTTP”、“HTTPS”两种协议类型。 HTTP 源站协议 WAF转发客户端(例如浏览器)请求的协议类型。包括“HTTP”、“HTTPS”两种协议类型。 HTTP 源站地址 客户端(例如浏览器)访问网站所在源站服务器的公网IP地址(一般对应该域名在DNS服务商处配置的A记录)或者域名(一般对应该域名在DNS服务商处配置的CNAME)。 XXX.XXX.1.1 (可选)证书 证书名称 对外协议选择“HTTPS”时,需要在WAF上配置证书,将证书绑定到防护域名。 须知: WAF当前仅支持PEM格式证书。如果证书为非PEM格式,请参考如何将非PEM格式的证书转换为PEM格式?转化证书格式。 - 具体操作请参见将网站接入WAF防护(云模式-CNAME接入)。
  • 步骤二:将防护网站添加到WAF 添加防护网站前收集防护网站的配置信息: 表2 准备防护域名相关信息 获取信息 参数 说明 示例 域名是否使用代理 是否已使用代理 七层代理:使用了DDoS高防(七层代理)、CDN、云加速等Web代理产品。 四层代理:使用了DDoS高防(四层转发)等Web代理产品。 无代理:未使用任何代理产品。 无代理 配置参数 防护域名 由一串用点分隔的英文字母组成(以字符串的形式来表示服务器IP),用户通过域名来访问网站。 www.example.com 防护域名端口 需要防护的域名对应的业务端口。 标准端口 80:HTTP对外协议默认使用端口 443:HTTPS对外协议默认使用端口 非标准端口 80/443以外的端口 80 对外协议 客户端(例如浏览器)请求访问网站的协议类型。WAF支持“HTTP”、“HTTPS”两种协议类型。 HTTP 源站协议 WAF转发客户端(例如浏览器)请求的协议类型。包括“HTTP”、“HTTPS”两种协议类型。 HTTP 源站地址 客户端(例如浏览器)访问网站所在源站服务器的公网IP地址(一般对应该域名在DNS服务商处配置的A记录)或者域名(一般对应该域名在DNS服务商处配置的CNAME)。 XXX.XXX.1.1 (可选)证书 证书名称 对外协议选择“HTTPS”时,需要在WAF上配置证书,将证书绑定到防护域名。 须知: WAF当前仅支持PEM格式证书。如果证书为非PEM格式,请参考如何将非PEM格式的证书转换为PEM格式?转化证书格式。 - 具体操作请参见将网站接入WAF防护(云模式-CNAME接入)。
  • 准备工作 在购买Web应用防火墙之前,请先注册华为账号并开通华为云。具体操作详见注册华为账号并开通华为云、实名认证。 如果您已开通华为云并进行实名认证,请忽略此步骤。 请保证账户有足够的资金,以免购买Web应用防火墙失败。具体操作详见账户充值。 请确保已为账号赋予相关WAF权限。具体操作请参见创建用户组并授权使用WAF。 表1 WAF系统角色 系统角色/策略名称 描述 类别 依赖关系 WAF Administrator Web应用防火墙服务的管理员权限。 系统角色 依赖Tenant Guest和Server Administrator角色。 Tenant Guest:全局级角色,在全局项目中勾选。 Server Administrator:项目级角色,在同项目中勾选。 WAF FullAccess Web应用防火墙服务的所有权限。 系统策略 无。 WAF ReadOnlyAccess Web应用防火墙的只读访问权限。 系统策略
  • 基本概念 账号 用户注册时的账号,账号对其所拥有的资源及云服务具有完全的访问权限,可以重置用户密码、分配用户权限等。由于账号是付费主体,为了确保账号安全,建议您不要直接使用账号进行日常管理工作,而是创建用户并使用他们进行日常管理工作。 用户 由账号在IAM中创建的用户,是云服务的使用人员,具有身份凭证(密码和访问密钥)。 在我的凭证下,您可以查看账号ID和IAM用户ID。通常在调用API的鉴权过程中,您需要用到账号、用户和密码等信息。 区域(Region) 从地理位置和网络时延维度划分,同一个Region内共享弹性计算、块存储、对象存储、VPC网络、弹性公网IP、镜像等公共服务。Region分为通用Region和专属Region,通用Region指面向公共租户提供通用云服务的Region;专属Region指只承载同一类业务或只面向特定租户提供业务服务的专用Region。 详情请参见区域和可用区。 可用区(AZ,Availability Zone) AZ是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 项目 区域默认对应一个项目,这个项目由系统预置,用来隔离物理区域间的资源(计算资源、存储资源和网络资源),以默认项目为单位进行授权,用户可以访问您账号中该区域的所有资源。如果您希望进行更加精细的权限控制,可以在区域默认的项目中创建子项目,并在子项目中购买资源,然后以子项目为单位进行授权,使得用户仅能访问特定子项目中资源,使得资源的权限控制更加精确。 图1 项目隔离模型 父主题: 使用前必读
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 certificates Array of CertificateDetail objects 证书列表,详情请参见CertificateDetail字段数据结构说明。 数组长度:0 - 1000 total_count Integer 证书数量。 最小值:0 最大值:10000 表4 CertificateDetail 参数 参数类型 描述 id String 证书id。 最小长度:16 最大长度:16 name String 证书名称。 最大值:63 最小长度:3 domain String 证书绑定的域名。 最小长度:1 最大长度:255 sans String 多域名证书绑定的附加域名。 最小长度:1 最大长度:4096 signature_algorithm String 签名算法。 最小长度:0 最大长度:64 deploy_support Boolean 是否支持部署。 type String 证书类型。取值如下: DV_SSL_CERT、DV_SSL_CERT_BASIC、EV_SSL_CERT、 EV_SSL_CERT_PRO、OV_SSL_CERT、OV_SSL_CERT_PRO 最小长度:1 最大长度:128 brand String 证书品牌。取值如下:GLOBALSIGN、SYMANTEC、GEOTRUST、CFCA 最小长度:1 最大长度:255 expire_time String 证书过期时间。 最小长度:1 最大长度:32 domain_type String 域名类型。取值如下: SINGLE_DOMAIN:单域名 WILDCARD:通配符 MULTI_DOMAIN:多域名 最小长度:1 最大长度:128 validity_period Integer 证书有效期,按月为单位。云证书管理服务提供了一种购买多年有效期证书的解决方案,这种多年有效期证书生效方式为多张有效期为1年的SSL证书叠加生效,例如:有效期为“3年”的证书实际包含3张有效期为1年且规格相同的SSL证书,在第一张证书到期前30天,系统自动以第一张证书的信息申请第二张证书,在第二张证书到期前30天,系统自动以第一张证书的信息申请第三张证书。 最小值:12 最大值:12 status String 证书状态,取值如下: PAID:证书已支付;待申请证书。 ISSUED:证书已签发。 CHECKING:证书申请审核中。 CANCELCHECKING:取消证书申请审核中。 UNPASSED:证书申请未通过。 EXPIRED:证书已过期。 REVOKING:证书吊销申请审核中。 CANCLEREVOKING:证书取消吊销申请审核中。 REVOKED:证书已吊销。 UPLOAD:证书托管中。 SUPPLEMENTCHECKING:多域名证书新增附加域名审核中。 CANCELSUPPLEMENTING:取消新增附加域名审核中。 最小长度:0 最大长度:64 domain_count Integer 证书可绑定域名个数。 最小值:1 最大值:100 wildcard_count Integer 证书可绑定泛域名个数。 最小值:0 最大值:100 description String 证书描述。 最小长度:0 最大长度:255 enterprise_project_id String 企业项目ID,默认为“0”。 对于开通企业项目的用户,表示资源处于默认企业项目下。 对于未开通企业项目的用户,表示资源未处于企业项目下。 最小长度:0 最大长度:36 状态码: 401 表5 响应Body参数 参数 参数类型 描述 error_code String 错误请求返回的错误码。 最小长度:3 最大长度:36 error_msg String 错误请求返回的错误信息。 最小长度:0 最大长度:1024 状态码: 403 表6 响应Body参数 参数 参数类型 描述 error_code String 错误请求返回的错误码。 最小长度:3 最大长度:36 error_msg String 错误请求返回的错误信息。 最小长度:0 最大长度:1024 状态码: 500 表7 响应Body参数 参数 参数类型 描述 error_code String 错误请求返回的错误码。 最小长度:3 最大长度:36 error_msg String 错误请求返回的错误信息。 最小长度:0 最大长度:1024
  • 响应示例 状态码: 200 正常返回。 { "certificates" : [ { "id" : "scs1554192131150", "name" : "test", "domain" : "www.zx.com", "sans" : "a.zx.com;b.zx.com", "type" : "OV_SSL_CERT", "deploy_support" : true, "signature_algorithm" : "SHA256WITHRSA", "brand" : "GEOTRUST", "expire_time" : "2021-05-27 16:46:25.0", "domain_type" : "MULTI_DOMAIN", "validity_period" : 12, "status" : "ISSUED", "domain_count" : 2, "wildcard_count" : 0, "description" : null } ], "total_count" : 1 } 状态码: 401 认证失败。 { "error_code" : "SCM.XXX", "error_msg" : "XXX" } 状态码: 403 禁止访问。 { "error_code" : "SCM.XXX", "error_msg" : "XXX" } 状态码: 500 请求未完成,服务器内部异常。 { "error_code" : "SCM.XXX", "error_msg" : "XXX" }
  • URI GET /v3/scm/certificates 表1 Query参数 参数 是否必选 参数类型 描述 limit 否 Integer 每页条目数量,取值如下: 10:每页显示10条证书信息。 20:每页显示20条证书信息。 50:每页显示50条证书信息。 最小值:10 最大值:50 缺省值:10 offset 否 Integer 偏移量。 最小值:0 缺省值:0 sort_dir 否 String 排序方式。根据排序参数sort_key进行排序,取值如下: ASC:升序。 DESC:降序。 缺省值:DESC 最小长度:0 最大长度:32 sort_key 否 String 排序依据参数,取值如下: certExpiredTime:证书到期时间。 certStatus:证书状态。 certUpdateTime:证书更新时间。 缺省值:certUpdateTime 最小长度:0 最大长度:64 status 否 String 证书状态,取值如下: ALL:所有证书状态。 PAID:证书已支付,待申请证书。 ISSUED:证书已签发。 CHECKING:证书申请审核中。 CANCELCHECKING:取消证书申请审核中。 UNPASSED:证书申请未通过。 EXPIRED:证书已过期。 REVOKING:证书吊销申请审核中。 REVOKED:证书已吊销。 UPLOAD:证书托管中。 CHECKING_ORG:待完成企业资格认证。 ISSUING:证书待签发。 SUPPLEMENTCHECKING:多域名证书新增附加域名审核中。 缺省值:ALL 最小长度:0 最大长度:64 enterprise_project_id 否 String 企业多项目ID。用户未开通企业多项目时,不需要输入该字段。 用户开通企业多项目时,查询资源可以输入该字段。 若用户不输入该字段,默认查询租户所有有权限的企业多项目下的资源。 此时“enterprise_project_id”取值为“all”。 若用户输入该字段,取值满足以下任一条件. 取值为“all” 取值为“0” 满足正则匹配:“^[0-9a-z]{8}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{12}$” 缺省值:all 最小长度:0 最大长度:64 deploy_support 否 Boolean 是否仅筛选支持部署的证书。 缺省值:false
  • 设置开机自动挂载磁盘分区 您可以通过配置fstab文件,设置弹性云服务器系统启动时自动挂载磁盘分区。已有数据的弹性云服务器也可以进行设置,该操作不会影响现有数据。 本文介绍如何在fstab文件中使用UUID来设置自动挂载磁盘分区。不建议采用在“/etc/fstab”直接指定设备名(比如/dev/vdb1)的方法,因为云中设备的顺序编码在关闭或者开启弹性云服务器过程中可能发生改变,例如/dev/vdb1可能会变成/dev/vdb2,可能会导致弹性云服务器重启后不能正常运行。 UUID(universally unique identifier)是Linux系统为磁盘分区提供的唯一的标识字符串。 执行如下命令,查询磁盘分区的UUID。 blkid 磁盘分区 以查询磁盘分区“/dev/vdb1”的UUID为例: blkid /dev/vdb1 回显类似如下信息: [root@ecs-test-0001 ~]# blkid /dev/vdb1 /dev/vdb1: UUID="0b3040e2-1367-4abb-841d-ddb0b92693df" TYPE="ext4" 记录下回显中磁盘分区“/dev/vdb1”的UUID,方便后续步骤使用。 执行以下命令,使用VI编辑器打开“fstab”文件。 vi /etc/fstab 按“i”,进入编辑模式。 将光标移至文件末尾,按“Enter”,添加如下内容。 UUID=0b3040e2-1367-4abb-841d-ddb0b92693df /mnt/sdc ext4 defaults 0 2 以上内容仅为示例,具体请以实际情况为准,参数说明如下: 第一列为UUID,此处填写1中查询到的磁盘分区的UUID。 第二列为磁盘分区的挂载目录,可以通过df -TH命令查询。 第三列为磁盘分区的文件系统格式, 可以通过df -TH命令查询。 第四列为磁盘分区的挂载选项,此处通常设置为defaults即可。 第五列为Linux dump备份选项。 0表示不使用Linux dump备份。现在通常不使用dump备份,此处设置为0即可。 1表示使用Linux dump备份。 第六列为fsck选项,即开机时是否使用fsck检查磁盘。 0表示不检验。 挂载点为(/)根目录的分区,此处必须填写1。 根分区设置为1,其他分区只能从2开始,系统会按照数字从小到大依次检查下去。 按“ESC”后,输入“:wq”,按“Enter”。 保存设置并退出编辑器。 执行以下步骤,验证自动挂载功能。 执行如下命令,卸载已挂载的分区。 umount 磁盘分区 命令示例: umount /dev/vdb1 执行如下命令,将“/etc/fstab”文件所有内容重新加载。 mount -a 执行如下命令,查询文件系统挂载信息。 mount | grep 挂载目录 命令示例: mount | grep /mnt/sdc 回显类似如下信息,说明自动挂载功能生效: root@ecs-test-0001 ~]# mount | grep /mnt/sdc /dev/vdb1 on /mnt/sdc type ext4 (rw,relatime,data=ordered)
  • 操作场景 通过云服务管理控制台扩容成功后,仅扩大了云硬盘的存储容量,因此需要参考本章节操作扩展分区和文件系统。 对于Linux操作系统而言,需要将扩容部分的容量划分至已有分区内,或者为扩容部分的云硬盘分配新的分区。 本文以“CentOS 7.4 64位”操作系统为例,提供针对SCSI数据盘的MBR分区的操作指导。不同操作系统的操作可能不同,本文仅供参考,具体操作步骤和差异请参考对应操作系统的产品文档。 新增MBR分区 扩大已有MBR分区 扩容时请谨慎操作,误操作可能会导致数据丢失或者异常,建议扩容前对数据进行备份,可以使用CBR或者快照功能,CBR请参见管理备份云硬盘,快照功能请参见创建快照(公测)。 当操作系统内核低于3.6.0时,扩大已有MBR分区需要reboot重启,扩展分区和文件系统才会生效,会中断业务。reboot重启后,新增容量会自动扩展至系统盘末尾分区内。 如果您不希望重启弹性云服务器来扩展分区和文件系统,您可以先将该数据盘中的业务数据迁移至弹性云服务器中的其他磁盘,然后卸载该数据盘,并将其挂载至其他内核大于3.6.0的弹性云服务器上来扩展磁盘分区和文件系统,扩展完成后再将其挂载回原始弹性云服务器,最后再将业务数据迁移回该磁盘。迁移数据有风险,请提前做好备份。扩容内核大于3.6.0的弹性云服务器上的分区和文件系统请参见扩展磁盘分区和文件系统(Linux)。
  • 操作步骤 使用root用户登录云服务器。 执行以下命令,查看RAID阵列的UUID等信息。 mdadm --detail --scan 回显类似如下信息: [root@ecs-raid10 ~]# mdadm --detail --scan ARRAY /dev/md0 metadata=1.2 name=ecs-raid10.novalocal:0 UUID=f400dbf9:60d211d9:e006e07b:98f8758c 执行以下步骤,在mdadm文件中添加新建RAID阵列的信息。 执行以下命令,打开“mdadm.conf”文件。 vi /etc/mdadm.conf 按“i”进入编辑模式。 参考以下示例,在文件最后添加如下配置: DEVICE /dev/vdb /dev/vdc /dev/vdd /dev/vde ARRAY /dev/md0 metadata=1.2 name=ecs-raid10.novalocal:0 UUID=f400dbf9:60d211d9:e006e07b:98f8758c 说明如下: DEVICE行:为组建RAID阵列的磁盘设备名,多个磁盘设备名以空格隔开。 ARRAY行:此处填写2中查到的RAID阵列信息。 此处仅为本示例的信息,请根据RAID阵列的实际信息添加。 按“Esc”,输入“:wq!”,并按“Enter”。 保存设置并退出vi编辑器。 执行以下命令,查看“mdadm.conf”文件是否修改成功。 more /etc/mdadm.conf 回显类似如下信息: [root@ecs-raid10 ~]# more /etc/mdadm.conf DEVICE /dev/vdb /dev/vdc /dev/vdd /dev/vde ARRAY /dev/md0 metadata=1.2 name=ecs-raid10.novalocal:0 UUID=f400dbf9:60d211d9:e006e07b:98f8758c 可以看到3中添加的信息,表示修改成功。
  • 操作步骤 使用root用户登录云服务器。 执行以下命令,查看磁盘并记录设备名称。 fdisk -l | grep /dev/vd | grep -v vda 回显类似如下信息: [root@ecs-raid10 ~]# fdisk -l | grep /dev/vd | grep -v vda Disk /dev/vdb: 10.7 GB, 10737418240 bytes, 20971520 sectors Disk /dev/vdc: 10.7 GB, 10737418240 bytes, 20971520 sectors Disk /dev/vdd: 10.7 GB, 10737418240 bytes, 20971520 sectors Disk /dev/vde: 10.7 GB, 10737418240 bytes, 20971520 sectors 可以看到云服务器上挂载的4块磁盘,设备名称分别为“/dev/vdb”、“/dev/vdc”、“/dev/vdd”和“/dev/vde”。 执行以下命令,安装mdadm工具。 yum install mdadm -y mdadm是Linux下的RAID管理工具,务必确保安装mdadm工具的云服务器已开通弹性公网IP。 回显类似如下信息: [root@ecs-raid10 ~]# yum install mdadm -y ...... Installed: mdadm.x86_64 0:4.0-13.el7 Dependency Installed: libreport-filesystem.x86_64 0:2.1.11-40.el7.centos Complete! 执行以下命令,使用2中查到的4块磁盘创建RAID阵列。 mdadm -Cv RAID阵列设备名 -a yes -n 磁盘数量 -l RAID级别 磁盘1设备名 磁盘2设备名 磁盘3设备名 磁盘4设备名... 参数说明如下: RAID阵列设备名:可自定义,此处以/dev/md0为例。 磁盘数量:根据实际情况填写,此处RAID10至少为4块。 不同的RAID阵列要求的最小磁盘数量不同,具体说明请参见方案概述。 RAID级别:根据实际情况填写,此处以RAID10为例。 磁盘设备名:此处需要填写待组建RAID阵列的所有磁盘设备名,中间以空格隔开。 命令示例: mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/vdb /dev/vdc /dev/vdd /dev/vde 回显类似如下信息: [root@ecs-raid10 ~]# mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/vdb /dev/vdc /dev/vdd /dev/vde mdadm: layout defaults to n2 mdadm: layout defaults to n2 mdadm: chunk size defaults to 512K mdadm: size set to 10476544K mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started. 执行以下命令,格式化新建的RAID阵列。 mkfs.文件格式 RAID阵列设备名 命令示例: mkfs.ext4 /dev/md0 回显类似如下信息: [root@ecs-raid10 ~]# mkfs.ext4 /dev/md0 mke2fs 1.42.9 (28-Dec-2013) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=128 blocks, Stripe width=256 blocks 1310720 inodes, 5238272 blocks 261913 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=2153775104 160 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done 执行以下命令,创建挂载目录。 mkdir 挂载目录 命令示例: mkdir /RAID10 执行以下命令,挂载RAID阵列设备名。 mount RAID阵列设备名 挂载目录 命令示例: mount /dev/md0 /RAID10 执行以下命令,查看RAID阵列的挂载结果。 df -h 回显类似如下信息: [root@ecs-raid10 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/vda2 39G 1.5G 35G 5% / devtmpfs 911M 0 911M 0% /dev tmpfs 920M 0 920M 0% /dev/shm tmpfs 920M 8.6M 911M 1% /run tmpfs 920M 0 920M 0% /sys/fs/cgroup /dev/vda1 976M 146M 764M 17% /boot tmpfs 184M 0 184M 0% /run/user/0 /dev/md0 20G 45M 19G 1% /RAID10 执行以下步骤,设置云服务器系统启动时自动挂载RAID阵列。 执行以下命令,打开“/etc/fstab”文件。 vi /etc/fstab 按“i”进入编辑模式。 回显类似如下信息: [root@ecs-raid10 ~]# vi /etc/fstab # # /etc/fstab # Created by anaconda on Tue Nov 7 14:28:26 2017 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=27f9be47-838b-4155-b20b-e4c5e013cdf3 / ext4 defaults 1 1 UUID=2b2000b1-f926-4b6b-ade8-695ee244a901 /boot ext4 defaults 1 2 参考以下示例,在文件的最后一行添加如下配置: /dev/md0 /RAID10 ext4 defaults 0 0 按“Esc”,输入“:wq!”,并按“Enter”。 保存设置并退出vi编辑器。 执行以下命令,查看磁盘RAID阵列的信息。 mdadm -D RAID阵列设备名 命令示例: mdadm -D /dev/md0 回显类似如下信息: [root@ecs-raid10 ~]# mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Thu Nov 8 15:49:02 2018 Raid Level : raid10 Array Size : 20953088 (19.98 GiB 21.46 GB) Used Dev Size : 10476544 (9.99 GiB 10.73 GB) Raid Devices : 4 Total Devices : 4 Persistence : Superblock is persistent Update Time : Thu Nov 8 16:15:11 2018 State : clean Active Devices : 4 Working Devices : 4 Failed Devices : 0 Spare Devices : 0 Layout : near=2 Chunk Size : 512K Consistency Policy : resync Name : ecs-raid10.novalocal:0 (local to host ecs-raid10.novalocal) UUID : f400dbf9:60d211d9:e006e07b:98f8758c Events : 19 Number Major Minor RaidDevice State 0 253 16 0 active sync set-A /dev/vdb 1 253 32 1 active sync set-B /dev/vdc 2 253 48 2 active sync set-A /dev/vdd 3 253 64 3 active sync set-B /dev/vde
  • 监控指标 表1 站点监控指标说明 指标ID 监控指标 说明 round_trip_time 响应时间 响应时间指站点对用户的请求做出的反应时间,即探测点和站点建立连接完成到探测点收到响应消息第一个字节的时间。 单位:毫秒。 availability 可用性 可用性指标以小时为周期进行统计,开通监控后,1小时后可查看可用性监控图表。 可用性 =(每小时探测的总次数 - 每小时返回异常状态次数)/ 每小时探测的总次数 * 100%。 packet_loss_rate 丢包率 丢包率是数据包丢失部分与所传数据包总数的比值。 http_code HTTP响应码 HTTP响应码代表服务端反馈的响应状态,即标准的HTTP状态码。是用3位数字表示网页服务器超文本传输协议响应的状态。如:2xx代表成功处理请求,3xx代表请求被重定向,4xx代表请求错误等。 probe_point_success_count 可用探测点数量 该指标用于统计正常状态探测点的个数。 probe_point_success_rate 可用探测点百分比 该指标用于统计可用探测点的百分比。 可用探测点百分比 = 正常状态的探测点个数 / 所有探测点个数 * 100% 响应时间、可用性、可用探测点数量、可用探测点百分比适用于HTTP(S)、TCP、UDP、PING探测协议,丢包率仅适用于PING探测协议,HTTP响应码仅适用于HTTP(S)探测协议。 后续会支持POP3、SMTP、DNS、FTP等标准网络协议的互联网服务可用性。
  • 开启调试 在开发过程中可以启用调试模式,借助控制台日志实时查看上报日志的记录情况,观察具体结果并根据需要进行调整。 在初始化LTSSDK之前,调用类方法+(void)setLogLevel:(LTSLoggerLevel)logLevel设置调试级别:Debug、Info、Warn、Error、Off。 Objective-C语言示例代码: #ifdef DEBUG [LTSSDK setLogLevel:LTSLoggerLevelDebug]; #endif
  • 配置参数说明 表4 初始化参数说明 参数名称 类型 是否必填 默认值 描述 projectId NSString 必填 - 华为云账号的项目ID。 accessKey NSString 必填 - 华为云账号的访问密钥,简称AK。注意:硬编码到代码中或者明文存储都有很大的安全风险,建议密文存放,使用时解密,确保安全。 secretKey NSString 必填 - 华为云账号的秘密访问密钥,简称SK。注意:硬编码到代码中或者明文存储都有很大的安全风险,建议密文存放,使用时解密,确保安全。 region NSString 必填 - LTS的服务区域。 groupId NSString 必填 - LTS的日志组ID。 streamId NSString 必填 - LTS的日志流ID。 url NSString 选填 nil 用于上报的公网地址域名,支持带端口号,比如:https://lts-access.cn-north-4.myhuaweicloud.com:443;如未设置url,将根据region自动生成链接,格式如下:https://lts-access.{region}.myhuaweicloud.com cacheThreshold NSUInteger 选填 200条 当本地数据库日志存储条数达到该值会触发上报,取值范围为30-1000条。 timeInterval NSUInteger 选填 3秒 定时器每隔该值会触发上报,取值范围为1-1800秒。 reportWhenEnterBackgroundEnabled BOOL 选填 YES 是否开启APP切后台上报功能。 reportWhenAPPLaunchEnabled BOOL 选填 NO 是否开启APP启动时上报功能。如需开启,请在UIApplicationDidFinishLaunchingNotification通知发送前完成配置。
  • 版本更新说明 SDK如何处理个人信息请参考华为云日志服务移动端日志采集SDK隐私声明。 您集成和使用我们的SDK时需要遵从个人信息保护基本要求,详情请参考华为云日志服务移动端日志采集SDK开发者合规指南。 表1 版本更新说明 版本号 更新说明 系统 1.0.27 优化性能。 iOS10、Xcode11及以上 1.0.26 优化性能。 iOS10、Xcode11及以上 1.0.24 支持更多region:华东-上海一、华南-广州。 优化内存使用、日志发送等。 iOS10、Xcode11及以上 1.0.21 优化初始化函数initWithConfig。 为配置函数config添加废弃声明。 iOS10、Xcode11及以上 1.0.19 调整配置项阈值。 修复兼容性问题。 iOS10、Xcode11及以上 1.0.18 增加设置调试日志级别接口:setLogLevel。 在控制台输出配置项、上报接口参数、请求发送内容。 上报接口参数labels支持嵌套。 请求发送控制、数据库大小限制等优化。 iOS10、Xcode11及以上 1.0.15 首次发布,提供四个接口:初始化 initWithConfig、配置 config、上报日志 report、立即上报日志 reportImmediately。 iOS10、Xcode11及以上。
  • 接入调试 在开发过程中可以启用调试模式,借助控制台日志实时查看上报日志的记录情况,观察具体结果并根据需要进行调整。 需要通过调用LTSSDK的静态方法来修改,SDK支持Debug、Info、Warning 、 Error 和 Off 5个级别的 默认为静默输出(Off)。5个级别分别对应的参数:LogLevel.DEBUG、LogLevel.INFO、LogLevel.WARNING、LogLevel.ERROR、LogLevel.OFF。代码示例如下: LTSSDK.setLogLevel(LogLevel.DEBUG)
  • 版本更新说明 SDK如何处理个人信息请参考华为云日志服务移动端日志采集SDK隐私声明。 您集成和使用我们的SDK时需要遵从个人信息保护基本要求,详情请参考华为云日志服务移动端日志采集SDK开发者合规指南。 表1 版本更新说明 版本号 更新说明 系统 1.0.26 修复了因异步修改入参导致数据异常的问题 Android 7 及以上 1.0.25 增强代码强壮性,添加参数保护 Android 7 及以上 1.0.24 支持更多region:华东-上海一、华南-广州 修改了程序目录,修改为com.cloud.lts.* Android 7 及以上 1.0.21 废弃setconfig方法,使用LTSSDK的构造方法代替。 Android 7 及以上 1.0.19 修改了上报时间间隔阈值。 修复了修改配置信息后导致无法获取缓存的问题。 Android 7 及以上 1.0.18 增强代码强壮性,修复多实例时可能会产生的崩溃。 修复最低 Android API 支持版本定义错误的问题。 增加设置调试日志级别接口:setLogLevel。 修改了 日志发送的入参 label 的类型,支持多层嵌套。 日志发送入参 content 支持数组类型,方便使用。 添加缓存存储条目最大值支持,如果超过会丢弃后再存储。 修改了请求失败时的控制策略,支持递进式等待。 对本地错误日志输出做了整理。 Android 7 及以上 1.0.17 首次发布,提供四个接口:初始化、配置config、上报日志report、立即上报日志reportImmediately。 Android 7 及以上
  • 配置参数说明 表4 初始化参数说明 参数名称 类型 是否必填 默认值 描述 projectId String 必填 - 华为云账号的项目ID。 accessKey String 必填 - 华为云账号的访问密钥,简称AK。注意:认证用的华为云账号AK、SK硬编码到代码中或者明文存储都有很大的安全风险,建议密文存放,使用时解密,确保安全。 secretKey String 必填 - 华为云账号的秘密访问密钥,简称SK。注意:认证用的华为云账号AK、SK硬编码到代码中或者明文存储都有很大的安全风险,建议密文存放,使用时解密,确保安全。 region String 必填 - LTS的服务区域。 groupId String 必填 - LTS的日志组ID。 streamId String 必填 - LTS的日志流ID。 url String 选填 null 用于上报的公网地址域名,如未设置,将根据region自动生成链接,格式如下:https://lts-access.{region}.myhuaweicloud.com cacheThreshold Long 选填 200条 当本地数据库日志存储条数达到该值会触发上报,取值范围为30-1000条。 timeInterval Long 选填 3秒 定时器每隔该值会触发上报,取值范围为1-1800秒。 isReportBackground boolean 选填 true 是否开启APP切入后台时上报功能。 isReportLaunch boolean 选填 false 是否开启APP启动时上报功能。
  • Hive JDBC驱动的加载 客户端程序以JDBC的形式连接HiveServer时,需要首先加载Hive的JDBC驱动类org.apache.hive.jdbc.HiveDriver。 故在客户端程序的开始,必须先使用当前类加载器加载该驱动类。 如果classpath下没有相应的jar包,则客户端程序抛出Class Not Found异常并退出。 如下: Class.forName("org.apache.hive.jdbc.HiveDriver").newInstance();
  • 关闭数据库连接 客户端程序在执行完HQL之后,注意关闭数据库连接,以免内存泄露,同时这是一个良好的编程习惯。 需要关闭JDK的两个对象statement和connection。 如下: finally { if (null != statement) { statement.close(); } // 关闭JDBC连接 if (null != connection) { connection.close(); } }
  • 使用WebHCat的REST接口以Streaming方式提交MR任务的前置条件 本接口需要依赖hadoop的streaming包,在以Streaming方式提交MR任务给WebHCat前,需要将“hadoop-streaming-2.7.0.jar”包上传到HDFS的指定路径下:“hdfs:///apps/templeton/hadoop-streaming-2.7.0.jar”。首先登录到安装有客户端和Hive服务的节点上,以客户端安装路径为“/opt/client”为例: source /opt/client/bigdata_env 使用kinit登录人机用户或者机机用户。 hdfs dfs -put ${BIGDATA_HOME}/FusionInsight_HD_8.1.0.1/FusionInsight-Hadoop-*/hadoop/share/hadoop/tools/lib/hadoop-streaming-*.jar /apps/templeton/ 其中/apps/templeton/需要根据不同的实例进行修改,默认实例使用/apps/templeton/,Hive1实例使用/apps1/templeton/,以此类推。
  • 客户端配置参数需要与服务端保持一致 当集群的Hive、YARN、HDFS服务端配置参数发生变化时,客户端程序对应的参数会被改变,用户需要重新审视在配置参数变更之前提交到HiveServer的配置参数是否和服务端配置参数一致,如果不一致,需要用户在客户端重新调整并提交到HiveServer。例如下面的示例中,如果修改了集群中的YARN配置参数时,Hive客户端、示例程序都需要审视并修改之前已经提交到HiveServer的配置参数: 初始状态: 集群YARN的参数配置如下: mapreduce.reduce.java.opts=-Xmx2048M 客户端的参数配置如下: mapreduce.reduce.java.opts=-Xmx2048M 集群YARN修改后,参数配置如下: mapreduce.reduce.java.opts=-Xmx1024M 如果此时客户端程序不做调整修改,则还是以客户端参数有效,会导致reducer内存不足而使MR运行失败。
  • HQL语法规则之判空 判断字段是否为“空”,即没有值,使用“is null”;判断不为空,即有值,使用“is not null”。 要注意的是,在HQL中String类型的字段若是空字符串, 即长度为0,那么对它进行IS NULL的判断结果是False。此时应该使用“col = '' ”来判断空字符串;使用“col != '' ”来判断非空字符串。 正确示例: select * from default.tbl_src where id is null; select * from default.tbl_src where id is not null; select * from default.tbl_src where name = ''; select * from default.tbl_src where name != ''; 错误示例: select * from default.tbl_src where id = null; select * from default.tbl_src where id != null; select * from default.tbl_src where name is null; select * from default.tbl_src where name is not null; 注:表tbl_src的id字段为Int类型,name字段为String类型。
  • 获取数据库连接 使用JDK的驱动管理类java.sql.DriverManager来获取一个Hive的数据库连接。 Hive的数据库URL为url="jdbc:hive2://xxx.xxx.xxx.xxx:2181,xxx.xxx.xxx.xxx:2181,xxx.xxx.xxx.xxx:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver;sasl.qop=auth-conf;auth=KERBEROS;principal=hive/hadoop.hadoop.com@HADOOP.COM;user.principal=hive/hadoop.hadoop.com;user.keytab=conf/hive.keytab"; 以上已经经过安全认证,所以Hive数据库的用户名和密码为null或者空。 如下: // 建立连接 connection = DriverManager.getConnection(url, "", "");
  • 执行HQL 执行HQL,注意HQL不能以";"结尾。 正确示例: String sql = "SELECT COUNT(*) FROM employees_info"; Connection connection = DriverManager.getConnection(url, "", ""); PreparedStatement statement = connection.prepareStatement(sql); resultSet = statement.executeQuery(); 错误示例: String sql = "SELECT COUNT(*) FROM employees_info;"; Connection connection = DriverManager.getConnection(url, "", ""); PreparedStatement statement = connection.prepareStatement(sql); resultSet = statement.executeQuery();
  • 多线程安全登录方式 如果有多线程进行login的操作,当应用程序第一次登录成功后,所有线程再次登录时应该使用relogin的方式。 login的代码样例: private Boolean login(Configuration conf){ boolean flag = false; UserGroupInformation.setConfiguration(conf); try { UserGroupInformation.loginUserFromKeytab(conf.get(PRINCIPAL), conf.get(KEYTAB)); System.out.println("UserGroupInformation.isLoginKeytabBased(): " +UserGroupInformation.isLoginKeytabBased()); flag = true; } catch (IOException e) { e.printStackTrace(); } return flag; } relogin的代码样例: public Boolean relogin(){ boolean flag = false; try { UserGroupInformation.getLoginUser().reloginFromKeytab(); System.out.println("UserGroupInformation.isLoginKeytabBased(): " +UserGroupInformation.isLoginKeytabBased()); flag = true; } catch (IOException e) { e.printStackTrace(); } return flag; }
  • Flink常见参数说明 表1 Flink常见参数说明 参数名称 参数描述 建议值 说明 -c 指定主类名。 根据实际填写 必填 -yjm JobManager进程内存,默认值:2GB。 根据实际填写 选填 -ytm TaskManager进程内存,默认值:4GB。 根据实际填写 选填 -ynm Flink Yarn作业名称。 根据实际填写 必填 -ys TaskManager中slot个数。 2 选填 execution.checkpointing.interval checkpoint触发间隔(毫秒),通过-yD添加,单位毫秒。 60000 必填 execution.checkpointing.timeout checkpoint超时时长,通过-yD添加,默认值:30min。 30min 必填 execution.checkpointing.tolerable-failed-checkpoints checkpoint失败容忍次数总和,通过-yD添加。 1000 选填 state.checkpoints.num-retained checkpoint保留个数,通过-yD添加。 5 选填 state.backend 状态后端使用rocksdb,通过-yD添加。 rocksdb 默认开启 state.backend.incremental 开启rocksdb增量状态后端,通过-yD添加。 TRUE 必填 state.backend.rocksdb.block.blocksize 写状态后端的数据块大小,通过-yD添加。 512KB 必填 state.backend.rocksdb.block.cache-size 整个状态后端的block cache大小,通过-yD添加。 1024MB 必填 taskmanager.memory.jvm-overhead.max 用于JVM其他开销的本地内存的最大值,例如栈空间、垃圾回收空间等,通过-yD添加。 10g 选填 taskmanager.memory.jvm-overhead.fraction 用于JVM其他开销的本地内存占tm内存的比例,例如栈空间、垃圾回收空间等,通过-yD添加。 0.2 选填 parallelism.default 作业并行度,例如join算子,通过-yD添加,默认值:1。 根据实际填写 选填 table.exec.state.ttl Flink状态TTL(join ttl),通过-yD添加,默认值:0。 根据实际填写 必填 heartbeat.timeout jm与tm之间心跳超时时间,通过-yD添加。 1800000 必填 akka.ask.timeout akka通信超时时间,通过-yD添加。 240s 必填 taskmanager.memory.segment-size 内存管理和网络栈使用的内存缓冲块字节数大小,默认值: 32768 (32KB),通过-yD添加。 64kb 选填 taskmanager.network.memory.max-buffers-per-channel 每个channel最大能持有多少buffers,如果segment有很多空闲,可以适当调大该值,否则channel会因为拿不到segment而blocking,通过-yD添加。 100 选填 taskmanager.network.memory.buffers-per-channel 每个channel独享的buffer数,通过-yD添加。 10 选填 taskmanager.network.memory.floating-buffers-per-gate 每个channel浮动buffer数,通过-yD添加。 2000 选填 taskmanager.network.netty.server.numThreads 每个taskmanager中netty服务端线程数,通过-yD添加。 20 选填 taskmanager.network.netty.client.numThreads 每个taskmanager中netty客户端线程数,通过-yD添加。 20 选填 state.backend.rocksdb.files.open 最大打开文件数目,-1意味着没有限制,通过-yD添加。 -1 选填 state.backend.rocksdb.compaction.level.use-dynamic-size 参数允许Rocksdb对每层数据存储的数据量阈值进行动态调整,通过-yD添加。 TRUE 选填 state.backend.rocksdb.levels.num Rocksdb允许存储compaction数据层数,通过-yD添加。 10 选填 state.backend.rocksdb.compaction.style compaction算法,通过-yD添加。 FIFO 选填 state.backend.rocksdb.verify.checksum 关闭数据读取时数据check,通过-yD添加。 FALSE 选填 state.backend.rocksdb.thread.num 后台负责flush和compaction的最大并发线程数,通过-yD添加。 4 选填 state.backend.rocksdb.writebuffer.count memtable的最大数量,通过-yD添加。 5 选填 state.backend.rocksdb.writebuffer.number-to-merge 在flush发生之前被合并的memtable最小数量,通过-yD添加。 3 选填 state.backend.rocksdb.background.compaction.max 负责compaction最大线程数,通过-yD添加。 10 选填 state.backend.rocksdb.flush.max rocksdb flush线程数,通过-yD添加。 1 选填 父主题: Flink应用开发规范
共100000条