Skip to content

滚动升级测试 #126

@anshubo-yun

Description

@anshubo-yun

Changelog

Features

  • Features

Bug fixes

  • Bug fixes

Enhancements

  • Enhancements

Tech debt

  • Tech debt

通用

  • 关闭 SSH 服务
  • 清除 .bash_history(包括 ubuntu 和 root 用户)
  • 安装 arping 防止同网段虚机和 IP 地址频繁重建引起的问题(apt install iputils-arping)
  • TCP keepalive timeout(基础网络)
  • 支持 NeonSAN(硬盘类型 5 和 6)
  • 支持新实例类型(101,201,301)

服务功能测试

  • 写入数据,自定义客户端正常读取
  • 在配置项可自由开启zabbix-agent
  • 在配置项中可自由开关caddy
  • confd升级到最新版本
  • 通过浏览器查看服务日志
  • 日志轮转

集群功能测试

创建

  • 创建单个节点的集群
  • 创建多个节点的集群
  • 创建常用硬件配置的集群
  • 修改常用配置参数,创建集群

横向伸缩

  • 增加节点,数据正常
    • redis 多节点架构
      • 单节点 --> 三节点 --> 多节点
      • 单节点 --> 多节点
  • 删除节点
    • redis 多节点架构
      • 多节点 --> 三节点 --> 单节点
      • 多节点 --> 单节点

纵向伸缩

  • 扩容:服务正常
  • 缩容:服务正常

升级

  • 数据不丢
  • 升级后设置日志留存大小限制值,查看日志留存配置生效
  • 升级至 redis 多节点架构,sentinel.conf 中的 master 更新为 cluster_id

其他

  • 关闭集群并启动集群
  • 删除集群并恢复集群
  • 备份集群并恢复集群
  • 支持多可用区
  • 切换私有网络
  • 绑定公网 IP(vpc)
  • 基础网络部署
  • 自动伸缩(节点数,硬盘容量)
  • 健康检查和自动重启
  • 服务监控
  • 从 RDB 文件恢复数据

高可用

  • Redis StandAlone
    • 把三节点集群中的主节点断网,自动做主从切换(允许 10 秒的时间完成主从切换的动作)
    • 客户端通过 sentinel 方式连接,把三节点集群中的主节点断网,数据正常写入和查询(切换过程中读写操作不可用)
    • 客户端通过 VIP 方式连接,把三节点集群中的主节点断网,数据正常写入和查询(切换过程中读写操作不可用)
    • 关闭服务(redis-server/redis-sentinel)后,服务可自动启动
  • Redis Cluster
    • 多主多从时,关闭少部分的主节点(小于等于 nodeCount//2),可以在大约 15s 后选出新的主节点
    • 切换前与切换后,通过 redis-cli -c 均可以正常写入数据
    • 挂掉的主节点可以在2分钟内被拉起,并作为从节点添加进入集群

压力测试

  • 删除磁盘未占满节点,可以删除
  • 删除磁盘占满节点,可以删除
  • 节点磁盘占满,扩容硬盘后,集群节点恢复正常

故障测试

  • Redis Cluster
    • 将某从节点对应的主节点做切换
      • 「在组内」监控项变为 false
      • 两分钟后该节点变为异常,手动执行 appctl check 或者 appctl revive,返回值 221
      • 在该情况下,切换私网、增加节点、删除节点均失败,报错:存在节点发生错位,请通过工单与我们联系
      • 关闭发生错位的从节点的 redis-server ,执行 appctl check 或者 appctl revive ,返回值为 221,且 redis-server 不会被拉起

性能/基准测试

  • 持续读写平均延迟

    压测工具:redis-benchmark,单节点 QPS > 10W+

Long Run

  • UI界面中循环进行创建集群--增删节点--重启集群--扩容集群--删除集群的操作
  • 对同一个集群持续做增加节点--扩容集群--关闭启动集群--切换私网--删除集群的循环操作
  • 在10G存储,且内存使用率为95%的集群中,循环进行增删节点--扩容缩容集群--重启集群的操作

上线

  • 老区(广东 1 区、亚太 1 区)有可部署的版本
  • 所有区可以正常部署
  • 服务价格改为 0
  • 版本号合理命名

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions