云服务器内容精选

  • 通过访问控制,保护数据安全性 正确的使用DCS提供的访问控制能力,可以有效预防您的数据被异常窃取或者破坏。 建议对不同角色的IAM用户仅设置最小权限,避免权限过大导致数据泄露或被误操作。 为了更好的进行权限隔离和管理,建议您配置独立的IAM管理员,授予IAM管理员IAM策略的管理权限。IAM管理员可以根据您业务的实际诉求创建不同的用户组,用户组对应不同的数据访问场景,通过将用户添加到用户组并将IAM策略绑定到对应用户组,IAM管理员可以为不同职能部门的员工按照最小权限原则授予不同的数据访问权限,详情请参见DCS权限管理。 建议配置白名单或安全组访问控制,保护您的数据不被异常读取和操作。 租户创建DCS实例后,可以通过配置白名单或安全组的方式进行访问控制。租户配置IP白名单或安全组的入方向、出方向规则限制,可以控制连接实例的网络范围,避免DCS暴露给不可信第三方。 Redis 4.0、Redis 5.0和Redis 6.0基础版通过白名单控制,请参考配置白名单。 Redis 6.0企业版通过配置安全组访问规则控制,请参考配置安全组。安全组入方向规则的“源地址”应避免设置为0.0.0.0/0。 建议不使用高危命令,避免攻击者直接对Redis进行致命性破坏。 为避免攻击者直接对Redis进行致命性破坏,如果业务没有使用场景,建议通过命令重命名的方式对其进行禁用, 相关列表请参见默认禁用的命令列表,支持重命名的命令列表。 建议使用非默认端口,避免端口被扫描攻击。 Redis Server监听的端口默认为6379,容易被扫描攻击,建议将端口设置为非默认端口。支持修改的端口范围:1~65535之间的其它端口号。详情请参见自定义或修改端口。 建议限制Redis客户端最大连接数,通过限制使用的资源,降低资源耗尽和拒绝服务风险。 Redis的maxclients参数决定了实例最大支持同时连接的客户端个数,默认值为10000,设置范围为1000~50000。如果超过自定义的连接数阈值,新的连接请求将被拒绝。 建议根据应用的具体使用场景设置合适的客户端最大连接数,限制资源耗尽和拒绝服务的可能性。修改maxclients参数请参见修改配置参数。 建议限制Redis连接闲置等待时间,根据业务实际场景来设置具体时间。 为避免client空闲连接长时间占用资源,可在控制台界面配置闲置等待时间(timeout参数),设置超时阈值后,将在连接空闲指定的秒数后关闭客户端连接。timeout默认值为0,表示服务端不会主动断开客户端的空闲连接。设置范围为0~7200,单位:秒。 建议根据应用的具体使用场景设置实际闲置等待时间,不建议将timeout设置为0。例如,可以将timeout设置为3600秒。避免出现资源耗尽和拒绝服务的可能性。修改timeout参数请参见修改配置参数。 建议将访问DCS实例方式设置为密码访问,防止未经认证的客户端误操作实例。达到对客户端进行认证访问的目的,提高实例使用的安全性。 您可以在购买Redis实例时进行设置访问密码,也可以对已创建的免密实例进行密码重置。 建议为DCS实例配置ACL访问控制权限。 DCS管理员可以为实例创建只读账号或者读写账号,用于不同业务场景下访问DCS的精细管控。 建议不同的业务使用不同的DCS实例,避免实例故障影响多个业务。
  • 构建数据的恢复和容灾能力 预先构建数据的容灾和恢复能力,可以有效避免异常数据处理场景下数据误删、破坏的问题。 建议开启实例自动备份,获得异常场景数据快速恢复能力。 DCS提供自动备份和手动备份两种备份操作。自动备份默认未开启,需要租户选择是否开启,备份存储期限最多7天。同时,开启自动备份后,允许对实例执行备份文件的恢复。自动备份请参见设置备份策略。 说明:手动备份是租户手动触发的实例全量备份,这些备份数据存储在华为OBS桶中,当租户删除实例时,会同步删除OBS桶中的快照。 建议使用跨AZ复制构建数据容灾能力。 DCS的主备和集群实例支持部署高可用实例,租户可选择在单可用区或多可用区中部署实例。当租户选择跨AZ实例时,DCS实例会主动建立和维护Redis同步复制。在实例主节点故障的情况下,缓存实例会自动将备实例升为主节点,从而达到高可用的目的。如果租户使用缓存实例时,业务中读取数据比例大,可以选择4.0以上版本的读写分离实例或者集群多副本实例,缓存实例会自动维护主节点和多个备节点之间的数据同步复制,租户可以根据业务需要连接不同的地址进行读写分离。 当租户选择跨AZ实例时,DCS实例会主动建立和维护Redis同步复制。在实例主节点故障的情况下,缓存实例会自动将备实例升为主节点,从而达到高可用的目的。
  • 审计是否存在异常数据访问 开启云审计服务,记录DCS的所有访问操作,便于事后审查。 云审计服务(Cloud Trace Service,CTS),是华为云安全解决方案中专业的日志审计服务,提供对各种云资源操作记录的收集、存储和查询功能,可用于支撑安全分析、合规审计、资源跟踪和问题定位等常见应用场景。 您开通云审计服务并创建和配置追踪器后,CTS可记录DCS的管理事件和数据事件用于审计。详情请参见查看DCS审计日志。 使用云监控服务对安全事件进行实时监控和告警。 您在使用DCS的过程中会也可能会遇到服务端返回的错误响应,为使您更好地掌握DCS实例状态,华为云提供了云监控服务(Cloud Eye)。您可使用该服务监控自己的DCS实例,执行自动实时监控、告警和通知操作,帮助您实时掌握DCS实例中所产生的请求、流量和错误响应等信息。 云监控服务不需要开通,会在用户创建DCS实例后自动启动。相关文档请参见DCS支持的监控指标、配置DCS监控告警。
  • 场景介绍 在网页和APP中常常需要用到榜单的功能,对某个key-value的列表进行降序显示。当操作和查询并发大的时候,使用传统数据库就会遇到性能瓶颈,造成较大的时延。 使用分布式缓存服务(DCS)的Redis版本,可以实现一个商品热销排行榜的功能。它的优势在于: 数据保存在缓存中,读写速度非常快。 提供字符串(String)、链表(List)、集合(Set)、哈希(Hash)等多种数据结构类型的存储。
  • 运行结果 编译并运行以上Demo程序,结果如下: 商品热销排行榜 产品ID: product-b290c0d4-e919-4266-8eb5-7ab84b19862d, 销量: 18433 产品ID: product-e61a0642-d34f-46f4-a720-ee35940a5e7f, 销量: 18334 产品ID: product-ceeab7c3-69a7-4994-afc6-41b7bc463d44, 销量: 18196 产品ID: product-f2bdc549-8b3e-4db1-8cd4-a2ddef4f5d97, 销量: 17870 产品ID: product-f50ca2de-7fa4-45a3-bf32-23d34ac15a41, 销量: 17842 产品ID: product-d0c364e0-66ec-48a8-9ac9-4fb58adfd033, 销量: 17782 产品ID: product-5e406bbf-47c7-44a9-965e-e1e9b62ed1cc, 销量: 17093 产品ID: product-0c4d31ee-bb15-4c88-b319-a69f74e3c493, 销量: 16432 产品ID: product-a986e3a4-4023-4e00-8104-db97e459f958, 销量: 16380 产品ID: product-a3ac9738-bed2-4a9c-b96a-d8511ae7f03a, 销量: 15305 产品ID: product-6b8ad4b7-e134-480f-b3ae-3d35d242cb53, 销量: 14534 产品ID: product-26a9b41b-96b1-4de0-932b-f78d95d55b2d, 销量: 11417 产品ID: product-1f043255-a1f9-40a0-b48b-f40a81d07e0e, 销量: 10875 产品ID: product-c8fee24c-d601-4e0e-9d18-046a65e59835, 销量: 10521 产品ID: product-5869622b-1894-4702-b750-d76ff4b29163, 销量: 10271 产品ID: product-ff0317d2-d7be-4021-9d25-1f997d622768, 销量: 9909 产品ID: product-da254e81-6dec-4c76-928d-9a879a11ed8d, 销量: 9504 产品ID: product-fa976c02-b175-4e82-b53a-8c0df96fe877, 销量: 8630 产品ID: product-0624a180-4914-46b9-84d0-9dfbbdaa0da2, 销量: 8405 产品ID: product-d0079955-eaea-47b2-845f-5ff05a110a70, 销量: 7930 产品ID: product-a53145ef-1db9-4c4d-a029-9324e7f728fe, 销量: 7429 产品ID: product-9b1a1fd1-7c3b-4ae8-9fd3-ab6a0bf71cae, 销量: 5944 产品ID: product-cf894aee-c1cb-425e-a644-87ff06485eb7, 销量: 5252 产品ID: product-8bd78ba8-f2c4-4e5e-b393-60aa738eceae, 销量: 4903 产品ID: product-89b64402-c624-4cf1-8532-ae1b4ec4cabc, 销量: 4527 产品ID: product-98b85168-9226-43d9-b3cf-ef84e1c3d75f, 销量: 3095 产品ID: product-0dda314f-22a7-464b-ab8c-2f8f00823a39, 销量: 2425 产品ID: product-de7eb085-9435-4924-b6fa-9e9fe552d5a7, 销量: 1694 产品ID: product-9beadc07-aab0-438c-ac5e-bcc72b9d9c36, 销量: 1135 产品ID: product-43834316-4aca-4fb2-8d2d-c768513015c5, 销量: 256 商品热销排行榜 前五大热销产品 产品ID: product-b290c0d4-e919-4266-8eb5-7ab84b19862d, 销量: 18433 产品ID: product-e61a0642-d34f-46f4-a720-ee35940a5e7f, 销量: 18334 产品ID: product-ceeab7c3-69a7-4994-afc6-41b7bc463d44, 销量: 18196 产品ID: product-f2bdc549-8b3e-4db1-8cd4-a2ddef4f5d97, 销量: 17870 产品ID: product-f50ca2de-7fa4-45a3-bf32-23d34ac15a41, 销量: 17842
  • 解决方案 基于存在的现状,只要保证两台机器加的锁是同一个锁,用加锁的方式对某种资源进行顺序访问控制。这就需要分布式锁登场了。 分布式锁的思路是:在整个系统提供一个全局的、唯一的分配锁的“东西”,当每个系统需要加锁时,都向其获取一把锁,使不同的系统获取到的内容可以认为是同一把锁。 当前分布式加锁主要有三种方式:(磁盘)数据库、缓存数据库、Zookeeper。 使用DCS服务中Redis类型的缓存实例实现分布式加锁,有几大优势: 加锁操作简单,使用SET、GET、DEL等几条简单命令即可实现锁的获取和释放。 性能优越,缓存数据的读写优于磁盘数据库与Zookeeper。 可靠性强,DCS有主备和集群实例类型,避免单点故障。 对分布式应用加锁,能够避免出现库存超卖及无序访问等现象。本实践介绍如何使用Redis对分布式应用加锁。
  • 应用现状 在传统单机部署的情况下,可以使用Java并发处理相关的API(如ReentrantLock或synchronized)进行互斥控制。这种Java提供的原生锁机制可以保证在同一个Java虚拟机进程内的多个线程同步执行,避免出现无序现象。 但在互联网场景,如商品秒杀中,随着整个系统的并发飙升,需要多台机器并发运行。例如当两个用户同时发起的请求分别落在两个不同的机器上时,虽然这两个请求可以同时执行,但是因为两个机器运行在两个不同的Java虚拟机中,因此每个机器加的锁不是同一个锁,而不同的锁只对属于自己Java虚拟机中的线程有效,对其他Java虚拟机的线程无效。此时,Java提供的原生锁机制在多机部署场景下就会失效,出现库存超卖的现象。
  • 应用场景 电商秒杀是一种网上竞拍活动,通常商家会在平台释放少量稀缺商品,吸引大量客户,平台会收到平时数十倍甚至上百倍的下单请求。但是只有少数客户可以下单成功。电商秒杀系统的分流过程可以分为以下几个步骤: 用户请求进入系统:当用户发起秒杀请求时,请求会首先进入负载均衡服务器。 负载均衡:负载均衡服务器会根据一定的算法将请求分发给后端多台服务器,以达到负载均衡的目的。负载均衡算法可以采用轮询、随机、最少连接数等方式。 业务逻辑处理:后端服务器接收到请求后,进行业务逻辑处理,并根据请求的商品数量、用户身份等信息进行校验。 库存扣减:如果库存充足,后端服务器会进行库存扣减操作,并生成订单信息,返回给用户秒杀成功的信息;如果库存不足,则返回给用户秒杀失败的信息。 订单处理:后端服务器会将订单信息保存到数据库中,并进行异步处理,例如发送消息通知用户订单状态。 缓存更新:后端服务器会更新缓存中的商品库存信息,以便处理下一次秒杀请求。 秒杀过程中多次访问数据库,下单通常是利用行级锁进行访问限制,抢到锁才能查询数据库和下单。但是秒杀时的大量订单请求,往往使数据库访问阻塞。
  • 手动备份DCS实例数据 登录分布式缓存服务管理控制台。 在管理控制台左上角单击,选择实例所在的区域。 单击左侧菜单栏的“缓存管理”,进入实例信息页面。 “缓存管理”支持通过筛选来查询对应的缓存实例。支持的筛选条件有“名称”、“规格”、“ID”、“IP地址”、“可用区”、“状态”、“实例类型”、“缓存类型”等。 在需要备份的DCS缓存实例左侧,单击实例名称,进入实例的基本信息页面。 单击“备份与恢复”页签,进入备份与恢复管理页面。 单击“手动备份”,弹出手动备份窗口。 选择备份格式,支持选择RDB格式或AOF格式。 Redis 4.0、5.0、6.0基础版和企业版高性能型实例支持选择RDB或AOF备份格式,企业版存储型实例仅支持RDB格式,Redis 3.0实例仅支持RDB格式。 AOF格式的备份会优先在从节点备份,从节点AOF会被重写。 单击“确定”,开始执行手工备份任务。 备注说明最长不能超过128个字节。 实例备份需耗时10~15分钟,备份期间发生的数据新增或修改记录,将不会保存到备份数据中。
  • 备份方式 DCS缓存实例支持自动和手动两种备份方式。 自动备份 您可以通过管理控制台设置一个定时自动备份策略,在指定时间点将实例的缓存数据自动备份存储。 自动备份频率以天为单位,您根据需要,选择每周备份一次或多次。备份数据保留最多7天,过期后系统自动删除。 自动备份主要目的在于让实例始终拥有一个完整的数据副本,在必要时可以及时恢复实例数据,保证业务稳定,实例数据安全多一重保障。 手动备份 除了定时备份,DCS还支持由用户手动发起备份请求,将实例当前缓存数据进行备份,并存储到OBS服务中。 您在执行业务系统维护、升级等高危操作前,可以先行备份实例缓存数据。
  • 关于数据恢复 数据恢复流程 您通过控制台发起数据恢复请求。 DCS从对象存储服务(OBS)获取数据备份文件。 暂停实例数据读写服务。 替换主实例的持久化文件。 重新加载新的持久化文件。 完成数据恢复,对外提供数据读写服务。 数据恢复对业务系统的影响 恢复操作是将备份文件在主节点执行,实例数据恢复期间需暂停数据读写服务,直到主实例完成数据恢复。 数据恢复异常处理 数据恢复文件如果被损坏,DCS在恢复过程中会尝试修复。修复成功则继续进行数据恢复,修复失败,DCS主备实例会将实例还原到执行恢复前的状态。
  • 备份的其他说明 支持备份的实例类型 Redis的“主备”、“Proxy集群”、“Cluster集群”和“读写分离”实例支持数据备份与恢复功能,“单机”实例暂不支持。单机实例若需要备份,可参考Redis单机实例使用Redis-cli工具备份,使用redis-cli工具导出RDB文件。 Memcached的“主备”实例支持数据备份与恢复功能,“单机”实例暂不支持。 备份原理 Redis 3.0实例采用的是AOF文件进行持久化,Redis 4.0及以上基础版实例,手动备份支持选择RDB格式和AOF格式进行持久化;自动备份仅支持RDB格式进行持久化。 如果需要导出Redis 3.0的RDB备份文件,可以通过redis-cli导出,使用命令:redis-cli -h {redis_address} -p 6379 -a {password} --rdb {output.rdb}。 DCS Redis 3.0已下线,暂停售卖,建议使用Redis 4.0及以上版本。 放通了SYNC命令的Redis 3.0单机实例可以通过执行此命令将RDB文件导出;Redis 3.0 proxy实例由于架构的原因,不支持放通SYNC命令,因此不能导出RDB文件。 备份任务在备节点执行,DCS通过将备节点的数据持久化文件压缩并转移到OBS服务中存储,从而实现实例数据备份。 DCS以小时为单位,定期检查所有实例的备份策略,对于需要执行备份的实例,启动备份任务。 备份过程对实例的影响 备份操作是在备节点执行,备份期间不影响实例正常对外提供服务。 在全量数据同步或者实例高负载的场景下,数据同步需要一定的时间,在数据同步没有完成的情况下开始备份,备份数据与主节点最新数据相比,有一定延迟。 由于备节点停止将发生的最新数据变化持久化到磁盘文件,备份期间主节点如有新的数据写入,备份文件也不会包含备份期间的数据变化。 备份时间点的选择 建议选择业务量少的时间段进行备份。 备份文件的存储 备份文件存储在对象存储服务(OBS)中。 自动备份异常的处理 自动备份任务触发后,如果实例当前正在进行重启、扩容等操作,则定时任务顺延到下一时间段处理。 实例备份失败或者因为其他任务正在进行而推迟备份,DCS会在下一时间段继续尝试备份,一天最多会尝试三次。 备份数据保存期限 自动备份产生的备份文件根据您设置的策略保留1-7天,超期由系统自动删除,但至少会保留最近一次的数据备份记录。 如果备份数量没有超出最大限制(24个),手动备份数据不会自动清除,您可根据需要手动删除备份数据。 自动和手动备份记录总数最多不超过24个,当备份记录超过24个时,自动删除最早的备份记录。 当删除实例时,备份数据会随实例删除,如果需要保存备份数据,请提前将备份数据下载保存。
  • 前提条件 已成功申请Memcached实例,且状态为“运行中”。 已创建弹性云服务器,并已安装好客户端。创建弹性云服务器的方法,请参见《弹性云服务器用户指南》。 您创建的弹性云服务器必须与Memcached实例属于同一个VPC,并配置相同的安全组,以确保弹性云服务器与缓存实例的网络是连通的。 如果弹性云服务器与Memcached实例不在相同VPC中,可以通过建立VPC对等连接方式连通网络,具体请参考常见问题:缓存实例是否支持跨VPC访问? 如果弹性云服务器与Memcached实例配置了不同的安全组,可以通过设置安全组规则连通网络,具体请参考常见问题:如何选择和配置安全组? 您的弹性云服务器已安装好Java JDK和常用的IDE(如Eclipse)。 已获取spymemcached-x.y.z.jar依赖包。 其中x.y.z为依赖包的版本号,建议获取最新版本。
  • 自动备份DCS实例数据 登录分布式缓存服务管理控制台。 在管理控制台左上角单击,选择实例所在的区域。 单击左侧菜单栏的“缓存管理”,进入实例信息页面。 “缓存管理”支持通过筛选来查询对应的缓存实例。支持的筛选条件有“名称”、“规格”、“ID”、“IP地址”、“可用区”、“状态”、“实例类型”、“缓存类型”等。 在需要备份的DCS缓存实例左侧,单击实例名称,进入实例的基本信息页面。 单击“备份与恢复”页签,进入备份恢复管理页面。 单击“自动备份”右侧的,打开自动备份开关,显示备份策略信息。 表1 备份策略参数说明 参数 说明 备份周期 自动备份频率。 可设置为每周的某一天或者某几天,按实际需要适当增加备份频率。 保留天数 备份数据保存期限。 保存天数可选1~7,超过期限后,备份数据将被永久删除,无法用来恢复实例。 开始时间 自动备份任务执行时间。时间格式:00:00~23:00间的任意整点时间。 每小时检查一次备份策略,如果符合备份策略设置的开始时间,则执行备份操作。 说明: 实例备份大约耗时5~30分钟,备份期间发生的数据新增或修改记录,将不会保存到备份数据中。为了尽量减少备份对业务的影响,备份开始时间建议设置在业务交易较少的时间段。 实例只有处于“运行中”状态时,系统才对其执行数据备份。 设置好备份参数,单击“确定”,完成备份策略设置。 实例将在设置的备份时间自动执行备份,并在该页面查看备份记录。 备份完成后,单击备份记录后的“下载”,“恢复”,或“删除”,即可执行相关操作。
  • 配置Redis ACL访问账号 登录分布式缓存服务管理控制台。 在管理控制台左上角单击,选择实例所在的区域。 单击左侧菜单栏的“缓存管理”,进入实例信息页面。 单击DCS缓存实例名称,进入该实例的基本信息页面。 选择“账号管理”进入账号管理页面。 “账号名称”为“default”的账号为实例的“默认账号”,默认账号的权限为读写权限,该账号的密码即缓存实例的密码。 单击“创建账号”,可以创建普通账号。 每个实例支持最多18个普通账号。 如果Redis实例开启了免密访问,创建的普通账号不生效,仅支持默认账号。 如需使用普通账号请先关闭默认账号的免密访问:单击默认账号对应“操作”列的“重置密码”即可为实例设置密码。 在弹出的创建账号窗口中,设置“账号名称”、选择账号权限为“只读”或“读写”、设置账号密码及备注。 单击“确定”,完成账号创建。 当使用创建的ACL普通账号连接实例时,需要配置实例密码为{username:password}。 以使用redis-cli连接Redis实例为例,当使用默认账号连接实例时命令如下: ./redis-cli -h {dcs_instance_address} -p 6379 -a {password} 如果使用实例创建的ACL普通账号连接,实例密码需要配置为“账号名称:账号密码”: ./redis-cli -h {dcs_instance_address} -p 6379 -a {username:password} 图1 账号管理