基础内容

定义:确保系统在尽可能多的时间里是可用的

关键概念

  • 可靠性(Reliability):系统在一段时间内能够无故障地运行
    • 衡量标准
      • 持续运行时间(Uptime):系统在一段时间内无故障运行的时间
      • 故障间隔时间(MTBF, Mean Time Between Failures):两次故障之间的平均时间
      • 故障恢复时间(MTTR, Mean Time To Repair):系统从故障到恢复正常运行所需的平均时间
    • 实现技术
      • 监控与报警
        • 实时监控系统状态,及时发现和报告问题
        • 工具:Prometheus, Grafana, ELK Stack
      • 自动化运维
        • 使用自动化工具进行系统维护,减少人为错误
        • 工具:Ansible, Puppet, Chef
  • 冗余(Redundancy):在系统中增加额外的组件或资源,以在某个组件或资源发生故障时,系统仍能正常运行
    • 实现方式
      • 硬件冗余:多个物理服务器、存储设备或网络设备,以应对单点故障
      • 软件冗余:在不同服务器上运行多个实例
    • 实现技术
      • 负载均衡
        • 使用负载均衡器将流量分发到多个实例,避免单点故障
        • 工具:Nginx, HAProxy, AWS ELB
      • 数据复制
        • 在多个位置复制数据,确保数据冗余和可用性
        • 工具:MySQL 主从复制, Cassandra
      • 灾备设计:设计系统以应对灾难性故障
        • 数据备份与恢复
        • 多数据中心部署
  • 故障转移(Failover):在系统某个组件或资源发生故障时,自动切换到备用组件或资源,以保证系统的连续性和可用性
    • 实现方式
      • 自动故障转移:系统自动检测故障并执行故障转移,无需人工干预
      • 手动故障转移:需要管理员手动触发故障转移操作
    • 实现技术
      • 主从配置
        • 主服务器发生故障时,从服务器自动接管
        • 工具:PostgreSQL的Hot Standby, MySQL的主从复制
      • 高可用性集群
        • 使用集群技术进行故障转移
        • 工具:Pacemaker, Corosync
  • 自动恢复(Auto-recovery):系统在检测到故障后,能够自动进行修复和恢复,以尽量减少系统的停机时间
    • 实现方式
      • 自我修复:系统自动检测并修复故障,无需人工干预
      • 自动重启:在发生故障时,系统能够自动重启受影响的组件或服务
    • 实现技术
      • 健康检查
        • 定期检查系统各个组件的健康状态,及时发现故障
        • 工具:Kubernetes 的健康检查, AWS EC2 的状态检查
      • 自动重启策略
        • 在发生故障时,自动重启服务或实例
        • 工具:Kubernetes的自动重启策略, AWS EC2的自动重启