CN208299812U - 一种基于ZooKeeper集群的主备切换系统 - Google Patents
一种基于ZooKeeper集群的主备切换系统 Download PDFInfo
- Publication number
- CN208299812U CN208299812U CN201820946295.5U CN201820946295U CN208299812U CN 208299812 U CN208299812 U CN 208299812U CN 201820946295 U CN201820946295 U CN 201820946295U CN 208299812 U CN208299812 U CN 208299812U
- Authority
- CN
- China
- Prior art keywords
- floodlight
- cluster
- controller
- master controller
- zookeeper
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种基于ZooKeeper集群的主备切换系统,包括:ZooKeeper集群、Floodlight集群和网络架构,ZooKeeper集群监听Floodlight集群中的Floodlight控制器的状态,确定出Floodlight主控制器,Floodlight主控制器宕机时,控制Floodlight集群进行主备切换;Floodlight集群包括多个Floodlight控制器,通过向ZooKeeper集群创建临时节点,确定出Floodlight主控制器和至少一个备用Floodlight控制器;Floodlight主控制器宕机时,备用Floodlight控制器向ZooKeeper集群创建临时节点,成功创建临时节点的备用Floodlight控制器确定为新的主控制器,实现主备切换。
Description
技术领域
本实用新型涉及网络安全技术领域,尤其涉及一种基于ZooKeeper集群的主备切换系统。
背景技术
ZooKeeper是一个开源的分布式协调服务,由Google Chubby的开源实现。分布式应用程序可以基于它实现诸如数据发布/订阅、集群管理、Master选举等功能,ZooKeeper通常都以集群模式作为服务器对外提供服务,一般3~5台机器就可以组成一个可用的ZooKeeper集群,该ZooKeeper集群能够提供高可用的服务。
Floodlight控制器分为活动模式(ACTIVE)和备用模式(STANDBY)。活动模式下的Floodlight就是主控制器,备用模式下的Floodlight就是备用控制器。Floodlight作为一种单控制器,存在单点失效的问题,为了解决这个问题,Floodlight开发者设计了这两种模式,但是这两种模式并没有较为理想地解决Floodlight控制器的单点失效问题。
处于活动模式下的控制器启动后就会对网络进行设备发现、链路发现、拓扑管理、数据转发等各种网络事件的处理,而处于备用模式下的控制器只对网络进行设备发现,而不进行其他网络事件的处理。因此,真正对网络起控制作用的是活动模式下的Floodlight控制器。
当Floodlight以备用模式启动后,只有一种方式可以使其转换为活动模式,就是通过REST API的方式,但Floodlight开发者并没有实现使Floodlight从活动模式转为备用模式的功能。因此,从当前Floodlight的功能来看,如果想实现主备切换,需要在网络中设置两个Floodlight控制器,一个以活动模式启动,另一个以备用模式启动,当活动模式的Floodlight失效后,网路管理员手动将备用模式的Floodlight转换为活动模式(以RESTAPI方式),使网络可以继续正常工作,而手动切换需要网络管理员实时对Floodlight进行监控,无法确保即时性,也无法确保网络的可靠性,又耗费人力。
实用新型内容
本实用新型实施例提出了一种基于ZooKeeper集群的主备切换系统,ZooKeeper集群监听Floodlight集群中所有Floodlight控制器的状态,确定出Floodlight主控制器,并对Floodlight集群中的Floodlight控制器进行实时监控,监控到Floodlight主控制器宕机时,控制Floodlight集群进行主备切换,将备用Floodlight控制器恢复到主控制器宕机前的状态。切换系统包括:ZooKeeper集群、Floodlight集群和网络架构,其中Floodlight集群分别与ZooKeeper集群和网络结构相连接;
ZooKeeper集群监听Floodlight集群中的Floodlight控制器的状态,确定出Floodlight主控制器,并对Floodlight集群中的Floodlight控制器进行实时监控,监控到Floodlight主控制器宕机时,控制Floodlight集群进行主备切换,将备用Floodlight控制器恢复到主控制器宕机前的状态;
Floodlight集群包括多个Floodlight控制器,通过向ZooKeeper集群创建临时节点,确定出Floodlight主控制器和至少一个备用Floodlight控制器;
Floodlight主控制器宕机时,备用Floodlight控制器向ZooKeeper集群创建临时节点,成功创建临时节点的备用Floodlight控制器确定为新的主控制器,实现主备切换。
有益效果如下:
本实用新型的方案,ZooKeeper集群监听Floodlight集群中所有Floodlight控制器的状态,首先确定出Floodlight主控制器,并对Floodlight集群中的Floodlight控制器进行实时监控。监控到Floodlight主控制器宕机时,控制Floodlight集群进行主备切换,将备用Floodlight控制器恢复到主控制器宕机前的状态,与人为控制Floodlight启动的方式相比,提高了网络的容错能力,加快了针对网络失效处理的响应速度,加强了网络的可靠性,而且本系统支持动态添加或移除Floodlight节点,保证Floodlight集群具有良好的横向扩展性,根据业务需求持续不断地提供灵活的网络控制能力。
附图说明
下面将参照附图描述本实用新型的具体实施例,其中:
图1示出了本实施例中基于ZooKeeper集群的主备切换系统的结构示意图;
图2示出了本实施例中基于ZooKeeper集群的主备切换系统的另一结构示意图;
图3示出了本实施例中将第二台Floodlight关闭的示意图;
图4示出了本实施例中第一台Floodlight成为主控制器的示意图;
图5示出了本实施例中第三台Floodlight仍然是备用控制器的示意图;
图6示出了本实施例中新的主控制器完成链路发现示意图;
图7示出了本实施例中第一台Floodlight宕机示意图;
图8示出了本实施例中第三台Floodlight成为主控制器的示意图;
图9示出了本实施例中查看第一台Floodlight的防火墙的示意图;
图10示出了本实施例中查看第一台Floodlight的ACL规则的示意图;
图11示出了本实施例中第一台Floodlight成为主控制器的示意图;
图12示出了本实施例中第二台Floodlight仍然作为备用控制器的示意图;
图13示出了本实施例中fl01和fl02节点被添加到ZooKeeper的示意图;
图14示出了本实施例中将第三台Floodlight加入Floodlight集群的示意图;
图15示出了本实施例中fl03节点被添加到ZooKeeper的示意图。
具体实施方式
为了使本实用新型的技术方案及优点更加清楚明白,以下结合附图对本实用新型的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本实用新型的一部分实施例,而不是所有实施例的穷举。并且在不冲突的情况下,本说明中的实施例及实施例中的特征可以互相结合。
图1示出了一种基于ZooKeeper集群的主备切换系统,系统包括:
ZooKeeper集群、Floodlight集群和网络架构,Floodlight集群分别与ZooKeeper集群和网络结构相连接;
ZooKeeper集群监听Floodlight集群中的Floodlight控制器的状态,确定出Floodlight主控制器,并对Floodlight集群中的Floodlight控制器进行实时监控,监控到Floodlight主控制器宕机时,控制Floodlight集群进行主备切换,将备用Floodlight控制器恢复到主控制器宕机前的状态;
Floodlight集群包括多个Floodlight控制器,通过向ZooKeeper集群创建临时节点,确定出Floodlight主控制器和至少一个备用Floodlight控制器;
Floodlight主控制器宕机时,备用Floodlight控制器向ZooKeeper集群创建临时节点,成功创建临时节点的备用Floodlight控制器确定为新的主控制器,实现主备切换。
其中,Floodlight集群中的所有Floodlight控制器以STANDBY模式启动,并分别向ZooKeeper集群创建临时节点,成功创建临时节点的控制器为主控制器,主控制器的角色,从STANDBY修改为ACTIVE。
其中,新的主控制器具备主控制器的所有状态信息,并将状态信息发送给ZooKeeper集群进行保存。
其中,状态信息包括防火墙规则和ACL规则,状态规则通过REST API下发到Floodlight集群中的主控制器。
其中,Floodlight集群通过向ZooKeeper集群创建临时节点,确定出Floodlight主控制器和至少一个备用Floodlight控制器,具体包括:
Floodlight控制器启动后,向ZooKeeper集群请求创建临时节点activer,创建成功的Floodlight控制器会成为Floodlight主控制器,创建失败的Floodlight控制器会成为备用Floodlight控制器。
本实用新型中Floodlight集群记录网络故障时的网络状态,在完成主备切换后,恢复原有网络状态,不再重新配置。
下面结合一种具体实施方式,详细描述本申请的方案。
如图2提供的基于ZooKeeper集群的主备切换系统示意图,该系统包括:ZooKeeper集群、Floodlight集群和网络架构,Floodlight集群分别与ZooKeeper集群和网络结构相连接;
ZooKeeper集群包括三台ZooKeeper单机,每台ZooKeeper的启动间隔不要太长,否则这台ZooKeeper节点可能无法加入集群中去,根据ZooKeeper集群的容灾特点,该集群最多允许1台ZooKeeper宕机,即三台ZooKeeper中如果有一台宕机,则剩下两台ZooKeeper可以继续正常工作,而如果有两台或三台ZooKeeper宕机,集群就无法继续正常工作。单从ZooKeeper集群和Floodlight集群两者来看,ZooKeeper集群是服务器,而Floodlight集群中的单机是客户端。
ZooKeeper集群在本系统中的功能主要有两个:
第一,监听这三个Floodlight控制器的状态,选举出集群中的主控制器。具体的,三台Floodlight控制器都以STANDBY模式启动,即作为备用控制器启动,启动后这三台控制器都会尝试向ZooKeeper集群创建临时节点activer,该节点不具有顺序性,因此这三台Floodlight最终只能有一台能成功创建activer节点,该控制器就会将自己的STANDBY角色修改为ACTIVE,成为主控制器。如果主控制器宕机,activer节点就会被删除,剩下的两台备用控制器会重新竞争创建activer节点,最终选出新的主控制器。
第二,实时存储主控制器的状态信息,监控到主控制器宕机后,新选举出的主控制器将恢复上一届主控制器的状态。
实际应用中,存储的主控制器的状态信息包括防火墙规则和ACL规则,两者都可以通过REST API下发到Floodlight控制器。由于这些状态信息存储在Floodlight的内存中,因此一旦Floodlight宕机,这些状态就会消失,因此需要将其实时存入ZooKeeper中,供下一届主控制器恢复状态。
本实施例中,Floodlight控制器集群也包括三台Floodlight单机,这三台单机之间没有通信。每台Floodlight都会与OpenFlow交换机建立连接,但是,只有主控制器才会进行链路发现、拓扑管理、分组转发、负载均衡等网络事件的处理。当一个备用控制器成功转换为主控制器后,该控制器也就具备了这些功能。
对于本系统中各设备的启动,需要先启动ZooKeeper集群,然后再启动Floodlight集群,在本实施例中ZooKeeper集群有三台节点,我们可以使用统一的命令来启动ZooKeeper集群,且Floodlight集群也有三台节点,同样可以采用统一的命令启动Floodlight集群,确保三台Floodlight是同时启动的,并且都以STANDBY模式启动,每台Floodlight启动后都会向ZooKeeper集群创建一系列数据节点,三台Floodlight都请求创建activer节点,并且都会订阅对该节点的监听,用于后续一旦该节点被删除,就重新开始尝试创建该节点,最终只有一台Floodlight可以成功创建activer节点,创建成功的Floodlight控制器会成为主控制器,并将该控制器的id存入此节点中。同时,主控制器会将其status节点的数据修改为ACTIVE。
在主控制器开始进行一系列的网络事件处理之前,需要先建立网络拓扑,本系统的底层网络拓扑是用Mininet工具生成。绝大多数时间主控制器会一直正常工作,即不发生宕机,这种情况下主控制器会正常处理网络事件;如果主控制器在工作过程中宕机,则ZooKeeper集群会删除该Floodlight创建的activer节点,一旦activer节点被删除,所有监听该节点的备用控制器都会收到通知,准备发起新一轮对activer节点的创建。
实际应用中,有两种情况会导致activer节点被ZooKeeper删除,一是主控制器宕机,二是网络抖动,网络抖动会导致ZooKeeper误认为其与客户端的连接断开,于是删除activer节点,一旦发生这种情况,备用控制器就有可能成为新一届主控制器,但此时上一届主控制器还是活动状态,这就可能导致资源的迁移或多余的系统开销。
为了应对网络抖动,可以让所有的Floodlight在竞争创建activer节点时先判断自己是否是上一届主控制器,如果是就直接竞争创建activer节点,如果不是就延迟数秒再竞争创建activer节点,延迟时间可以自行设定,一般在3到5秒。判断自己是否是上一届主控制器的方法就是查看各自status节点下存放的数据,如果是ACTIVE,说明该控制器是上一届主控制器;如果是STANDBY,说明该控制器是备用控制器。
下面提供具体实验过程:
(1)主备切换实验。
第一轮主备切换:在图3-5中,第二台Floodlight成为了主控制器,其它两台Floodlight是备用控制器。我们手动使第二台Floodlight宕机,观察其它两台Floodlight的状态变化。图3-5展示了实验结果,即第二台Floodlight宕机后,第一台Floodlight成为了主控制器,而第三台Floodlight仍然是备用控制器。
此时我们也可以查看一下第一台Floodlight是否开始进行链路发现,图6展示了第一台Floodlight显示的网络拓扑,可以看出,第一台成为主控制器后开始进行链路发现。
第二轮主备切换:第一轮主备切换后,集群中还剩两台Floodlight控制器,其中第一台Floodlight是主控制器,第三台Floodlight是备用控制器,我们手动使第一台Floodlight宕机,图7、图8展示了实验结果,即第一台Floodlight宕机后,第三台Floodlight成为了主控制器。
(2)主控制器的状态恢复实验。这里的状态指通过REST API下发到主控制器的防火墙规则和ACL规则。在第一轮主备切换中,第二台Floodlight宕机后,集群中剩下两台Floodlight,第一台Floodlight(fl01)成为了主控制器,我们通过REST API查看防火墙规则和ACL规则的恢复情况。图9和图10展示了第一台Floodlight的防火墙和ACL规则恢复的状况,可以看出,新的主控制器成功恢复了防火墙和ACL规则。
(3)Floodlight可扩展性实验。
本部分实验指的是向Floodlight集群中动态地添加Floodlight控制器,组成新的集群。实验过程如下,首先启动两台Floodlight控制器,从图11和图12中可以看出,第一台Floodlight成为主控制器,第二台Floodlight是备用控制器。
此时可以查看ZooKeeper中的节点信息,图13显示了fl01、fl02节点已经被添加进来。
现在启动第三台Floodlight,图14展示了第三台Floodlight启动后的情况,毫无疑问第三台Floodlight会作为备用控制器。
此时我们再查看ZooKeeper中的节点,图15中显示了fl03节点也被添加进来了。
实验结论:该系统可以完成Floodlight控制器的主备切换功能,恢复主控制器的防火墙和ACL列表,并且该系统支持向集群动态地添加新的Floodlight,以解决备用控制器不足的问题。
本实用新型提供的方案,ZooKeeper集群监听Floodlight集群中所有Floodlight控制器的状态,首先确定出Floodlight主控制器,并对Floodlight集群中的Floodlight控制器进行实时监控,然后监控到主用Floodlight控制器宕机时,控制Floodlight集群进行主备切换,将备用Floodlight控制器恢复到主控制器宕机前的状态。与人为控制Floodlight启动的方式相比,提高了网络的容错能力,加快了针对网络失效处理的响应速度,加强了网络的可靠性,而且本系统支持动态添加或移除Floodlight节点,保证Floodlight集群具有良好的横向扩展性,根据业务需求持续不断地提供灵活的网络控制能力。
为了描述的方便,以上装置的各部分以功能分为各种模块或单元分别描述。当然,在实施本实用新型时可以把各模块或单元的功能在同一个或多个软件或硬件中实现。
本领域内的技术人员应明白,本实用新型的实施例可提供为方法、系统、或计算机程序产品。因此,本实用新型可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本实用新型可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
尽管已描述了本实用新型的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本实用新型范围的所有变更和修改。
Claims (6)
1.一种基于ZooKeeper集群的主备切换系统,其特征在于,系统包括:ZooKeeper集群、Floodlight集群和网络架构,Floodlight集群分别与ZooKeeper集群和网络结构相连接;
所述ZooKeeper集群监听所述Floodlight集群中的Floodlight控制器的状态,确定出Floodlight主控制器,并对所述Floodlight集群中的Floodlight控制器进行实时监控,监控到所述Floodlight主控制器宕机时,控制所述Floodlight集群进行主备切换,将备用Floodlight控制器恢复到主控制器宕机前的状态;
所述Floodlight集群包括多个Floodlight控制器,通过向ZooKeeper集群创建临时节点,确定出Floodlight主控制器和至少一个备用Floodlight控制器;
所述Floodlight主控制器宕机时,所述备用Floodlight控制器向所述ZooKeeper集群创建临时节点,成功创建临时节点的所述备用Floodlight控制器确定为新的主控制器,实现主备切换。
2.如权利要求1所述的系统,其特征在于,所述Floodlight集群中的所有Floodlight控制器以STANDBY模式启动,并分别向ZooKeeper集群创建临时节点,成功创建临时节点的控制器为主控制器,主控制器的角色,从STANDBY修改为ACTIVE。
3.如权利要求1或2所述的系统,其特征在于,所述新的主控制器具备主控制器的所有状态信息,并将状态信息发送给ZooKeeper集群进行保存。
4.如权利要求3所述的系统,其特征在于,所述新的主控制器的状态信息包括防火墙规则和ACL规则。
5.如权利要求4所述的系统,其特征在于,状态规则通过REST API下发到Floodlight集群中的主控制器。
6.如权利要求1所述的系统,其特征在于,所述通过向ZooKeeper集群创建临时节点,确定出Floodlight主控制器和至少一个备用Floodlight控制器,具体包括:
创建临时节点成功的Floodlight控制器,确定为Floodlight主控制器;
创建临时节点失败的Floodlight控制器,确定为备用Floodlight控制器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201820946295.5U CN208299812U (zh) | 2018-06-20 | 2018-06-20 | 一种基于ZooKeeper集群的主备切换系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201820946295.5U CN208299812U (zh) | 2018-06-20 | 2018-06-20 | 一种基于ZooKeeper集群的主备切换系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN208299812U true CN208299812U (zh) | 2018-12-28 |
Family
ID=64700715
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201820946295.5U Active CN208299812U (zh) | 2018-06-20 | 2018-06-20 | 一种基于ZooKeeper集群的主备切换系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN208299812U (zh) |
-
2018
- 2018-06-20 CN CN201820946295.5U patent/CN208299812U/zh active Active
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11223690B2 (en) | Service management modes of operation in distributed node service management | |
US9749415B2 (en) | Service management roles of processor nodes in distributed node service management | |
US20170048123A1 (en) | System for controlling switch devices, and device and method for controlling system configuration | |
CN109101196A (zh) | 主节点切换方法、装置、电子设备及计算机存储介质 | |
CN111723024B (zh) | 数据处理方法、装置、系统、客户端服务器及存储服务器 | |
WO2019128670A1 (zh) | 用于在分布式系统中使管理能力自恢复的方法和装置 | |
EP3526931B1 (en) | Computer system and method for dynamically adapting a software-defined network | |
CN108173971A (zh) | 一种基于主备切换的MooseFS高可用方法及系统 | |
CN114124650A (zh) | 一种sptn网络控制器主从部署方法 | |
CN109842526B (zh) | 一种容灾方法和装置 | |
CN104052799B (zh) | 一种利用资源环实现高可用存储的方法 | |
CN113765690A (zh) | 集群切换方法、系统、装置、终端、服务器及存储介质 | |
CN116095145B (zh) | 一种vpc集群的数据控制方法和系统 | |
CN208299812U (zh) | 一种基于ZooKeeper集群的主备切换系统 | |
CN114124803B (zh) | 设备管理方法、装置、电子设备及存储介质 | |
CN116192885A (zh) | 高可用集群架构人工智能实验云平台数据处理方法及系统 | |
CN116346834A (zh) | 一种会话同步方法、装置、计算设备及计算机存储介质 | |
CN114338670B (zh) | 一种边缘云平台和具有其的网联交通三级云控平台 | |
CN114610545A (zh) | 减少私有云计算的单点故障的方法、系统、设备及介质 | |
CN113794765A (zh) | 基于文件传输的网闸负载均衡方法及装置 | |
CN109150941B (zh) | 一种数据中心物理资源浮动方法 | |
CN109474694A (zh) | 一种基于san存储阵列的nas集群的管控方法及装置 | |
CN114826868B (zh) | 一种分布式管控方法及系统 | |
CN108365984B (zh) | 一种信息处理方法及装置 | |
CN117336152A (zh) | 容灾切换装置及容灾切换系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GR01 | Patent grant | ||
GR01 | Patent grant |