技术领域
[0001] 本发明涉及计算机通信领域,特别涉及一种实现浮动IP地址自动漂移的方法和系统。
相关背景技术
[0002] 服务器集群通过将相同功能的服务部署在多台主机上,一方面能够把服务压力平均分摊,一方面能够在一个主机的服务异常后,对应服务能力能被另外一台正常主机所替代。但是服务对外提供的形式一般为IP地址和端口号,于是服务主机异常后即使被正常主机接替,如果IP地址不切换,集群对外的服务依然是不可用的。所以一般会对一个集群的一个应用配置一个浮动IP地址,用此IP对外暴露服务。当一台主机对外提供服务时,浮动IP地址就需要绑定在此主机,而当此主机异常并被其他主机替代时,浮动IP也要转移到替代的主机上。
具体实施方式
[0015] 以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
[0016] 本发明在应用层实现主机集群浮动IP地址的主动漂移,以达到集群对外服务高可用的目的。目前集群内的主机都有自己独立IP地址,但对外服务提供只能提供一个固定的IP地址做服务IP,因此此服务IP需要能够自动在集群内主机间自动漂移,以做到一旦一台主机宕机异常后,集群提供服务对外的表现是可用的。
[0017] 如图1所示,本发明提供了一种实现浮动IP地址自动漂移的方法,[0018] 步骤1,在服务器集群中的每台服务器上安装守护进程;
[0019] 步骤2,所述服务器集群中所有服务器的守护进程同时启动,守护进程在Zookeeper上竞争创建以浮动IP地址命名的动态节点;
[0020] 步骤3,成功创建以浮动IP地址命名的动态节点的守护进程在其所属服务器的网卡上绑定浮动IP地址,执行步骤4;未成功创建以浮动IP地址命名的动态节点的守护进程检测当前服务器的网卡上是否已经绑定浮动IP,如果是执行步骤5;如果否则直接执行步骤6;
[0021] 步骤4,守护进程检测当前服务器运作是否正常,如果是,则重复步骤4,如果否,则删除已经绑定的浮动IP地址,并执行步骤6;
[0022] 步骤5,删除已经绑定的浮动IP地址,执行步骤6;
[0023] 步骤6,守护进程退出,等待下次启动。
[0024] 本发明所述方法利用Zookeeper的数值唯一性特点,在其上无法建立同名节点,从而通过多台主机同时由守护进程创建同名节点,保证浮动IP被绑定的主机的唯一性。本发明所述方法还利用Zookeeper动态节点与进程的依赖特性,当守护进程发现集群当前服务主机的服务不可用,或当前服务主机宕机时,守护进程会主动退出,从而在Zookeeper上的动态节点被Zookeeper自动释放,以及时通知其他主机立刻绑定浮动IP地址接替失效的服务主机。另外,通过利用Zookeeper上动态节点自动删除特性,可以在集群范围内及时获知服务主机异常,并由集群内备用主机及时替换,从而保证集群服务的高可用性。
[0025] 在步骤1之前还包括,搭建独立的Zookeeper服务器集群,并且在Zookeeper上根据服务器集群和服务器名称建立固定路径,比如/cluster01/serviceA。Zookeeper集群的高可用性由Zookeeper自身保证。
[0026] 步骤1还包括,在服务器集群中的每台服务器上安装监听进程,监听进程每隔预定时间调度守护进程。
[0027] 如图2所示,一种实现浮动IP地址自动漂移的系统,包括守护进程模块;守护进程模块安装于服务器集群中的每台服务器上;守护进程模块,用于在Zookeeper上竞争创建以浮动IP地址命名的动态节点,在成功创建以浮动IP地址命名的动态节点的服务器的网卡上绑定浮动IP地址,并检测当前服务器运作是否正常,如果是,则继续检测服务器运作是否正常,如果否,则删除已经绑定的浮动IP地址,守护进程退出,等待下次启动;在未成功创建以浮动IP地址命名的动态节点的服务器上,检测当前服务器的网卡上是否已经绑定浮动IP,如果是,则删除已经绑定的浮动IP地址;如果否,则守护进程退出,等待下次启动。
[0028] 一种实现浮动IP地址自动漂移的系统,服务器集群为Zookeeper服务器集群,Zookeeper上根据服务器集群和服务器名称建立有固定路径。
[0029] 一种实现浮动IP地址自动漂移的系统,还包括监听进程模块,监听进程模块安装于服务器集群中的每台服务器上,监听进程模块每隔预定时间调度守护进程模块。
[0030] 以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。