基于分布式一致性状态机实现双活架构的方法与流程

文档序号:14490708研发日期:2017年阅读:1804来源:国知局
技术简介:
本发明针对传统双活架构依赖第三方仲裁导致的高成本、单点故障和性能瓶颈问题,提出基于公有云虚拟机和分布式一致性算法的解决方案。通过部署公有云虚拟集群替代物理仲裁中心,利用一致性状态机实现数据同步,消除单点故障,降低硬件成本,提升系统可用性与性能。
关键词:双活架构,分布式一致性

本发明涉及数据库技术领域,特别是涉及同城异地实现双活架构的方法。



背景技术:

在现有的传统的同城双活解决方案中,使用两个存储网关组成一个集群,两个站点的存储都有存储网关接管,由存储网关统一对两个站点的主机提供跨站点的分布式卷。并提供镜像功能,保证数据在数据中心存储间的实时同步。传统的同城双活解决方案如图1所示。并且,一般情况下需要使用第三方的仲裁方案。

在基于oraclerac数据库集群环境下,oracle数据库集群的仲裁磁盘,标准情况下,需要3份。通过图1中的架构可见,仲裁磁盘分别存放于数据中心a,数据中心b与第三方仲裁中心。

oracle数据库集群需要奇数个仲裁磁盘来防止出现集群脑裂的情况,并且oracle数据库集群的策略是当可用的仲裁磁盘少于总仲裁磁盘的一半,整个集群就会关闭。基于此,现有技术中实现双活架构中存在以下缺陷:

1.造价高。存放第三方仲裁,需要租用额外的数据中心,提高了成本。同时双份同等aix服务器、高端存储、虚拟化机头配置。硬件设备配置与软件许可等都非常昂贵。

2.故障点增多。

a)第三方仲裁有单点故障。如果第三方仲裁发生故障,此时,两个数据中心就会同时停止业务。

b)在服务器与磁盘阵列间引入了新的分布式存储代理设备,加长了io链路,增加了不稳定性。

3.性能低。分布式存储代理引入了更多的锁机制,加大了延迟和cpu开销,在高压力下服务器的机头即成为瓶颈,整体性能不升反降。



技术实现要素:

本发明针对现有技术中数据库系统稳定性差、成本高的缺点,提供了一种基于分布式一致性状态机实现双活架构的方法。

为了解决上述技术问题,本发明通过下述技术方案得以解决。

基于分布式一致性状态机实现双活架构的方法,包括如下步骤:

(1)在同城异地的相同数据的两个数据中心通过网络交换机与光纤线缆建立网络通信;

(2)两个数据中心的客户端分别通过网络访问分布式集群系统,向分布式集群系统发送数据信息,并接收分布式集群系统返回的确认信息,其中分布式集群系统为:

①通过公有云平台申请的虚拟机组成;

②使用部署工具部署分布式集群信息,将虚拟机的ip地址、用户名、密码、端口信息填入配置文件中,运行安装文件;

③设正常运行虚拟机数量为n,采用分布式的一致性算法,使n台虚拟机在同一时间点的数据信息一致,同时判断判正常工作虚拟机数量是否满足(n/2)+1向下取整的结果大于或等于2,满足该条件,则设置分布式集群节点类型:

随机分配其中一台虚拟机为leader节点,其余虚拟机为follower节点;

leader节点接收到来自客户端的数据,并复制数据到其余follower节点;

follower节点接收到数据后,并返回确认信息给leader节点;

leader节点得到follower节点的确认信息,并返回确认消息给客户端。

按本发明技术方案,在针对现有技术中的同城双活数据中心,必须有一个物理第三方的数据中心作为仲裁中心,然而该数据中心的仲裁模式存在着单点故障,并且成本非常之高等问题,本发明采用公有云的方式搭建一个分布式集群,作为第三方仲裁中心,同时多个follower节点可以提高集群的可用性,增强数据冗余度,防止发生单点故障。即本发明具有如下显著的技术效果:

