云服务器内容精选

  • 操作场景 根据实际业务的需要,用户可以通过CloudPond内部的本地网关打通小站和本地系统之间的网络,达到内部网络互访的效果。 您首先需要为本地网关路由表关联VPC,然后为其添加到本地网络的路由信息。配置完成后,通过测试边缘可用区的弹性云服务器和用户本地系统中的服务器之间的网络是否连通,来验证CloudPond和用户本地系统之间的网络连通性。 请参考概述了解CloudPond网络连接的总体数据规划,此外,您可以参考组网方案和要求全面详细了解CloudPond的网络连接要求。
  • 验证CloudPond和用户本地系统之间的网络连通性 以windows弹性云服务器为例进行说明: 在CloudPond边缘可用区新建一台弹性 云服务器ECS 03(加入VPC01,选择子网网段10.0.3.0/24)。 参数“可用区”选择“边缘可用区”,其余操作和在华为云区域通用可用区的方法完全一致。 方法请参见自定义购买弹性云服务器。 将E CS 03所在的安全组放通“入方向”的“ICMP”规则,出方向默认全部放通。详见安全组配置规则。 服务器列表页面查询到ECS03,从“IP地址”列获取并记录其私有IP地址(如10.0.3.110)。 登录本地系统服务器Server01,执行到弹性云服务器ECS03的ping命令,验证Server01和ECS03的网络连通性。 ping 10.0.3.110 检查ping命令返回结果,可以ping通表示网络可连通。如果ping不通请排查原因并联系华为云运维团队处理。
  • 验证通用可用区和用户本地系统之间的网络连通性 当配置了通用可用区和用户本地系统之间的路由信息时,即在表1中的“目的地址”参数填写为虚拟私有云的大网段,或者又单独新增了对应子网网段的路由信息,您可以在本地系统通过VPC内网访问通用可用区的云服务。 以windows弹性云服务器为例进行说明: 在CloudPond通用可用区新建一台弹性云服务器ECS01(加入VPC01,选择子网网段10.0.0.0/16)。 参数“可用区”选择“通用可用区”。 方法请参见自定义购买弹性云服务器。 将ECS01所在的安全组放通“入方向”的“ICMP”规则,出方向默认全部放通。详见安全组配置规则。 在弹性云服务器列表页面查询到ECS01,从“IP地址”列获取并记录其私有IP地址(如10.0.1.110)。 登录本地系统服务器Server01,执行到弹性云服务器ECS01的ping命令,验证Server01和ECS01的网络连通性。 ping 10.0.1.110 检查ping命令返回结果,可以ping通表示网络可连通。如果ping不通请排查原因并联系华为云运维团队处理。
  • 前提条件 准备弹性负载均衡ELB,创建ELB的操作,请参考创建独享型负载均衡器。创建的ELB必须符合以下条件。如果已有符合条件的ELB,无需重复创建。 ELB的实例类型必须选择“独享型”,且必须开启“IP类型后端(跨VPC后端)”。 ELB的规格中必须包含“网络型(TCP/UDP)”。 ELB必须选择与Redis实例相同的VPC。 ELB必须绑定弹性公网IP(EIP)。 ELB必须有可用的端口。 单个ELB挂载多个实例时,Redis的性能会受限于ELB的规格。 为保护Redis实例的网络安全性,Redis实例必须配置访问密码,免密访问的实例不支持开启公网访问。如需修改免密访问的实例为密码访问,请参考重置缓存实例密码。
  • 开启公网访问并获取公网访问地址 登录分布式缓存服务管理控制台。 在管理控制台左上角单击,选择实例所在的区域。 单击左侧菜单栏的“缓存管理”,进入缓存管理页面。 单击需要开启公网访问的实例名称,进入该实例的基本信息页面。 单击“公网访问”后的“开启”。 在开启公网访问弹窗中勾选需要绑定的ELB,单击“确定”。 如果没有可选的ELB,单击页面提示的“弹性负载均衡”跳转链接,可前往ELB控制台页面进行创建。如果已经创建了ELB,未在ELB选择列表中,请参考前提条件中的说明排查ELB是否符合绑定条件。 Redis实例绑定ELB期间,请勿删除绑定的ELB和监听器,并保证ELB可用,否则会影响Redis的正常公网连接。 如果需要删除ELB实例,请先在Redis实例详情页面解除绑定(关闭公网连接),再在ELB控制台删除ELB实例。 图1 绑定ELB 开启公网公网状态显示“成功”后,表示开启公网访问成功。 单击左侧菜单栏的“概览”,返回实例基本信息页面查看公网访问信息。如需关闭公网访问,单击“关闭”。 图2 公网访问连接地址 上图中的“EIP”地址为Redis实例的公网访问地址,“监听器”后的端口号为公网访问的端口。 主备实例开启公网访问后,会生成两个监听器。一个主节点监听器(以listener-master开头)和一个备节点监听器(以listener-slave开头),分别用于监听实例的主节点和备节点。公网连接主备实例时请使用主监听器后的端口用于连接主备实例的主节点。仅当需要配置主备实例读写分离时,需要同时使用主、备监听器端口,分别连接主、备节点。 图3 主备实例公网连接地址 连接信息中的“连接地址”及“IP地址”为相同VPC内客户端访问Redis时的“ 域名 地址:端口”和“IP地址:端口”。
  • Redis实例配置ELB内网IP白名单(可选) 如果Redis开启了IP白名单,需要将ELB内网IP地址添加到Redis实例的IP白名单中,以确保ELB可以访问Redis实例: 单击“公网访问”中ELB后的链接,跳转到负载均衡器页面。 复制页面中的ELB“ID”。 单击页面中“IPv4私有地址”后的地址,跳转到对应子网页面。 选择“IP地址管理”页签,在第二个搜索框中筛选资源ID(已复制的ELB ID),获取ELB内网IP地址。 将ELB的全部内网IP地址添加到Redis的IP白名单中,添加方式请参考配置Redis访问白名单。
  • 步骤五:验证接口连通性 参考使用客户端连接Kafka(关闭SASL)或者使用客户端连接Kafka(开启SASL),测试是否可以生产和消费消息。 测试接口连通性时,注意以下几点: 连接Kafka实例的地址为“advertised.listeners IP:9011”,以图8为例,连接Kafka实例的地址为“192.168.0.71:9011,192.168.0.11:9011,192.168.0.21:9011”。 在Kafka实例安全组的入方向规则中放通9011端口,以及198.19.128.0/17网段的地址。 如果Kafka实例的子网配置了网络ACL功能,需要在网络ACL的入方向规则中放通198.19.128.0/17网段的地址,以及 VPC终端节点 涉及的子网。 198.19.128.0/17是为VPC终端节点分配的网段,使用VPC终端节点需要放通此网段。
  • 应该选择域名还是IP地址连接Redis实例? 对于Redis单机、Proxy集群、读写分离实例: 每个实例只有1个IP地址和1个域名连接地址。实例发生主备交换前后,实例的IP地址和域名连接地址都不会改变。选择域名连接或IP连接不影响功能的使用。 对于Redis基础版主备实例: 每个实例有1个IP地址和2个域名连接地址,包含1个只读域名。实例发生主备交换前后,实例的IP地址和域名连接地址都不会改变。选择域名连接或IP连接不影响功能的使用。 使用域名连接时,需要考虑业务的读写请求区别,选择“连接地址”或“IP地址”连接不影响功能的使用,使用“只读地址”连接时只处理读请求(有读写分离需求的用户推荐直接使用读写分离实例)。 对于Redis 6.0企业版: 请使用域名连接实例,IP地址可能有多个或发生变化。 对于Cluster集群实例: Cluster集群是多主多从架构,有多组主从节点IP地址和1个域名连接地址。选择域名连接或IP连接不影响功能的使用。 使用IP地址连接实例时,可以使用任意一个IP地址连接实例,连接的节点会将请求发送到正确的节点上,使Cluster的全部节点都可以接收请求。建议配置多个或全部IP地址连接,避免所配置的IP地址所在节点故障时导致连接失败。 域名解析返回的IP数量最多为50个,如需限制解析返回的IP数量,请联系后台管理人员。 如果客户端服务器和Redis实例不在同一Region,需要跨Region访问Redis实例时,实例域名无法跨Region解析,无法通过域名访问。可以通过在hosts中手动配置域名与IP绑定关系或使用IP进行访问。参考Redis连接约束。 连接实例请参考连接Redis缓存实例。 父主题: 客户端和网络连接
  • 性能问题导致连接超时 使用了keys等消耗资源的命令,导致CPU使用率超高;或者实例没有设置过期时间、没有清除已过期的Key,导致存储的数据过多,一直在内存中,内存使用率过高等,这些都容易出现访问缓慢、连接不上等情况。 建议客户改成scan命令或者禁用keys命令。 查看监控指标,并配置对应的告警。监控项和配置告警步骤,可查看必须配置的监控告警。 例如,可以通过监控指标“内存利用率”和“已用内存”查看实例内存使用情况、“活跃的客户端数量”查看实例连接数是否达到上限等。 检查实例是否存在大Key和热Key。 DCS控制台提供了大Key和热Key的分析功能,具体使用,请参考分析Redis实例的大Key和热Key。
  • 公网连接Redis 3.0 在进行公网访问时,请先仔细阅读公网连接章节,检查实例是否满足公网访问的要求。 连接时提示:Error: Connection reset by peer或者出现:远程主机强迫关闭一个现有的连接。 原因1:安全组没有配置正确。 解决方法:需要允许Redis实例被访问,具体配置操作和公网连接操作,请按照公网连接章节中的操作进行。 原因2:查看Redis所在vpc子网是否被ACL关联,同时这个ACL出方向被限制了。若是,放开限制。 原因3:开启了SSL加密传输,连接时没有安装配置Stunnel,直接使用了界面提示的IP地址进行连接。 解决方法:开启SSL加密时,必须安装配置Stunnel客户端,具体操作,请按照公网连接Redis实例(开启SSL加密)执行。其中,请注意,在连接Redis实例命令中,IP地址需要配置为Stunnel客户端地址和端口,不要使用控制台展示的Redis实例公网连接地址和端口。 已经开启了公网访问的Redis实例,公网访问被关闭了,无法使用公网访问。 原因:该Redis实例绑定的弹性公网IP被解绑,导致Redis实例公网被关闭。 解决方法:在控制台重新开启实例的公网访问,绑定弹性公网IP,并重新连接。
  • 客户端连接问题 在使用Redis-cli连接Cluster集群时,连接失败。 解决方法:请检查连接命令是否加上-c,在连接Cluster集群节点时务必使用正确连接命令。 Cluster集群连接命令: ./redis-cli -h {dcs_instance_address} -p 6379 -a {password} -c 单机、主备、Proxy集群连接命令: ./redis-cli -h {dcs_instance_address} -p 6379 -a {password} 具体连接操作,请参考Redis-cli连接。 出现Read timed out或Could not get a resource from the pool。 解决方法: 排查是否使用了keys命令,keys命令会消耗大量资源,造成Redis阻塞。建议使用scan命令替代,且避免频繁执行。 排查实例是否是Redis 3.0,Redis 3.0底层用的是sata盘,当Redis数据持久化即AOF时,会触发偶现的磁盘性能问题,导致连接异常,可更换Redis实例为4.0及以上版本,其底层是ssd盘,磁盘性能更高,或若不需要持久化可关闭AOF。 出现unexpected end of stream错误,导致业务异常。 解决方法: Jedis连接池调优,建议参考Jedis参数配置建议进行配置连接池参数。 排查是否大key较多,建议根据优化大key排查优化。 连接断开。 解决方法: 调整应用超时时间。 优化业务,避免出现慢查询。 建议使用scan命令替代keys命令。 Jedis连接池问题,请参考使用Jedis连接池报错如何处理?。
  • 带宽超限导致连接问题 当实例已使用带宽达到实例规格最大带宽,可能会导致部分Redis连接超时现象。 您可以查看监控指标“流控次数”,统计周期内被流控的次数,确认带宽是否已经达到上限。 然后,检查实例是否有大Key和热Key,如果存在大Key或者单个Key负载过大,容易造成对于单个Key的操作占用带宽资源过高。大Key和热Key操作,请参考分析实例大Key和热Key。 Redis 4.0及之后版本的实例,支持通过控制台对Redis实例进行带宽扩容,可用于解决带宽超限的问题。
  • Redis和ECS之间的连接问题 客户端所在的ECS必须和Redis实例在同一个VPC内,并且需要确保ECS和Redis之间可以正常连接。 如果是Redis 3.0或企业版实例,Redis和ECS的安全组没有配置正确,连接失败。 解决方法:配置ECS和Redis实例所在安全组规则,允许Redis实例被访问。具体配置,可以参考配置安全组。 如果是Redis 4.0/5.0/6.0基础版实例,开启了白名单功能,连接失败。 如果实例开启了白名单,在使用客户端连接时,需要确保客户端IP是否在白名单内,如果不在白名单,会出现连接失败。具体配置操作,可以参考配置白名单。客户端IP如果有变化,需要将变化后的IP加入白名单。 Redis实例和ECS不在同一个Region。 解决方法:不支持跨Region访问,可以在ECS所在的Region创建Redis实例,创建时注意选择与ECS相同VPC,创建之后,使用数据迁移进行迁移,将原有Redis实例数据迁移到新实例中。 Redis实例和ECS不在同一个VPC。 不同的VPC,网络是不相通的,不在同一VPC下的ECS是无法访问Redis实例。可以通过创建VPC对等连接,将两个VPC的网络打通,实现跨VPC访问Redis实例。 关于创建和使用VPC对等连接,请参考VPC对等连接说明。
  • Jedis连接池参数配置建议 表1 Jedis连接池参数配置建议 参数 配置介绍 配置建议 maxTotal 最大连接,单位:个 根据Web容器的Http线程数来进行配置,估算单个Http请求中可能会并行进行的Redis调用次数,例如:Tomcat中的Connector内的maxConnections配置为150,每个Http请求可能会并行执行2个Redis请求,在此之上进行部分预留,则建议配置至少为:150 x 2 + 100= 400 限制条件:单个Redis实例的最大连接数。maxTotal和客户端节点数(CCE容器或业务VM数量)数值的乘积要小于单个Redis实例的最大连接数。 例如:Redis主备实例配置maxClients为10000,单个客户端maxTotal配置为500,则最大客户端节点数量为20个。 maxIdle 最大空闲连接,单位:个 配置与maxTotal一致。 minIdle 最小空闲连接,单位:个 一般来说建议配置为maxTotal的X分之一,例如此处常规配置建议为:100。 对于性能敏感的场景,为了防止经常连接数量抖动造成影响,可以配置与maxIdle一致,例如:400。 maxWaitMillis 最大获取连接等待时间,单位:毫秒 获取连接时最大的连接池等待时间,根据单次业务最长容忍的失败时间减去执行命令的超时时间得到建议值。例如:Http最长容忍的失败时间为15s,Redis请求的timeout设置为10s,则此处可以配置为5s。 timeout 命令执行超时时间,单位:毫秒 单次执行Redis命令最大可容忍的超时时间,根据业务程序的逻辑进行选择,出于对网络容错等考虑建议配置为不小于210ms。特殊的探测逻辑或者环境异常检测等,可以适当调整达到秒级。 minEvictableIdleTimeMillis 空闲连接逐出时间,大于该值的空闲连接一直未被使用则会被释放,单位:毫秒 如果希望系统不会经常对连接进行断链重建,此处可以配置一个较大值(xx分钟),或者此处配置为-1并且搭配空闲连接检测进行定期检测。 timeBetweenEvictionRunsMillis 空闲连接探测时间间隔,单位:毫秒 根据系统的空闲连接数量进行估算,例如系统的空闲连接探测时间配置为30s,则代表每隔30s会对连接进行探测,如果30s内发生异常的连接,经过探测后会进行连接排除。根据连接数的多少进行配置,如果连接数太大,配置时间太短,会造成请求资源浪费。对于几百级别的连接,常规来说建议配置为30s,可以根据系统需要进行动态调整。 testOnBorrow 向资源池借用连接时是否做连接有效性检测(ping),检测到的无效连接将会被移除。 对于业务连接极端敏感的,并且性能可以接受的情况下,可以配置为True,一般来说建议配置为False,启用连接空闲检测。 testWhileIdle 是否在空闲资源监测时通过ping命令监测连接有效性,无效连接将被销毁。 True testOnReturn 向资源池归还连接时是否做连接有效性检测(ping),检测到无效连接将会被移除。 False maxAttempts 在JedisCluster模式下,您可以配置maxAttempts参数来定义失败时的重试次数。 建议配置3-5之间,默认配置为5。 根据业务接口最大超时时间和单次请求的timeout综合配置,最大配置不建议超过10,否则会造成单次请求处理时间过长,接口请求阻塞。
  • Jedis连接池优势 Lettuce客户端及Jedis客户端比较如下: Lettuce: Lettuce客户端没有连接保活探测,错误连接存在连接池中会造成请求超时报错。 Lettuce客户端未实现testOnBorrow等连接池检测方法,无法在使用连接之前进行连接校验。 Jedis: Jedis客户端实现了testOnBorrow、testWhileIdle、testOnReturn等连接池校验配置。 开启testOnBorrow在每次借用连接前都会进行连接校验,可靠性最高,但是会影响性能(每次Redis请求前会进行探测)。 testWhileIdle可以在连接空闲时进行连接检测,合理配置阈值可以及时剔除连接池中的异常连接,防止使用异常连接造成业务报错。 在空闲连接检测之前,连接出现问题,可能会造成使用该连接的业务报错,此处可以通过参数控制检测间隔(timeBetweenEvictionRunsMillis)。