华为云用户手册

  • 测试步骤 注入测试数据 测试前,生成并注入数据库测试数据。基于测试模型三种类型的分布,对三种数据类型进行如下配置: hash类型 key:34位字符,使用字符串前缀+9位数字,数字由1亿-9亿连续,以控制数据总量和热数据分布。 field-value共注入10对,其中field为10位字符,value为20-80位随机字符,注入测试数据时取均值50位。 构造并注入约8亿个key: memtier_benchmark -s ${ip} -a $(passwd} -p ${port} -c 20-t20 -n7500000 -d 32 -key-maximum=3 800000000 -key-minimum =1000000000 --key-pr efix ='cefkljrithuir123894873h4523blj4b2jkjh2iw13b nfdhsbnkfhsdjkh' --key-pattern=P:P--ratio=1:0 -pipelire=100 string类型 key:68位字符,使用字符串前缀+10位数字,数字由10亿-38亿连续,以控制数据总量和热数据分布。 value:注入32位随机字符。 构造并注入约28亿个key: memtier_benchmark -s ${ip} -a ${passwd} -p ${port} -c 20 -t 20 -n 2500000 --command='hset __key__ mendke398d __data__ mebnejkehe __data__ fmebejdbnf __data__ j3i45u8923 __data__ j43245i908 __data__ jhiriu2349 __data__ 21021034ji __data__ jh23ui45j2 __data__ jiu5rj9234 __data__ j23io45u29 __data__' -d 50 --key-maximum=900000000 --key-minimum=100000000 --key-prefix='ewfdjkff43ksdh41fuihikucl' --command-key-pattern=P --pipeline=100 string类型 key:19位字符,使用字符串前缀+9位数据,数字由1亿到3亿连续,以控制数据总量和热数据分布。 value:500 – 2000位随机字符,注入测试数据时取均值1250位。 构造并注入约4亿个key: memtier_benchmark -s ${ip} -a ${passwd} -p ${port} -c 20 -t 20 -n 520000 -d 1250 --key-maximum=300000000 --key-minimum=100000000 --key-prefix='miqjkfdjiu' --key-pattern=P:P --ratio=1:0 --pipeline=100 数据注入完成后,观察其key个数为3,809,940,889个key(约38亿)。观察GeminiDB Redis控制台中使用数据总量,计算GeminiDB Redis的数据压缩比。压缩后的存储容量约为155GB,即压缩比约为13.8%。 受memtier_benchmark数据平铺时数据生成影响,生成数据在40亿条左右,各类型间数据分布不受影响。 memtier_benchmark工具构造随机字符串中连续字符较多,因此压缩比偏低。根据经验,实际生产数据压缩比一般在30%-50%左右,仍可以达到很好的压缩效果。 压测命令 在三台E CS 上对GeminiDB Redis实例执行多个压测任务,压测任务分别为: ECS1上,对类型一进行hgetall查询操作,通过key范围控制仅访问部分高频数据: memtier_benchmark -s ${ip} -a ${passwd} -p ${port} -c 20 -t 30 --test-time 1200 --random-data --randomize --distinct-client-seed --command='hgetall __key__' --key-maximum=600000000 --key-minimum=200000000 --key-prefix='ewfdjkff43ksdh41fuihikucl' --out-file=./output_filename 对类型二进行get查询操作,通过key范围控制仅访问部分高频数据: memtier_benchmark -s ${ip} -a ${passwd} -p ${port} -c 70 -t 30 --test-time 1200 --random-data --randomize --distinct-client-seed --key-maximum=2400000000 --key-minimum=1000000000 --key-prefix='cefkljrithuin123894873h4523bhj4b2jkjh2iu13bnfdhsbnkfhsdjkh' --ratio=0:1 --out-file=./output_filename 对类型三进行get查询操作,通过key范围控制仅访问部分高频数据: memtier_benchmark -s ${ip} -a ${passwd} -p ${port} -c 10 -t 30 --test-time 1200 --random-data --randomize --distinct-client-seed --key-maximum=300000000 --key-minimum=100000000 --key-prefix='miqjkfdjiu' --ratio=0:1 --out-file=./output_filename 其中,连接数(c、t两个参数乘积)通过调整各个压测实例的client数量及配置使整体达到160w QPS,同时读请求流量1.5Gb/s。保持该业务流量,评估GeminiDB Redis的性能表现。
  • 测试指标 本次模拟的广告业务场景(RTA)业务规模大致抽象为:1TB数据量、160w QPS、1.5Gbit/s带宽。 数据样本 本次测试使用的数据样本主要分为以下三种: 类型 Key Value Hash 34位字符 10对field(10位)-value(20-80位) String 68位字符 32位随机字符 String 19位字符 500 – 2000位随机字符 其中,需要存储在Redis中的Key总数约为40亿条。各类型数据占比约为2:7:1,高频访问的数据约占总体的50%。 评估指标 对于上述测试模型及场景,记录各数据库操作的如下测试指标: 指标缩写 指标描述 QPS 每秒执行的请求数,单位为次/秒。 Avg Latency(ms) 请求的平均时延,代表GeminiDB Redis整体性能表现。 P99 Latency(ms) 请求的P99时延,是比较严格的时延指标,表示99%的请求执行时间都小于该值。 P9999 Latency(ms) 请求的P9999时延,是非常严格的时延指标,表示99.99%的请求执行时间小于该值,仅少量尾部请求超过该值。
  • 迁移原理 使用自研迁移工具leveldb-port,和LevelDB部署在相同机器上,准备好配置文件,启动迁移即可自动完成全量与增量的迁移。 全量迁移对LevelDB数据进行快照,然后扫描整个数据库,将数据打包成GeminiDB Redis接口识别的格式,发送到GeminiDB Redis接口,具有很高的迁移效率。 增量迁移解析LevelDB的wal文件,将LevelDB的操作解析出来,然后对其中的key进行分片,多线程进行发送。
  • GeminiDB Redis规格变更包含的在线变更和离线变更有什么区别,通常需要多长时间,对业务有哪些影响? 在线变更:变更过程中,节点依次滚动变更,变更时长跟节点数正相关,每个节点约需5~10分钟。除此之外,主备和集群实例都包含3个内部管理节点,会同时进行变更。例如一个GeminiDB Redis实例有3个worker节点,包含3个内部管理节点,共计6个节点,在线变更时长约在30-60分钟。单个节点变更过程中,对业务影响是秒级抖动,需要业务有重连机制。建议在业务低峰期间变更,实例CPU和内存利用率保持低位,避免单节点变更时,其他节点负载过高,进程拉起失败等异常情况。 离线变更:离线变更时,全部节点将并行变更,变更过程中业务不可用,会导致业务中断约10-20分钟左右。通常适用于停服期、无业务访问等场景。请谨慎操作! 对于您的线上生产业务,建议使用在线变更。详细操作内容请参变更实例的CPU和内存规格。 父主题: 数据库使用
  • 迁移原理 使用Redis-Shake迁移工具进行源端Redis到目标端GeminiDB Redis的迁移。迁移过程支持全量+增量迁移,支持单机/主从/Cluster集群/RDB文件等多种Redis数据源。 全量迁移原理:工具模拟源端Redis的从节点,通过全量同步获取RDB文件,解析后将数据以命令形式发送给目标端GeminiDB Redis。此外,也可将RDB文件作为数据源,方便地导入某时刻的数据快照。 增量迁移原理:全量迁移完成后,工具继续将增量数据以命令形式发送给目标端GeminiDB Redis,直到手动停止工具。
  • 内存加速概述 内存加速是GeminiDB Redis为了优化“传统被动缓存方案”而推出的功能,它可以让用户通过界面配置规则的形式,自动缓存MySQL的数据,加速MySQL的访问。 如下图图1所示,“传统被动缓存方案”需要用户自行开发代码把MySQL中的数据写入到缓存中,存在效率低、不可靠的缺点。而采用云数据内存加速的“全自动主动缓存方案”,支持界面可视化配置,配置完成后即可实现数据自动同步。同时还支持数据过滤及过期等功能,极大提高了开发效率及数据的可靠性。 图1 原理图 父主题: 内存加速
  • GeminiDB Redis什么时候进入只读 为保护GeminiDB Redis实例的正常运行,在存储空间即将被写满的时候,数据库会被设置成只读状态,该状态下只支持数据的读取,不支持写入和更新,可以通过扩容存储容量来解除该状态,重新获得写入和更新的能力。 表1 实例设置只读状态说明 存储容量 说明 小于600GB 存储容量使用率达到97%时,实例状态被设置为只读。 存储容量使用率下降到85%,实例自动解除只读状态。 大于或等于600GB 存储容量剩余空间小于18GB,实例状态被设置为只读。 存储容量剩余空间大于或等于90GB,实例自动解除只读状态。 父主题: 数据库使用
  • GeminiDB Redis内核版本发布说明 本章节介绍GeminiDB Redis的内核版本更新说明。如需查看不同版本所支持redis的命令,请参考命令兼容列表。 表1 GeminiDB Redis版本说明 版本 日期 特性描述 5.0 2023-06-30 新特性及性能优化: 新增Renamenx命令。 新增在事务中执行Select命令。 新增Hyerloglog编码, 完全兼容开源实现,并支持数据互迁。 新增Role命令支持。 新增Command Help命令支持。 新增跨链接Scan能力的支持。 问题修复: 修复小规格下Client命令潜在的问题。 修复Pfadd命令的返回值不兼容问题。 修复ZSET类型处理正负无穷时可能出错的问题。 2023-05-30 新特性及性能优化: 新增新的Bitmap类型编码, 提高Setbit/Getbit命令的性能。 新增Getex/Getdel/Lpos/Lmove命令的支持。 新增Set命令的Get/Exat/Pxat选项。 优化审计日志功能。 问题修复: 修复数据迁出可能出现的问题。 2023-04-30 新特性及性能优化: 新增SSL与非SSL连接并存的能力。 新增支持Sscan/Hscan/Zscan跨链接访问的能力。 问题修复: 修复SSL场景下可能导致Proxy阻塞的问题。 2023-02-28 新特性及性能优化: 新增高性能内存查询引擎,加速ZSET类型的读操作。 优化数据迁移的配置参数。 2023-01-30 问题修复: 修复LIST类型Restore命令可能写入错误的问题。 2022-12-30 新特性及性能优化: 新增STREAM类型Xread命令的Block选项。 优化Info命令的兼容性。 问题修复: 修复SSL场景下可能导致Proxy阻塞的问题。 2022-11-30 新特性及性能优化: 优化小规格实例的性能和稳定性。 问题修复: 修复Bloom Fitler类型无法数据迁移的问题。 2022-10-30 新特性及性能优化: 新增ACL只读账户的特性。 新增增量迁出能力。 新增免密白名单。 新增存储层加密。 新增Bigkeys命令,查询数据库中存在的大Key。 新增Restore命令支持全部类型数据结构。 优化Client Kill命令的兼容性支持。 2022-09-30 新特性及性能优化: 新增Georaduis_ro, Georadiusbymember_ro命令的支持。 新增Client Id/Info/Getname/Setname命令的支持。 新增大Key审计日志的能力。 降低CPU的消耗。 优化Dump命令的兼容性。 优化对Cluster/Sentinel SDK相关的兼容性。 问题修复: 修复Bloom Filter在异常场景下可能出现的问题。 修复Scan类命令处理特殊字符可能出现的问题。 2022-08-30 新特性及性能优化: 新增Keys命令的支持。 新增Notify Expire的支持。 问题修复: 修复阻塞命令Timeout参数可能出现的溢出问题。 2022-07-30 新特性及性能优化: 新增Bloom Fitler相关命令的支持。 新增Lpop/Rpop命令的Count选项支持。 2022-06-30 新特性及性能优化: 新增Dump命令的支持。 新增Key-notify功能的支持。 2022-05-30 新特性及性能优化: 新增多DB支持, 支持Select命令。 新增允许在只读模式下执行删除类命令。 优化Cluster-redis SDK相关的兼容性。 优化Info命令的兼容性。 问题修复: 修复Script Kill命令的提示信息兼容性问题。 2022-04-30 新特性及性能优化: 新增Unlink命令支持。 新增LIST类型阻塞命令的支持。 优化Scan命令前缀匹配模式的性能。 问题修复: 修复事务相关的若干问题。 2022-03-30 新特性及性能优化: 优化ZSET相关命令的性能。 优化Rename性能。 2022-02-28 新特性及性能优化: 新增Command命令支持。 2022-01-30 新特性及性能优化: 新增Rename命令支持。 新增事务相关的命令支持。 新增Client List命令的支持。 新增审计日志功能。 新增防暴力破解能力。 优化内部故障探测时间,缩短RTO。 问题修复: 修复Del命令和Exists命令的兼容性问题。 修复鉴权失败场景下可能出现的回包错误。 2021-12-30 新特性及性能优化: 新增LUA脚本相关命令支持。 新增SSL连接加密功能。 新增慢日志查询功能。 新增Info Cluster命令的支持,支持Spark接入。 问题修复: 修复Expire命令和Incr命令可能出现的整型溢出问题。 修复Scan命令对于包含特殊字符的Key处理错误的问题。 2021-11-30 新特性及性能优化: 优化计算层数据压缩中压缩、解压的效率。 优化内部集群故障接管场景的RTO。 问题修复: 修复GEO, STREAM类型命令的兼容性问题。 修复Scan命令可能无法扫全数据的问题。 2021-10-30 新特性及性能优化: 优化Flushall的性能。 问题修复: 修复使用Linsert插入元素时元素乱序的问题。 2021-09-30 新特性及性能优化: 新增对Redis-cluster SDK的兼容。 2021-08-30 新特性及性能优化: 新增对2U规格的支持。 优化内部的锁的范围。 问题修复: 修复Xread命令的兼容性问题。 2021-07-30 新特性及性能优化: 新增Time命令。 新增对Pipeline的支持。 问题修复: 修复Geoadd命令没有校验经纬度的问题。 修复Zscan可能出现的死循环问题。 2021-06-30 新特性及性能优化: 新增实例只读模式。 新增计算层数据压缩。 新增客户端连接超时检查。 优化慢日志的打印逻辑。 问题修复: 修复Sdiff命令可能落在错误分区的问题。
  • GeminiDB Redis各版本的生命周期规划 在正式EOM/EOS前会发布公告,在此期间客户可以通过 数据复制服务 将版本在EOS之前切换到高版本。 EOM:End of Marketing,停止该版本的销售。 EOS:End of Service & support,停止该版本的服务,建议您在执行作业时选择最新版本的引擎。在该日期之后,不再提供该软件版本的任何技术服务支持。 表1 GeminiDB Redis各版本生命周期规划表 版本 当前状态 华为云商用时间 计划EOM时间 计划EOS时间 5.0 已商用 2021年6月 2026年12月 2027年12月 6.2 已商用 2024年3月 2027年12月 2028年12月 7.0 公测中,参考命令兼容列表 规划中 规划中 规划中
  • 资源和成本规划 本方案示例中涉及的资源如下: 表1 资源说明 资源 资源说明 数量 成本说明 云专线(Direct Connect) DC,作为连接第三方主机和云上资源的专属通道。 2 DC具体的计费方式及标准请参考DC计费说明。 弹性云服务器(Elastic Cloud Server) ECS,作为代理服务器,将第三方服务器的请求转发至HSS后台。 2 ECS具体的计费方式及标准请参考ECS计费说明。 父主题: 第三方主机通过专线和代理服务器接入HSS
  • 操作流程 第三方云主机、线下IDC通过专线和代理服务器接入HSS的流程如下: 创建专线连接 第三方服务器如果不能访问公网,需要创建专线连接云上VPC,实现网络互通。 创建代理服务器 需要创建一台云上服务器,作为代理服务器,连接第三方服务器。 为代理服务器安装Agent 为代理服务器安装Agent,确保网络的畅通,辅助配置nginx的参数。 为代理服务器安装配置nginx nginx负责将第三方服务器的请求转发至HSS后台管理后台。 通过代理服务器制作Agent安装包或安装命令 根据第三方服务器操作系统类型制作对应的安装命令(Linux)或安装包(Windows)。 为第三方服务器安装Agent 为第三方服务器安装Agent,将第三方服务器接入HSS实现统一管理。 父主题: 第三方主机通过专线和代理服务器接入HSS
  • 操作流程 第三方云主机、线下IDC通过专线和 VPC终端节点 接入HSS的流程如下: 创建专线连接 第三方服务器如果不能访问公网,需要创建专线连接云上VPC,实现网络互通。 创建VPC终端节点 创建VPC终端节点,用于实现第三方服务器通过华为云内网访问HSS。 获取项目ID 获取VPC终端节点所在的项目ID,用于制作安装命令。 制作Agent安装包或安装命令 根据第三方服务器操作系统类型制作对应的安装命令(Linux)或安装包(Windows)。 为第三方服务器安装Agent 为第三方服务器安装Agent,将第三方服务器接入HSS实现统一管理。 父主题: 第三方主机通过专线和VPC终端节点接入HSS
  • 资源和成本规划 本方案示例中涉及的资源如下: 表1 资源说明 资源 资源说明 数量 成本说明 云专线(Direct Connect) DC,作为连接第三方主机和云上资源的专属通道。 2 DC具体的计费方式及标准请参考DC计费说明。 VPC终端节点(VPC Endpoint) VPCEP,在VPC内提供通道与终端节点服务进行连接,实现第三主机可通过华为云内网访问HSS。 1 免费。 父主题: 第三方主机通过专线和VPC终端节点接入HSS
  • 请求消息 请求参数 表2 请求参数 名称 类型 是否必选 描述 customer_gateway UpdateCgwRequestBodyContent object 是 customer_gateway对象。 表3 UpdateCgwRequestBodyContent 名称 类型 是否必选 描述 name String 否 功能说明:网关名称。 取值范围:1-64个字符,支持数字、英文字母、中文(\u4e00 - \u9fa5)、_(下划线)、-(中划线)、.(点)。 ca_certificate CaCertificateRequest object 否 功能说明:对端网关CA证书。 表4 CaCertificateRequest 名称 类型 是否必选 描述 id String 否 功能说明:证书ID。 格式:36位UUID。 content String 否 功能说明:对端网关CA证书内容。 取值范围:1-8192个字符。 请求样例 PUT https://{Endpoint}/v5/{project_id}/customer-gateways/{customer_gateway_id} { "customer_gateway": { "name": "cgw-f846", "ca_certificate": { "content":"******" } } }
  • 响应消息 响应参数 返回状态码为 200: 更新成功。 表5 响应Body参数列表 名称 类型 描述 customer_gateway ResponseCustomerGateway object customer_gateway对象。 request_id String 请求id。 表6 ResponseCustomerGateway 名称 类型 描述 id String 功能说明:对端网关的ID。 格式:36位UUID。 name String 功能说明:对端网关名称。 取值范围:1-64个字符,包括数字、英文字母、中文(\u4e00 - \u9fa5)、_(下划线)、-(中划线)。 id_type String 功能说明:对端网关标识类型。 取值范围: ip。 fqdn。 id_value String 对端网关标识值。 bgp_asn Long 对端网关的BGP自治域编号。仅当id_type为ip时返回。 created_at String 创建时间。 UTC时间格式:yyyy-MM-ddTHH:mm:ss.SSSZ。 updated_at String 最后一次更新时间。 UTC时间格式:yyyy-MM-ddTHH:mm:ss.SSSZ。 ca_certificate CaCertificate object 对端网关CA证书信息。仅当对端网关绑定CA证书时返回。 tags Array of VpnResourceTag objects 标签列表。 表7 CaCertificate 名称 类型 描述 id String 证书ID。 serial_number String 证书序列号。 signature_algorithm String 签名算法。 issuer String 证书颁发者。 subject String 证书使用者。 expire_time String 证书过期时间。 is_updatable boolean 是否能更新证书内容。 表8 VpnResourceTag 名称 类型 描述 key String 功能说明:标签的键。 取值范围:1-128个字符,支持数字、英文字母、中文、西班牙语、葡语、空格,以及以下字符:_.:=+-@。 value String 功能说明:标签的值。 取值范围:0-255个字符,支持数字、英文字母、中文、西班牙语、葡语、空格,以及以下字符:_.:=+-@。 响应样例 { "customer_gateway": { "id": "03c0aa3d-demo-a8df-va86-9d82473765d4", "name": "cgw-f846", "id_type": "ip", "id_value": "10.***.***.21", "bgp_asn": 65533, "ca_certificate": { "serial_number": "14257156674311863338", "signature_algorithm": "SM3WITHSM2", "issuer": "C=CN,O=a0002,CN=XXX", "subject": "C=CN,O=a0002,CN=XXX", "expire_time": "2024-05-22T07:34:22Z", "is_updatable": true }, "created_at": "2021-12-21T16:49:28.108Z", "updated_at": "2021-12-21T16:49:28.108Z" }, "request_id": "96718f4a-f57a-4e1f-8d05-7d5e903c8d90" }
  • 操作步骤 创建访问策略 发送“POST https://{endpoint}/v5/{project_id}/p2c-vpn-gateways/vpn-servers/{vpn_server_id}/access-policies”,project_id为项目ID。{vpn_server_id}为已创建的VPN服务端ID。 在Request Header中增加“X-Auth-Token”。 在Request Body中传入参数。 { "access_policy": { "name": "policy-001", "user_group_id": "7625fd92-2e20-4e4d-8c56-66f110fbfaa8", "description": "访问策略1", "dest_ip_cidrs": [ "172.16.0.0/24", "172.16.1.0/24" ] } } 查看请求响应结果。 请求成功时,响应参数如下,id为创建的用户组ID { "access_policy": { "id": "4f746482-a575-4e1f-9e80-5f6f69ff8588" }, "request_id": "1663cd8cacbb3497ebc88877e5a3ad89" } 查询访问策略 发送“GET https://{endpoint}/v5/{project_id}/p2c-vpn-gateways/vpn-servers/{vpn_server_id}/access-policies/{policy_id}”,project_id为项目ID。{vpn_server_id}为已创建的VPN服务端ID。{policy_id}为已创建的访问策略ID。 在Request Header中增加“X-Auth-Token”。 查看请求响应结果。 { "access_policy": { "id": "4f746482-a575-4e1f-9e80-5f6f69ff8588", "name": "policy-001", "user_group_id": "7625fd92-2e20-4e4d-8c56-66f110fbfaa8", "user_group_name": "user-group1", "description": "访问策略1", "dest_ip_cidrs": [ "172.16.0.0/24", "172.16.1.0/24" ], "created_at": "2024-06-17T13:32:19.57Z", "updated_at": "2024-06-17T13:32:19.57Z" }, "request_id": "85657002f01c35576606003cc36114ab" }
  • 响应消息 响应参数 返回状态码为 201: 创建成功。 表6 响应Body参数列表 名称 类型 描述 customer_gateway ResponseCustomerGateway object customer_gateway对象。 request_id String 请求id。 表7 ResponseCustomerGateway 名称 类型 描述 id String 功能说明:对端网关的ID。 格式:36位UUID。 name String 功能说明:对端网关名称。 取值范围:1-64个字符,包括数字、英文字母、中文(\u4e00 - \u9fa5)、_(下划线)、-(中划线)。 id_type String 功能说明:对端网关标识类型。 取值范围: ip。 fqdn。 id_value String 对端网关标识值。 bgp_asn Long 对端网关的BGP自治域编号。仅当id_type为ip时返回。 ca_certificate CaCertificate object 对端网关CA证书信息。仅当对端网关绑定CA证书时返回。 created_at String 创建时间。 UTC时间格式:yyyy-MM-ddTHH:mm:ss.SSSZ。 updated_at String 最后一次更新时间。 UTC时间格式:yyyy-MM-ddTHH:mm:ss.SSSZ。 tags Array of VpnResourceTag objects 标签列表。 表8 CaCertificate 名称 类型 描述 id String 证书ID。 serial_number String 证书序列号。 signature_algorithm String 签名算法。 issuer String 证书颁发者。 subject String 证书使用者。 expire_time String 证书过期时间。 is_updatable boolean 是否能更新证书内容。 表9 VpnResourceTag 名称 类型 描述 key String 功能说明:标签的键。 取值范围:1-128个字符,支持数字、英文字母、中文、西班牙语、葡语、空格,以及以下字符:_.:=+-@。 value String 功能说明:标签的值。 取值范围:0-255个字符,支持数字、英文字母、中文、西班牙语、葡语、空格,以及以下字符:_.:=+-@。 响应样例 { "customer_gateway": { "id": "03c0aa3d-demo-a8df-va86-9d82473765d4", "name": "cgw-2abf", "id_type": "ip", "id_value": "10.***.***.21", "bgp_asn": 65000, "ca_certificate": { "serial_number": "14257156674311863338", "signature_algorithm": "SM3WITHSM2", "issuer": "C=CN,O=a0002,CN=XXX", "subject": "C=CN,O=a0002,CN=XXX", "expire_time": "2024-05-22T07:34:22Z", "is_updatable": true }, "created_at": "2021-12-21T16:49:28.108+08:00", "updated_at": "2021-12-21T16:49:28.108+08:00" }, "request_id": "7e0383bf-a7fb-461b-a926-baa8a795bf1a" }
  • 操作步骤 创建用户组 发送“POST https://{endpoint}/v5/{project_id}/p2c-vpn-gateways/vpn-servers/{vpn_server_id}/groups”,project_id为项目ID。{vpn_server_id}为已创建的VPN服务端ID。 在Request Header中增加“X-Auth-Token”。 在Request Body中传入参数。 { "user_group": { "name": "user-group1", "description": "用户组1" } } 查看请求响应结果。 请求成功时,响应参数如下,id为创建的用户组ID { "user_group": { "id": "7625fd92-2e20-4e4d-8c56-66f110fbfaa8" }, "request_id": "94d271493e144135423e7377e40127cf" } 查询用户组 发送“GET https://{endpoint}/v5/{project_id}/p2c-vpn-gateways/vpn-servers/{vpn_server_id}/groups/{group_id}”,project_id为项目ID。{group_id}为已创建的用户组ID。 在Request Header中增加“X-Auth-Token”。 查看请求响应结果。 { "user_group": { "id": "7625fd92-2e20-4e4d-8c56-66f110fbfaa8", "name": "user-group1", "description": "用户组1", "type": "Custom", "user_number": 0, "created_at": "2024-06-17T09:48:27.548Z", "updated_at": "2024-06-17T09:48:27.548Z" }, "request_id": "6735d32bb3e35e9154caba1dbc6c2dc6" } 创建用户 发送“POST https://{endpoint}/v5/{project_id}/p2c-vpn-gateways/vpn-servers/{vpn_server_id}/users”,project_id为项目ID。{vpn_server_id}为已创建的VPN服务端ID。 在Request Header中增加“X-Auth-Token”。 在Request Body中传入参数。 { "user": { "name": "user001", "password": "Qwerasdf", "description": "用户1", "user_group_id": "7625fd92-2e20-4e4d-8c56-66f110fbfaa8" } } 查看请求响应结果。 请求成功时,响应参数如下,id为创建的用户ID { "user": { "id": "41ad472e-d3e4-482b-8f00-7b2c1bfc4b7d" }, "request_id": "b19ba5a0be8f7b7f664b14596f8f35db" } 查询用户 发送“GET https://{endpoint}/v5/{project_id}/p2c-vpn-gateways/vpn-servers/{vpn_server_id}/users/{user_id}”,project_id为项目ID。{vpn_server_id}为已创建的VPN服务端ID。{user_id}为已创建的用户ID。 在Request Header中增加“X-Auth-Token”。 查看请求响应结果。 { "user": { "id": "41ad472e-d3e4-482b-8f00-7b2c1bfc4b7d", "name": "user001", "description": "用户1", "user_group_id": "7625fd92-2e20-4e4d-8c56-66f110fbfaa8", "user_group_name": "user-group1", "created_at": "2024-06-17T06:53:46.302Z", "updated_at": "2024-06-17T06:53:46.302Z" }, "request_id": "926a0edb3bf432943e2399b700173add" }
  • 响应消息 响应参数 返回状态码为 200: 查询成功。 表3 响应Body参数列表 名称 类型 描述 customer_gateways Array of ResponseCustomerGateway objects customer_gateway对象。 total_count Long 租户下对端网关总数。 page_info PageInfo object 分页信息。 request_id String 请求id。 表4 ResponseCustomerGateway 名称 类型 描述 id String 功能说明:对端网关的ID。 格式:36位UUID。 name String 功能说明:对端网关名称。 取值范围:1-64个字符,支持数字、英文字母、中文(\u4e00 - \u9fa5)、_(下划线)、-(中划线)、.(点)。 id_type String 功能说明:对端网关标识类型。 取值范围: ip。 fqdn。 id_value String 对端网关标识值。 bgp_asn Long 对端网关的BGP自治域编号。仅当id_type为ip时返回。 ca_certificate CaCertificate object 对端网关CA证书信息。仅当对端网关绑定CA证书时返回。 created_at String 创建时间。 UTC时间格式:yyyy-MM-ddTHH:mm:ssZ。 updated_at String 最后一次更新时间。 UTC时间格式:yyyy-MM-ddTHH:mm:ssZ。 tags Array of VpnResourceTag objects 标签列表。 表5 CaCertificate 名称 类型 描述 id String 证书ID。 serial_number String 证书序列号。 signature_algorithm String 签名算法。 issuer String 证书颁发者。 subject String 证书使用者。 expire_time String 证书过期时间。 is_updatable boolean 是否能更新证书内容。 表6 VpnResourceTag 名称 类型 描述 key String 功能说明:标签的键。 取值范围:1-128个字符,支持数字、英文字母、中文、西班牙语、葡语、空格,以及以下字符:_.:=+-@。 value String 功能说明:标签的值。 取值范围:0-255个字符,支持数字、英文字母、中文、西班牙语、葡语、空格,以及以下字符:_.:=+-@。 表7 PageInfo 名称 类型 描述 next_marker String 下一页的marker,值为上一次查询响应中最后一个资源的创建时间。 current_count Integer 当前列表中资源数量。若小于查询请求传入的limit则表示最后一页。 响应样例 { "customer_gateways": [{ "id": "e67d6e27-demo-a8df-va86-be9a0f0168e9", "name": "cgw-a45b", "id_type": "ip", "id_value": "100.***.***.81", "bgp_asn": 65588, "ca_certificate": { "serial_number": "14257156674311863338", "signature_algorithm": "SM3WITHSM2", "issuer": "C=CN,O=a0002,CN=XXX", "subject": "C=CN,O=a0002,CN=XXX", "expire_time": "2024-05-22T07:34:22Z", "is_updatable": true }, "created_at": "2022-11-28T07:36:24.923Z", "updated_at": "2022-11-28T07:36:24.923Z" }, { "id": "312067bb-demo-a8df-va86-09dc941bbffc", "name": "cgw-21a3", "id_type": "fqdn", "id_value": "123******456", "ca_certificate": null, "created_at": "2022-11-28T06:25:01.937Z", "updated_at": "2022-11-28T06:25:01.937Z" }], "total_count": 2, "page_info": { "next_marker": "2022-11-28T06:25:01.937Z", "current_count": 2 }, "request_id": "82a108d9-0929-42e9-adb7-e146c04c587c" }
  • URI GET /v5/{project_id}/customer-gateways 表1 参数说明 名称 类型 是否必选 说明 project_id String 是 项目ID,可以通过获取项目ID获取项目ID。 表2 请求Query参数列表 名称 类型 是否必选 描述 limit Integer 否 功能说明:分页查询时每页返回的记录数量。 取值范围:0-200。 默认值:200。 marker String 否 功能说明:查询本页的起始标记位,为空时为查询第一页。查询下一页的marker可以根据上一页响应的page_info对象中的next_marker填写。 约束:必须与limit一起使用。
  • 前提条件 已成功创建包周期终端入云VPN网关。 已在 云证书管理服务 中购买或上传服务端证书,详情请参见购买SSL证书和上传已有SSL证书。 您需要确定调用API的Endpoint。 当您使用Token认证方式完成认证鉴权时,需要获取用户Token并在调用接口时增加“X-Auth-Token”到业务接口请求消息头中。Token认证,具体操作请参考认证鉴权章节。 通过 IAM 服务获取到的Token有效期为24小时,需要使用同一个Token鉴权时,可以先将Token缓存,避免频繁调用。
  • 操作步骤 创建VPN服务端。 发送“POST https://{endpoint}/v5/{project_id}/p2c-vpn-gateways/{p2c_vgw_id}/vpn-servers”,project_id为项目ID。{p2c_vgw_id}为已创建的终端入云VPN网关ID。 在Request Header中增加“X-Auth-Token”。 在Request Body中传入参数。 证书认证方式传入参数如下: { "vpn_server": { "tunnel_protocol": "SSL", "client_cidr": "100.10.1.0/24", "local_subnets": [ "192.168.0.0/24", "192.168.1.0/24" ], "client_auth_type": "CERT", "server_certificate": { "id": "scs1717051012106" }, "client_ca_certificates": [ { "content" : "-----BEGIN CERTIFICATE-----******-----END CERTIFICATE-----" } ], "ssl_options": { "protocol": "TCP", "port": 443, "encryption_algorithm": "AES-128-GCM", "is_compressed": false } } } 口令认证方式传入参数如下: { "vpn_server": { "tunnel_protocol": "SSL", "client_cidr": "100.10.2.0/24", "local_subnets": [ "192.168.0.0/24", "192.168.1.0/24" ], "client_auth_type": "LOCAL_PASSWORD", "server_certificate": { "id": "scs1717051012106" }, "ssl_options": { "protocol": "TCP", "port": 443, "encryption_algorithm": "AES-128-GCM", "is_compressed": false } } } 查看请求响应结果。 请求成功时,响应参数如下,id为创建的VPN服务端ID。 { "vpn_server": { "id": "0e325fb6-83b9-4004-a343-8b6fc714a5d9" }, "request_id": "bf23a5884def9be4576cff33e4dd78d5" } 查询VPN服务端 发送“GET https://{endpoint}/v5/{project_id}/p2c-vpn-gateways/{p2c_vgw_id}/vpn-servers”,project_id为项目ID。{p2c_vgw_id}为已创建的终端入云VPN网关ID。 在Request Header中增加“X-Auth-Token”。 查看请求响应结果。 服务端的status为“PENDING_CREATE”说明正在创建中,为"ACTIVE"说明创建完成。 证书认证的服务端响应结果为: { "vpn_servers": [ { "id": "b26c9c74-5bb9-4df8-8b98-ecf2051e3482", "p2c_vgw_id": "595210dc-7998-4ba3-aeb9-516fbcf7853c", "client_cidr": "100.10.1.0/24", "local_subnets": [ "192.168.0.0/24", "192.168.1.0/24" ], "client_auth_type": "CERT", "tunnel_protocol": "SSL", "server_certificate": { "id": "scs1717051012106", "name": "test-05304", "issuer": "C=CN,ST=beijing,L=haidian,O=lesaas,OU=root,CN=www.root.huawei.com", "subject": "C=CN,ST=beijing,L=haidian,O=server,OU=server,CN=www.server.huawei.com", "serial_number": "350612543125953290200975245211283057292471206725", "expiration_time": "2024-06-29T06:39:46Z", "signature_algorithm": "SHA256WITHRSA" }, "client_ca_certificates": [ { "id": "7e971612-f720-4d31-88b5-fc6280b88e36", "name": "ca-cert-123e", "issuer": "C=CN,ST=JS,L=NJ,O=NYS,OU=N10,CN=test.huawei.com", "subject": "C=CN,ST=JS,L=NJ,O=NYS,OU=N10,CN=testCA.huawei.com", "serial_number": "1591942200161", "expiration_time": "2033-11-06T11:39:14Z", "signature_algorithm": "SHA256WITHRSA", "created_at": "2024-06-18T12:19:17.978Z", "updated_at": "2024-06-18T12:19:17.978Z" } ], "ssl_options": { "protocol": "TCP", "port": 443, "encryption_algorithm": "AES-128-GCM", "authentication_algorithm": "SHA256", "is_compressed": false }, "status": "ACTIVE", "created_at": "2024-06-18T12:19:17.978Z", "updated_at": "2024-06-18T12:19:17.978Z" } ], "request_id": "68188a14243b1b54d0b45a82d9123b98" } 口令认证的服务端响应结果为: { "vpn_servers": [ { "id": "0e325fb6-83b9-4004-a343-8b6fc714a5d9", "p2c_vgw_id": "dea8c4fb-be5c-4d50-be9a-f9a5f3a9afc6", "client_cidr": "100.10.2.0/24", "local_subnets": [ "192.168.0.0/24", "192.168.1.0/24" ], "client_auth_type": "LOCAL_PASSWORD", "tunnel_protocol": "SSL", "server_certificate": { "id": "scs1717051012106", "name": "test-05304", "issuer": "C=CN,ST=beijing,L=haidian,O=lesaas,OU=root,CN=www.root.huawei.com", "subject": "C=CN,ST=beijing,L=haidian,O=server,OU=server,CN=www.server.huawei.com", "serial_number": "350612543125953290200975245211283057292471206725", "expiration_time": "2024-06-29T06:39:46Z", "signature_algorithm": "SHA256WITHRSA" }, "client_ca_certificates": [], "ssl_options": { "protocol": "TCP", "port": 443, "encryption_algorithm": "AES-128-GCM", "authentication_algorithm": "SHA256", "is_compressed": false }, "status": "ACTIVE", "created_at": "2024-06-18T12:21:54.889Z", "updated_at": "2024-06-18T12:21:54.889Z" } ], "request_id": "f8e64d41466085f06383dc59ffb28230" }
  • 数据准备 VPN服务端支持两种认证方式,分别为证书认证和口令认证。 表1 证书认证方式创建VPN服务端请求关键参数 参数 说明 取值样例 p2c_vgw_id 终端入云网关ID,为预先已创建的网关ID 595210dc-7998-4ba3-aeb9-516fbcf7853c client_cidr 客户端网段 100.10.1.0/24 local_subnets 本端网段列表 192.168.0.0/24,192.168.1.0/24 server_certificate.id 服务端证书ID,为 云证书管理 服务中的证书ID scs1717051012106 client_ca_certificate.content 客户端CA证书内容 -----BEGIN CERTIFICATE-----******-----END CERTIFICATE----- 表2 口令认证方式创建VPN服务端请求关键参数 参数 说明 取值样例 p2c_vgw_id 终端入云网关ID,为预先已创建的网关ID dea8c4fb-be5c-4d50-be9a-f9a5f3a9afc6 client_cidr 客户端网段 100.10.2.0/24 local_subnets 本端网段列表 192.168.0.0/24,192.168.1.0/24 server_certificate.id 服务端证书ID,为云证书管理服务中的证书ID scs1717051012106
  • 响应消息 响应参数 返回状态码为 200: 查询成功。 表2 响应Body参数列表 名称 类型 描述 customer_gateway ResponseCustomerGateway object customer_gateway对象。 request_id String 请求id。 表3 ResponseCustomerGateway 名称 类型 描述 id String 功能说明:对端网关的ID。 格式:36位UUID。 name String 功能说明:对端网关名称。 取值范围:1-64个字符,支持数字、英文字母、中文(\u4e00 - \u9fa5)、_(下划线)、-(中划线)、.(点)。 id_type String 功能说明:对端网关标识类型。 取值范围: ip。 fqdn。 id_value String 对端网关标识值。 bgp_asn Long 对端网关的BGP自治域编号。仅当id_type为ip时返回。 ca_certificate CaCertificate object 对端网关CA证书信息。仅当对端网关绑定CA证书时返回。 created_at String 创建时间。 UTC时间格式:yyyy-MM-ddTHH:mm:ssZ。 updated_at String 最后一次更新时间。 UTC时间格式:yyyy-MM-ddTHH:mm:ssZ。 tags Array of VpnResourceTag objects 标签列表。 表4 CaCertificate 名称 类型 描述 id String 证书ID。 serial_number String 证书序列号。 signature_algorithm String 签名算法。 issuer String 证书颁发者。 subject String 证书使用者。 expire_time String 证书过期时间。 is_updatable boolean 是否能更新证书内容。 表5 VpnResourceTag 名称 类型 描述 key String 功能说明:标签的键。 取值范围:1-128个字符,支持数字、英文字母、中文、西班牙语、葡语、空格,以及以下字符:_.:=+-@。 value String 功能说明:标签的值。 取值范围:0-255个字符,支持数字、英文字母、中文、西班牙语、葡语、空格,以及以下字符:_.:=+-@。 响应样例 { "customer_gateway": { "id": "03c0aa3d-demo-a8df-va86-9d82473765d4", "name": "cgw-ba08", "id_type": "ip", "id_value": "10.***.***.21", "bgp_asn": 65000, "ca_certificate": { "serial_number": "14257156674311863338", "signature_algorithm": "SM3WITHSM2", "issuer": "C=CN,O=a0002,CN=XXX", "subject": "C=CN,O=a0002,CN=XXX", "expire_time": "2024-05-22T07:34:22Z", "is_updatable": true }, "created_at": "2021-12-21T16:49:28.108+08:00", "updated_at": "2021-12-21T16:49:28.108+08:00" }, "request_id": "8111d315-5024-45c9-8ee3-5ef676edb0d1" }
  • 前提条件 已创建 云桌面 。 已获取需要校验完整性的软件包。 表1 校验码 安装包 版本 sha256值 Android 23.2.2 851c0058420a150c2dcc830f890c6db96a9f8950c57f52bef1245ddd6a95fc58 麒麟-AMD64 23.8.3 8eb55b35040a2fc234030a7e79d0f2f0437399690ae3e2f3b22c1f4d804ad2e7 麒麟-ARM64 23.8.3 835031b355acb86b587747ef16c576eff400b54cca72cb87802dac840fb35e99 UOS-AMD64 23.8.3 8eb55b35040a2fc234030a7e79d0f2f0437399690ae3e2f3b22c1f4d804ad2e7 UOS-ARM64 23.8.3 835031b355acb86b587747ef16c576eff400b54cca72cb87802dac840fb35e99 Ubuntu-AMD64 23.8.3 8eb55b35040a2fc234030a7e79d0f2f0437399690ae3e2f3b22c1f4d804ad2e7
  • 校验软件包完整性 用户登录Windows云桌面。 在云桌面中按“Win + r”,输入“cmd”,弹出命令行窗口。 执行以下命令,获取软件的Hash值。 certutil -hashfile {软件包本地目录}/{软件包名} sha256 {软件包本地目录}:请根据实际下载目录进行替换。例如:C:\Users {软件包名}:请根据实际下载软件包名进行替换。例如:Workspace_xxx.apk 示例:certutil -hashfile Workspace_android.apk sha256 将表1中获取的SHA256 Hash值和步骤3获取的Hash值进行比较。 一致:通过校验。 不一致:请重新下载对应版本的软件,重复步骤3~步骤4进行校验。
  • k8clone恢复使用方法 k8clone工具支持在Linux(x86、arm)和Windows环境中运行,使用方法相似。本文将以Linux(x86)环境为例进行介绍。 若使用Linux(arm)或Windows环境,请将下述命令中的k8clone-linux-amd64分别替换为k8clone-linux-arm64或k8clone-windows-amd64.exe。 在k8clone工具所在目录下执行./k8clone-linux-amd64 restore -h,可以查看k8clone工具恢复的使用方法。 -k, --kubeconfig:指定kubectl的KubeConfig位置,默认是$HOME/.kube/config。kubeConfig文件:用于配置对Kubernetes集群的访问,KubeConfig文件中包含访问注册Kubernetes集群所需要的认证凭据以及Endpoint(访问地址),详细介绍可参见Kubernetes文档。 -s, --api-server:Kubernetes API Server URL,默认是""。 -q, --context:Kubernetes Configuration Context,默认是""。 -f, --restore-conf:指定restore.json的路径,默认是k8clone工具所在目录下。 -d, --local-dir:备份数据放置的路径,默认是k8clone工具所在目录下。 $ ./k8clone-linux-amd64 restore -h ProcessRestore from backup Usage: k8clone restore [flags] Flags: -s, --api-server string Kubernetes api-server url -q, --context string Kubernetes configuration context -h, --help help for restore -k, --kubeconfig string The kubeconfig of k8s cluster's. Default is the $HOME/.kube/config. -d, --local-dir string Where to restore (default "./k8clone-dump.zip") -f, --restore-conf string restore conf file (default "./restore.json") 示例: ./k8clone-linux-amd64 restore -d ./k8clone-dump.zip -f ./restore.json
  • k8clone数据备份/恢复原理 数据备份的流程参考如下: 图1 数据备份流程 数据恢复的流程参考如下: 图2 数据恢复流程 在执行恢复操作前,需要准备一个数据恢复配置文件“restore.json”,目的是在应用恢复时自动更换PVC、StatefulSet的存储类名称,以及工作负载所使用镜像的Repository地址。 文件内容如下: { "StorageClass": "OldStorageClassName": "NewStorageClassName" //支持修改PVC、StatefulSet的StorageClassName字段 "ImageRepo": "OldImageRepo1": "NewImageRepo1", //eg:"dockerhub.com": "cn-north-4.swr.huaweicloud.com" "OldImageRepo2": "NewImageRepo2", //eg:"dockerhub.com/org1": "cn-north-4.swr.huaweicloud.com/org2" "NoRepo": "NewImageRepo3" //eg:"golang": "swr.cn-north-4.myhuaweicloud.com/paas/golang" } StorageClass:支持PVC、有状态应用VolumeClaimTemplates中存储类名称按照配置进行自动更换。 ImageRepo:支持工作负载所使用镜像的Repository地址的更换,工作负载包括Deployment(含initContainer)、StatefulSet、Orphaned Pod、Job、CronJob、Replica Set、Replication Controller、DaemonSet。
  • 应用恢复操作步骤 通过kubectl连接目标集群。具体方法可参考使用kubectl连接集群。 准备数据恢复配置文件:restore.json。 新建一个restore.json文件,按照格式修改,并将文件放置在k8clone工具所在目录下。 示例: { "StorageClass": { "csi-disk": "csi-disk-new" }, "ImageRepo": { "quay.io/coreos": "swr.cn-north-4.myhuaweicloud.com/paas" } } 进入k8clone工具所在目录,执行恢复命令,将备份数据恢复到目标集群。 示例: ./k8clone-linux-amd64 restore -d ./k8clone-dump.zip -f ./restore.json
  • 新建流水线 访问CodeArts Pipeline首页。 单击“新建流水线”,进入“基本信息”页面,参考表1配置流水线基本信息。 表1 流水线基本信息参数说明 参数项 说明 名称 流水线的名称,自定义。支持中文、大小写英文字母、数字、“-”、“_”,长度不超过128个字符。 所属项目 流水线归属项目。 从流水线服务首页入口新建流水线,请根据实际需要选择已创建的项目。 从项目下流水线入口新建流水线,所属项目默认为当前项目,不可更改。 代码源 流水线关联的代码源类型: CodeArts Repo代码源 Repo:提供企业代码托管的全方位服务,为软件开发者提供基于Git的在线 代码托管服务 。 非CodeArts的第三方代码源 码云:连接码云账号之后可以获取该账号下的仓库、分支等信息。 Github:连接Github账号后可以获取该账号下的仓库、分支等信息。 Gitcode:连接Gitcode账号后可以获取该账号下的仓库、分支等信息。 通用Git:连接第三方通用Git仓库后可以获取该账号下的仓库、分支等信息。 说明: GitCode流水线源当前仅支持“北京四”和“广州”局点白名单用户。如果您需要开通此功能,请新建工单或拨打客服热线进行咨询。 如果用户新建的流水线任务不需要关联代码仓,也可以选择“暂不选择”,不关联代码仓时,如果添加了需要关联代码仓的任务,执行时会提示错误,具体问题请参考常见问题。 服务扩展点 关联非CodeArts的第三方代码源时,需通过服务扩展点实现与对应仓库的连接。可选择准备工作中提前创建的扩展点,也可单击“新建服务扩展点”进行创建,具体操作请参考新建CodeArts服务扩展点。 代码仓 流水线关联的代码仓库。 默认分支 仓库默认分支,手工或定时执行流水线时默认使用的分支。 Repo HTTPS授权 关联Repo代码源时,可配置授权扩展点以提升代码库操作权限,当前主要用于流水线服务的微服务变更功能模块及其相关插件。可选择准备工作中提前创建的扩展点,也可单击“新建授权”进行创建,具体操作请参考新建CodeArts服务扩展点。 别名 仓库别名,设置别名后可基于别名生成仓库对应的系统参数,如:“别名_REPOSITORY_NAME”,表示仓库名称。生成的参数可在参数设置页面查看,并在流水线中通过“${参数名}”进行引用。 描述 不超过1024个字符。 配置完基本信息,单击“下一步”,进入“选择模板”页面。 您可以选择系统模板或自定义模板,在模板基础上快速新建流水线,并自动生成模板预置的任务,模板来源请参考管理流水线模板。 也可以选择“空模板”,即不使用模板,新建空任务流水线。 选择完模板,单击“确定”,完成流水线创建。 页面自动进入流水线“任务编排”页面,您可以继续配置流水线,也可以单击“取消”返回流水线列表。
共100000条