1、部署简单:在公有云上申请主机,它有公共的系统快照生成,5分钟即可完成申请并生成主机;

2、低成本:公有云虚机按小时收费,比直接购买物理服务器的成本低,后期的维护成本也非常低,并且不占用本地机房资源。

3、可用性高:分布式一致性算法允许一个集群像一个整体一样工作,只需满足(n/2)+1的条件,就不会影响整个分布式集群的正常服务,在双活架构中,大大提高了整体的可用性。

附图说明

图1现有技术中oracle数据库集群的架构图;

图2是是本发明分布式集群系统中分布式一致性状态示意图;

图3是本发明实施例1分布式一致性状态示意图;

图4是本发明双活架构示意图;

图5是本发明中数据传输过程示意图。

具体实施方式

下面结合附图与实施例对本发明进一步进行详细描述。

实施例1

如图2至图5所示,基于分布式一致性状态机实现双活架构的方法,包括如下步骤:

(1)在同城异地的相同数据的两个数据中心通过网络交换机与光纤线缆建立网络通信;

(2)两个数据中心的客户端分别通过网络访问分布式集群系统,向分布式集群系统发送数据信息,并接收分布式集群系统返回的确认信息,其中分布式集群系统为:

①通过公有云平台申请的虚拟机组成;

②使用部署工具部署分布式集群信息,将虚拟机的ip地址、用户名、密码、端口信息填入配置文件中,运行安装文件;

③设正常运行虚拟机数量为n,采用分布式的一致性算法,使n台虚拟机在同一时间点的数据信息一致,同时判断判正常工作虚拟机数量是否满足(n/2)+1向下取整的结果大于或等于2,满足该条件,则设置分布式集群节点类型:

随机分配其中一台虚拟机为leader节点,其余虚拟机为follower节点;

leader节点接收到来自客户端的数据,并复制数据到其余follower节点;

follower节点接收到数据后,并返回确认信息给leader节点;

leader节点得到follower节点的确认信息,并返回确认消息给客户端。

在使用过程中,同城异地的两个数据中心存储有相同的数据,需要进行相同的业务运行,通过网络交换机与光纤线缆建立网络通信,进行数据传输,使两个数据中心数据保持一致,不会影响正常的业务运行,两个数据中心分别通过自身的客户端上通过网络访问公有云上的分布式集群系统,进行数据访问,同时客户端通过应用程序进行相应操作。

本实施例中,分布式集群系统组建具体步骤如下:

1.在公有云平台申请三台虚拟服务器,操作系统统一选择linux6.6以上版本的系统,cpu选择2颗2核,内存选择2g大小,存储空间选择40g大小。

2.三台虚拟服务器申请好之后,将三台虚拟服务器的ip地址,用户名,密码,端口信息,填写到部署工具的配置文件中。例如:三台虚拟服务器的ip地址分别为10.10.30.1、10.10.30.2、10.10.30.3;用户名统一为root,密码统一为123456,端口统一为10011;

填写格式如下:

-username:root

password:123456

port:10011

public_ip:10.10.30.1

-username:root

password:123456

port:10011

public_ip:10.10.30.2

-username:root

password:123456

port:10011

public_ip:10.10.30.3

3.配置文件填写完成之后,部署工具会通过配置文件中的信息,在三台虚拟主机中完成分布式集群的部署工作。

如图3所示,三台虚拟服务器正常运行,即n=3,通过公式(n/2)+1向下取整即忽略小数点后小数而得的整数,得到结果为2,满足(n/2)+1向下取整大于或等于2的条件,即系统可以正常运转:

数据中心a通过客户端的应用程序去访问分布式集群系统,此时的leader主机节点ip为10.10.30.1;follower主机节点ip分别为10.10.30.2、10.10.30.3。数据中心a提交一条数据v=3给分布式集群,主机ip为10.10.30.1优先接收到数据,并复制数据v=3到主机ip为10.10.30.2与主机ip为10.10.30.3中;

