论文部分内容阅读
随着互联网在各个行业快速普及,各种业务规模不断增长,数据越来越趋于集中化处理,单个的数据中心备份已经不能满足业务的容灾需求,例如国内火爆的天猫双十一活动、国外的黑色星期五,这种某一时段内爆炸式的数据请求量,仅靠单个数据中心运作,可能会造成整个数据中心瘫痪,所以许多云计算公司在单活的基础上提出异地双活(Active-Active)的容灾解决方案。异地双活技术能很大程度上减少备份成本,而且在灾难发生时,能自动切换数据中心,保障业务的持续性,因此,研究异地双活技术是提高数据中心容灾能力的关键。作为一个可靠地、自动存储均衡、数据自动恢复的分布式存储系统,Ceph云存储能兼容对象存储、文件存储、块存储三种存储业务,而且具有集群监控机制Mon,以及一套自己独特的数据分布Crush算法用于准确定位数据对象的存储位置。Crush数据分布算法是一种伪随机算法用来管理数据的存储分布与复制,它能够满足Ceph云存储在大规模分布式存储集群下依然能够快速准确地计算出数据的存储位置,同时在硬件故障和扩展硬件存储规模的情况下做到尽可能小的数据迁移。基于Ceph云存储这些高效存储的特性,本文在深入研究Crush算法的基础上,提出了基于Ceph云存储的异地双活在线热备的容灾解决方案,该方案的创新之处如下:(1)提出基于Ceph云存储的异地双活在线热备方案。异地两个双活的Ceph集群同时对外提供服务,并要求集群间的Mons通过心跳检测来相互通信,互相实时更新CRUSH MAP和OSD MAP信息。并且,由管理员人为指定一方的集群为主集群,这个指定是通过在MON的配置项中增加主集群配置,集群此配置项的默认初始配置为关闭状态。人为指定一方的集群为主集群,当发生脑裂故障时,主集群客户继续对外服务,而非主集群通过心跳能感知跟主集群的网关不可达,因此,对于非主集群的任何IO操作都处于阻塞的状态,直到两个集群间的网络恢复。(2)提出双活集群数据双写情况下加集群间一致性排他锁。锁是为了防止其他事务同时访问资源的一种手段,而一致性排他锁可以在异地双客户端同时对数据进行写入时,在提前一方占有该写入权限的情况下,另外一方写入被拒绝,使其进入队列中等待排他锁释放,再获取资源,防止底层数据出现写脏。从而保障了多个用户在同时操纵同一个底层存储设备中的数据时,不发生数据不一致现象,使异地双活技术得到更好的应用。(3)提出双活情况下,利用集群间一致性共享锁,隔离同一时间内共享资源数据的读写操作。两方客户端同时对资源进行访问时,一方对资源发起写入请求,另一方对同一资源发起读取请求,心跳检测到读请求的一方先获取了一致性共享锁,则写入请求操作会遭到阻塞,并进入队列中等待,从而实现数据的快速访问。再利用Crush算法的快速定位存储位置特性,既能保障用户的快速读取请求,又能保障数据读取的准确性。论文中利用搭建仿真的异地Ceph双活集群,用不同客户端对双活集群进行仿真的数据存储与读取的测试,实验结果表明,本文提出的异地双活在线热备方案不仅能提高数据存储的安全性和读取的准确性,而且在模拟主集群灾备情况下能保障业务持续,达到RPO等于零的无数据丢失的目标和RTO最短的数据恢复时间点。