
# RES01-01 应用组件高可用部署
应用系统内的所有组件均需要高可用部署，避免单点故障。
- **风险等级**
  高
  

- **关键策略**
  应用系统内各组件需要根据其具体能力，采用不同的高可用部署方案：
  - 使用原生高可用实例：当云服务既支持单节点资源，又支持主备或集群资源时，应用的关键节点应使用主备或集群资源，如CCE高可用集群、RDS主备实例、DDS集群、DCS主备或集群实例等。对于运行在CCE集群上的工作负载，也需要配置多个，以避免单个节点故障就导致业务中断。
  
  - 单节点实例通过多实例实现高可用：当云服务只支持单节点发放，则需要应用层来实现多个节点之间的主备或负载均衡，如ECS实例，用户可以通过构建ELB+多ECS实例，来实现无状态业务在多实例之间的负载均衡和自动切换，或从应用层实现两个ECS实例的主备等。
  
  - 硬件依赖实例从应用层实现高可用：当ECS使用本地硬盘、直通FPGA、直通IB网卡等物理服务器强相关的硬件资源时，当硬件故障时会导致ECS故障，且无法通过虚拟机HA功能自动恢复；针对此类问题，需要应用系统在设计时就必须要预料到偶发故障，尽可能避免使用，若必须用时需要从应用层来实现高可用，以便在所依赖的硬件故障时业务能快速恢复。
  
  - 虚拟机HA：当ECS不依赖于特殊资源时，可以支持虚拟机故障自动恢复功能，在其所在物理服务器故障的情况下，可以自动在其他物理服务器上重启；对于部署在这种ECS中的工作负载，需要支持虚拟机重启后业务自动恢复的功能，并能容忍虚拟机HA期间业务处理性能短暂下降或中断。
  
  
  
  对已部署的应用系统，改造为支持高可用能力的实施步骤：
  1. 确定应用系统的关键组件；所谓关键组件是指一旦故障，会导致整个应用系统或其中的关键功能受损。
  
  2. 针对关键组件，检查其高可用能力，即在其故障的情况下，是否能自动故障转移，进行业务恢复。
  
  3. 针对未支持高可用的关键组件，进行如下优化处理：
  
  
  - 若云服务实例为单节点实例，如ECS，则通过申请多个实例承载相同业务，并利用ELB实现负载均衡和自动故障切换，或由应用层实现多实例的自动故障切换能力，来实现高可用。
  
  - 对于不依赖于特殊资源的ECS，支持故障自动恢复功能，在ECS所在物理服务器故障的情况下可以自动在其他物理服务器上重启；对于部署在这种ECS中的工作负载，需要检查ECS重启后业务是否能自动恢复。
  
  - 对于依赖特殊资源的ECS，如本地盘、直通FPGA卡、直通IB卡等，不支持故障自动恢复，针对此类ECS需要检查是否可以替换为不依赖于这些特殊资源的ECS，以提高ECS的可用性。
  
  - 对于ECS、BMS、MRS等实例，在使用本地盘时，由于磁盘存在使用寿命上的限制，长时间使用后出现故障的概率会比较高，需要避免使用，而尽可能使用具有高可用能力的EVS磁盘；若必须使用时，则建议使用RAID提升本地盘的可用性，并从应用层实现高可用，以便在一个实例故障时，应用可以自动故障切换和恢复业务。
   
- **相关云服务和工具**
  - 弹性云服务器 ECS
  
  - 裸金属服务器 BMS
  
  - 弹性负载均衡 ELB
  
  - 云容器引擎 CCE
  
  - 文档数据库服务 DDS
  
  - 分布式缓存服务 DCS
  
  - MapReduce服务 MRS
   
 