主机ip为10.10.30.2与主机ip为10.10.30.3成功接收到数据v=3后,返回确认接收到数据v=3的信息给主机ip为10.10.30.1;

主机ip为10.10.30.1接收到确认信息后,并将确认接收到数据v=3的信息再发送给数据中心a。

综上所述,数据中心a能正常提交数据到分布式集群,并能得到分布式集群的反馈信息。

实施例2

实施例2与实施例1条件基本相同,不同之处在于虚拟机数量n为4,四台虚拟服务器的ip地址分别为10.10.30.1、10.10.30.2、10.10.30.3、10.10.30.4:

四台虚拟服务器正常运行,即n=4,满足(n/2)+1向下取整大于或等于2的条件:

数据中心a通过客户端的应用程序去访问分布式集群系统,此时的leader主机节点ip为10.10.30.1;follower主机节点ip分别为10.10.30.2、10.10.30.3、10.10.30.4。数据中心a提交一条数据v=3给分布式集群,主机ip为10.10.30.1优先接收到数据,并复制数据v=3到主机ip为10.10.30.2、主机ip为10.10.30.3、主机ip为10.10.30.4中;

主机ip为10.10.30.2、主机ip为10.10.30.3、主机ip为10.10.30.4成功接收到数据v=3后,返回确认接收到数据v=3的信息给主机ip为10.10.30.1;

主机ip为10.10.30.1接收到确认信息后,并将确认接收到数据v=3的信息再发送给数据中心a。

综上所述,数据中心a能正常提交数据到分布式集群,并能得到分布式集群的反馈信息。

实施例3

实施例3与实施例1条件基本相同,不同之处在于虚拟机数量为6台,六台虚拟服务器的ip地址分别为10.10.30.1、10.10.30.2、10.10.30.3、10.10.30.4、10.10.30.5、10.10.30.6:

但是其中一台虚拟服务器出现故障,即实际n=5,只有五台虚拟服务器正常运行,满足(n/2)+1向下取整大于或等于2的条件;

数据中心a通过客户端的应用程序去访问分布式集群系统,此时的leader主机节点ip为10.10.30.1;follower主机节点ip分别为10.10.30.2、10.10.30.3、10.10.30.4、10.10.30.5。数据中心a提交一条数据v=3给分布式集群,主机ip为10.10.30.1优先接收到数据,并复制数据v=3到主机ip为10.10.30.2、主机ip为10.10.30.3、主机ip为10.10.30.4、主机ip为10.10.30.5中;

主机ip为10.10.30.2、主机ip为10.10.30.3、主机ip为10.10.30.4、主机ip为10.10.30.5成功接收到数据v=3后,返回确认接收到数据v=3的信息给主机ip为10.10.30.1;

主机ip为10.10.30.1接收到确认信息后,并将确认接收到数据v=3的信息再发送给数据中心a。

综上所述,数据中心a能正常提交数据到分布式集群,并能得到分布式集群的反馈信息。

实施例4

实施例4与实施例3条件基本相同,不同之处在于,六台虚拟服务器中有5台虚拟机出现故障,只有一台虚拟机正常运行,即n为1,则不满足(n/2)+1向下取整大于或等于2的条件;因为如果只有1台虚拟机无法完成分布式集群系统工作,无法分配leader节点和follower节点。

数据中心a通过客户端的应用程序去访问分布式集群系统,此时主机ip为10.10.30.2与主机ip为10.10.30.3发生故障,无法接收到主机ip为10.10.30.1的数据,无法返回确认接收到数据v=3的信息给主机ip为10.10.30.1;

主机ip为10.10.30.1无法接收到确认信息,无法将确认接收到数据v=3的信息再发送给数据中心a。

综上所述,数据中心a不能正常提交数据到分布式集群,并且不能得到分布式集群的反馈信息。

总之,以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所作的均等变化与修饰,皆应属本发明专利的涵盖范围。

当前第1页1 2 
网友询问留言 留言:0条
  • 还没有人留言评论。精彩留言会获得点赞!