云服务器内容精选

  • 包年/包月资源 对于包年/包月计费模式的资源,例如包年/包月的GeminiDB Redis实例,用户在购买时会一次性付费,服务将在到期后自动停止使用。 如果在计费周期内不再使用包年/包月资源,您可以执行退订操作,系统将根据资源是否属于五天无理由退订、是否使用代金券和折扣券等条件返还一定金额到您的账户。详细的退订规则请参见云服务退订规则概览。 如果您已开启“自动续费”功能,为避免继续产生费用,请在自动续费扣款日(默认为到期前7日)之前关闭自动续费。
  • 如何使用GeminiDB Redis提供的多个节点IP地址 GeminiDB Redis提供多个IP地址供客户连接,连接任何一个IP地址都可以访问整个集群,其目的是为了提供负载均衡和容灾能力。 您可以通过以下三种方法使用多个IP。 业务侧实现连接池,实现负载均衡和故障检测处理。 联系客服,为您配置ELB(Elastic Load Balance,弹性负载均衡)服务,提供唯一IP供客户使用。 对多个proxy IP配置DNS 域名 ,详情请参见通过负载均衡地址连接实例(推荐)章节中“通过内网域名连接实例”的方法。 父主题: 数据库连接
  • 为什么阿里云Redis、腾讯云Redis等云服务不能使用DRS进行数据迁移? 通常有以下因素: 不支持PSync迁出协议:存在一些自研的Redis-like数据库没有兼容PSync协议。 架构限制:较多云厂商支持代理模式,即在用户与Redis服务之间增加Proxy组件。因为Proxy组件的存在,所以PSync协议无法支持。 安全限制:在原生Redis中PSync协议基本会触发fork,会导致内存膨胀与用户请求延迟增加,甚至可能会发生“out of memory”。 商业策略:较多用户使用RedisShake是为了下云或者换云,屏蔽了PSync协议。 通常可以使用对应云服务的数据迁移服务,可以完成迁移,迁移详情请参考Redis数据迁移方案概览。 父主题: 数据迁移
  • 成本分配 成本管理的基础是树立成本责任制,让各部门、各业务团队、各责任人参与进来,为各自消耗云服务产生的成本负责。企业可以通过成本分配的方式,将云上成本分组,归集到特定的团队或项目业务中,让各责任组织及时了解各自的成本情况。 华为云成本中心支持通过多种不同的方式对成本进行归集和重新分配,您可以根据需要选择合适的分配工具。 通过关联账号进行成本分配 企业主客户可以使用关联账号对子客户的成本进行归集,从而对子账号进行财务管理。详细介绍请参见通过关联账号维度查看成本分配。 通过企业项目进行成本分配 在进行成本分配之前,建议开通企业项目并做好企业项目的规划,可以根据企业的组织架构或者业务项目来划分。在购买云资源时选择指定企业项目,新购云资源将按此企业项目进行成本分配。详细介绍请参见通过企业项目维度查看成本分配。 图1 选择企业项目 通过成本标签进行成本分配 标签是华为云为了标识云资源,按各种维度(例如用途、所有者或环境)对云资源进行分类的标记。推荐企业使用预定义标签进行成本归集,具体流程如下: 图2 添加标签 详细介绍请参见通过成本标签维度查看成本分配。 使用成本单元进行成本分配 企业可以使用成本中心的“成本单元”来拆分公共成本。公共成本是指多个部门共享的计算、网络、存储或资源包产生的云成本,或无法直接通过企业项目、成本标签分配的云成本。这些成本不能直接归属于单一所有者,因此不能直接归属到某一类别。使用拆分规则,可以在各团队或业务部门之间公平地分配这些成本。详细介绍请参见使用成本单元查看成本分配。 父主题: 成本管理
  • 迁移原理 使用自研迁移工具leveldb-port,和LevelDB部署在相同机器上,准备好配置文件,启动迁移即可自动完成全量与增量的迁移。 全量迁移对LevelDB数据进行快照,然后扫描整个数据库,将数据打包成GeminiDB Redis接口识别的格式,发送到GeminiDB Redis接口,具有很高的迁移效率。 增量迁移解析LevelDB的wal文件,将LevelDB的操作解析出来,然后对其中的key进行分片,多线程进行发送。
  • Pipeline 简介 Redis 是一个请求/响应模型的服务,通常执行一个命令的流程为: 图1 Redis 命令执行流程 客户端发送命令到 Redis 服务器。 Redis 服务器收到命令,排队等待处理。 Redis 服务器执行命令。 Redis 服务器返回结果给客户端。 上述4个步骤中,步骤1和4是IO操作,速度慢并且受网络状况影响,很容易成为瓶颈点。 为了减小网络开销,充分发挥 Redis 高性能的优势,可以使用 Pipeline 流水线执行命令。Pipeline 机制通过将一组 Redis 命令进行组装,一次发送多个命令,并在执行完成后一次性返回结果集,可以减少网络传输带来的开销,流程如下图所示: 图2 使用 Pipeline 访问Redis 上图中的 Pipeline 将3条命令封装成一组,只需要进行一次网络IO就完成了3条命令的执行。 除了网络层面的开销,使用 Pipeline 还可以减少客户端/服务器的 read()/write() 调用,提高程序的执行效率。
  • Pipeline 大小选择及注意事项 虽然使用 Pipeline 可以节省网络IO开销,但 Pipeline 并不是越大越好;使用 Pipeline 对程序性能的提升是有上限的,随着 Pipeline 逐渐增加,提高 Pipeline 的收益逐渐降低;如果一次组装的 Pipeline 数据量过大,一方面会导致客户端等待时间增加,另一方面,如果大的 Pipeline 导致 socket buffer 写满,可能会带来网络阻塞,反而引起性能下降; 根据经验,30 - 100 大小的 Pipeline 就已经可以充分发挥数据库的性能,具体最佳值与实际业务有关,建议以实际测试为准。 其它注意事项: Pipeline 不保证原子性,服务端在处理批量命令时,解析出多个单命令并按顺序执行,各个命令相互独立,服务端有可能在该过程中执行其他客户端的命令。某个命令执行失败不会影响其他命令的执行,如需原子性,需要使用事务或lua实现。 单次 Pipeline 的大小需要适当,大Pipeline可能会有OOM风险,也可能会造成网络阻塞;因为Redis 必须在处理完所有命令前,先缓存起所有命令的处理结果。这样会有内存的消耗,过大Pipeline造成内存上涨甚至OOM;对于单个命令数据长度较大的场景,需要适当的减小 Pipeline。 对于时延敏感的场景,不建议使用大 Pipeline,需要结合业务场景选择合适的 Pipeline大小。
  • 连接方式介绍 GeminiDB Redis兼容开源Redis接口,支持应用程序使用多种SDK访问。同时还提供数据管理服务(Data Admin Service,简称DAS)、内网、公网的访问途径。 连接GeminiDB Redis实例的使用流程介绍如图1所示。 图1 连接方式介绍 表1 连接方式 连接方式 使用场景 默认端口 说明 DAS连接 GeminiDB Redis支持通过管理控制台的Web客户端连接Redis实例 - - 内网连接 介绍通过内网IP、内网域名或负载均衡地址连接GeminiDB Redis实例的方法。 该方式适用于当应用部署在弹性云服务器上,且该弹性云服务器与数据库实例处于同一区域、同一VPC内时连接数据库实例。 6379 推荐使用负载均衡地址连接实例,可靠性高,可消除单点故障带来的影响。 安全性高,可实现数据库实例的较好性能。 E CS 与Redis实例在相同安全组 默认ECS与Redis实例内网互通,无需设置安全组规则。 ECS与Redis实例在不同安全组时,需要为Redis和ECS分别设置安全组规则。 设置Redis安全组规则:为Redis所在安全组配置相应的入方向规则,详见设置安全组规则。 设置ECS安全组规则:安全组默认规则为出方向上数据报文全部放行,此时,无需对ECS配置安全组规则。当在ECS所在安全组为非默认安全组且出方向规则非全放通时,需要为ECS所在安全组配置相应的出方向规则。 公网连接 介绍通过公网域名、弹性公网IP或负载均衡器绑定弹性公网IP连接GeminiDB Redis实例的方法。 该方式适用于不能通过内网方式访问数据库实例时,可以单独使用公网域名或弹性公网IP连接弹性云服务器(或公网主机)与数据库实例。 6379 为了获得更快的传输速率和更高的安全性,建议您将应用迁移到与您的数据库实例在同一VPC子网内,使用内网连接。 推荐负载均衡器绑定弹性公网IP的方式,可靠性高,可消除单点故障影响。 用户需要购买弹性公网IP,请参见弹性公网IP计费说明。 。 客户端连接 介绍通过不同代码的方式访问GeminiDB Redis实例的方法,详情请参见客户端通过代码连接实例示例。 6379 - 父主题: 连接实例
  • 权限配置 使用 IAM 统一身份认证 )的用户,需要给对应的子用户授予DAS FullAccess权限,否则子用户无法正常使用该功能。具体授权的操作请参见创建用户并授权。 同时您也可以通过创建自定义策略的方式来限制有权限的数据库类型,具体操作如下: 登录统一身份认证服务页面,单击“创建自定义策略”。 图1 创建自定义策略 设置策略名称、策略配置方式、策略内容等信息。 图2 配置自定义策略 表1 自定义策略信息 参数名称 描述 策略名称 输入策略名称。 策略配置方式 此处选择“JSON视图”。 策略内容 在策略内容中配置如下自定义策略: { "Version": "1.1", "Statement": [ { "Action": [ "das:*:*", "nosql:instance:list" ], "Effect": "Allow" } ] } 或者您也可以在“策略内容”区域,单击“从已有策略复制”,选择“DAS FullAccess”作为模板,然后只保留对应的DB类型就可以指定权限的范围,此处只需要保留“nosql:instance:list”即可。 策略描述 输入策略描述。 作用范围 默认项目级服务 单击“确定”,返回权限页面,可以查看到创建成功的自定义策略。 图3 查看自定义策略 创建用户组。 图4 创建用户组 为4创建的用户组授权3已创建好的自定义策略。 图5 授权自定义策略 图6 选择自定义策略 单击用户组名称,进入用户组管理,添加对应的子用户即可。 图7 添加子用户
  • 请求示例 查询实例所有节点的会话信息 GET https://{endpoint}/v3/054e292c9880d4992f02c0196d3ea468/instances/e73893ef73754465a8bd2e0857bbf13ein12/sessions 查询实例指定节点的会话信息 GET https://{endpoint}/v3/054e292c9880d4992f02c0196d3ea468/instances/e73893ef73754465a8bd2e0857bbf13ein12/sessions?node_id=9d3288bbbb81448e8a99ff41a5717281no12
  • 响应示例 状态码: 200 Success. { "node_sessions" : [ { "node_id" : "8436a91546294036b75931e879882200in06", "total_count" : 1, "sessions" : [ { "addr" : "127.0.0.1:8080", "id" : 54487, "name" : "cli", "cmd" : "get", "age" : 8888581, "idle" : 8888581, "db" : 0, "fd" : 1311, "sub" : 0, "psub" : 0, "multi" : -1 } ] }, { "node_id" : "8123sa46294daw13def423fw79882200in06", "total_count" : 1, "sessions" : [ { "addr" : "127.0.0.1:8080", "id" : 54488, "name" : "cli", "cmd" : "get", "age" : 3124124, "idle" : 4414141, "db" : 0, "fd" : 1312, "sub" : 0, "psub" : 0, "multi" : -1 } ] } ] }
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 node_sessions Array of 表5 objects 节点的会话信息列表。 表5 ListNodeSessionsResult 参数 参数类型 描述 node_id String 节点ID。 total_count Integer 总会话数。 sessions Array of 表6 objects 节点会话详细信息列表。 表6 sessions 参数 参数类型 描述 id String 会话ID。 name String 连接名。 cmd String 最近一次执行的命令。 age String 以秒计算的已连接时长。 idle String 以秒计算的空闲时长。 db String 该客户端正在使用的数据库ID。 addr String 客户端的地址和端口。 fd String 套接字所使用的文件描述符。 sub String 已订阅频道的数量。 psub String 已订阅模式的数量。 multi String 在事务中被执行的命令数量。 状态码: 400 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误消息。 状态码: 500 表8 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误消息。
  • URI GET https://{Endpoint}/v3/{project_id}/instances/{instance_id}/sessions 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 租户在某一region下的project ID。获取方法请参见获取项目ID。 instance_id 是 String 实例ID。 表2 Query参数 参数 是否必选 参数类型 描述 node_id 否 String 节点ID。
  • 请求示例 URI样例 PUT https://gaussdb-nosql.cn-north-7.myhuaweicloud.com/v3/054e292c9880d4992f02c0196d3ea468/enterprise-projects/quotas 修改企业项目配额,第一个实例配额修改为“1000”,vcpus配额修改为“500”,ram配额修改为“1024” { "quotas" : [ { "enterprise_project_id" : "4d05638e-d4c6-477c-9b51-9620fa257a11", "quota" : { "instance" : 1000, "vcpus" : 500, "ram" : 1024 } }, { "enterprise_project_id" : "92450d0e-8c4b-48e1-9909-4d9d2f086ce4", "quota" : { "ram" : 512 } } ] }
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。 表3 请求Body参数 参数 是否必选 参数类型 描述 quotas 是 objects 需要修改的企业项目配额信息列表。详情请参考表4。 表4 NoSqlRequestEpsQuota 参数 是否必选 参数类型 描述 enterprise_project_id 是 String 企业项目ID。 quota 是 object 需要修改的配额信息。详情请参考表5。 说明: 其中“instance”、“vcpus”和“ram” 至少需要传一个参数。 表5 NoSqlEpsQuotaRequestInfo 参数 是否必选 参数类型 描述 instance 否 Integer 实例配额。 vcpus 否 Integer vcpus配额。 ram 否 Integer ram配额。