AnyShare Family 7 基于云原生的理念,从设计上,将产品分解为服务的集合,将服务设计为两层:有状态的存储集群和无状态的服务集群。在有状态的存储集群设计上,通过抽象不同的技术特性来提供相应的服务,如关系数据库、对象存储等;在无状态的服务集群设计上,采用服务模块化和微服务架构,基于容器化部署;另外对于微服务和容器化的支撑,我们设计基于容器云,包括容器服务、容器仓库等。
在部署形态上,在私有化环境中,我们会基于物理机和操作系统来部署数据库服务、存储服务、容器云等,基于容器来部署(无状态)应用服务。当然,在架构演进过程中,也存在主机与容器混合部署的过渡阶段。
从AnyShare整个系统的可靠性来看,我们通过以下4个方面来实现:
- (应用)服务的高可靠:基于主机部署的服务的高可靠、基于容器部署的服务的高可靠
- 数据库的高可靠
- 存储的高可靠
- 系统的高可靠
应用层可靠性技术
AnyShare Family 7 在架构演进的过程中,目前应用服务采用主机模式和容器模式混合部署,主机模式采用LVS+Keepalived及监控方式提供可靠性;容器模式基于Kubernetes,通过Kubernetes监控容器状态、自动恢复等机制来提升可靠性。通过基于容器云来实现无状态应用服务,能够实现故障自愈,恢复效率秒级。
Keepalived为Linux系统和基于Linux 的架构提供了负载均衡和高可用能力,其负载均衡功能主要源自集成在Linux内核中的LVS项目模块IPVS( IP Virtual Server ),基于IPVS提供的4 层TCP/IP协议负载均衡, Keepalived也具备负载均衡的功能,此外,Keepalived还实现了基于多层TCP/IP 协议( 3 层、4 层、5/7 层)的健康检查机制,因此, Keepalived在LVS 负载均衡功能的基础上,提供了LVS 集群物理服务器池健康检查和故障节点隔离的功能。
除了扩展LVS的负载均衡服务器健康检查能力, Keepalived 还基于虚拟路由冗余协议( Virtual Route Redundancy Protocol, VRRP )实现了LVS 负载均衡服务器的故障切换转移,即Keepalived还实现了LVS负载均衡器的高可用性。Keepalived 就是为LVS 集群节点提供健康检查和为LVS 负载均衡服务器提供故障切换的用户空间进程。
AnyShare Family 7 的服务集群使用云原生同样的技术和设计,这里以管理控制台服务为例。 当管理控制台微服务的某些容器出现故障的时候,比如某个节点下线导致某些容器故障,容器云会自动检测并在其他可用的资源上恢复这些容器。具体过程如图所示:
数据库可靠性技术
AnyShare Family 7 数据库采用爱数的Proton RDS服务(Proton Relational Database Service,Proton关系数据库服务), Proton RDS内部基础数据库采用MySQL,通过API管理数据库实例采用主主半同步架构,提供节点级别的高可靠,其可靠性原理如下图。当主节点发生故障时,从节点探测到主节点发生故障,主动咨询是否满足接管主节点身份,当后台服务告知满足接管条件时,从节点切换为主节点,快速向外提供服务。
AnyShare Family 7 采用半同步复制,半同步复制是Master等待event写入Slave的relay后,再提交本地,保证Slave一定收到了需要同步的数据,从而保证每次的数据写入,主从数据一致并减少主从数据库的数据延迟缩小。
存储可靠性技术
AnyShare Family 7 采用爱数对象存储ECeph,ECeph对象存储由分布式存储集群 RADOS 和对象存储网关 RGW 构成。 对象存储网关守护进程(radosgw),使用 librados 接口和RADOS集群交互。其提供了与 Amazon S3 兼容的接口,将使用 S3 协议上传的对象进行处理,存储到RADOS 集群中,如下图所示。
RADOS 分布式存储集群则包括两种类型的守护进程: OSD 和 Monitor。由OSD守护进程处理存储设备上的读/写操作。同时通过Monitor维护着集群运行图的主副本。 Monitor 集群确保了当某个Monitor失效时的高可用性。存储集群客户端向Monitor索取集群运行图的最新副本。ECeph OSD守护进程检查自身状态、以及其它 OSD 的状态,并报告给 Monitor。RADOS 集群的客户端和各个OSD守护进程使用 CRUSH 算法 高效地计算数据位置,而不是依赖于一个中心化的查询表。
在分布式系统中,常见的故障有网络链路故障、掉电、服务器宕机、硬盘故障等,ECeph 能够容忍这些故障,并进行自动修复(默认自动修复时间 15 分钟后),使系统自动恢复到健康状态,保证数据的可靠性和系统可用性。

ECeph 是一个可大规模横向扩展的分布式对象存储系统,提供可支持纠删码数据冗余策略的对象存储服务。 ECeph 对象存储系统通过软件将通用硬件的本地存储资源整合从而构建全分布式存储池,提供企业级的可靠性和可用性。
系统可靠性技术
AnyShare Family 7采用自备份技术,每日定点备份操作系统、备份数据库等策略应对机器故障、硬盘故障等问题。当故障发生时,快速从备份数据中恢复并对外提供服务。