一种CTDB自定义分配虚拟IP的方法、装置、设备与流程

文档序号:13168714阅读:682来源:国知局
一种CTDB自定义分配虚拟IP的方法、装置、设备与流程

本发明涉及存储集群技术领域,特别是涉及一种ctdb自定义分配虚拟ip的方法、装置、设备和计算机可读存储介质。



背景技术:

ctdb是一套集群高可用管理软件,在其启动过程中,会将配置文件中的虚拟ip平均的分配到集群节点上,在集群中的节点发生故障时ctdb会执行恢复,将剩余正常节点重新构成一套ctdb集群,其中恢复过程包括虚拟ip的重新分配,故障节点上分配的虚拟ip会漂移到其他正常节点,相应的读写业务也会漂移到的其他正常节点,从而将集群构成一套高可用集群。

传统方式中,在ctdb启动过程中和集群节点故障过程中虚拟ip的分配是根据内置算法随机分配,用户不能直观的知道客户端当前连接的虚拟ip位于哪个节点上,需要通过执行一系列的命令进行查询才能知道,当客户端的业务因各种原因出现问题时,首先得确定客户端当前连接的是哪个节点,然后再进行问题排查。这种情况下严重影响问题排查和解决问题的效率。

同时现有的虚拟ip分配算法跟业务没有任何关系,当需要根据业务实际情况进行虚拟ip的分配时,当前分配算法无法满足需求。另外,当集群中的业务和服务复杂时,无法直观的确定一个ip对应的节点上有哪些业务和服务,也必须得经过一系列的操作才能确定,这也增加了集群的使用复杂度,影响使用效率。

可见,如何提高问题分析和解决效率,增加虚拟ip与业务的耦合性,提高集群的易用性,是本领域技术人员亟待解决的问题。



技术实现要素:

本发明实施例的目的是提供一种ctdb自定义分配虚拟ip的方法、装置、设备和计算机可读存储介质,可以提高问题分析和解决效率,增加虚拟ip与业务的耦合性,提高集群的易用性。

为解决上述技术问题,本发明实施例提供一种ctdb自定义分配虚拟ip的方法,包括:

读取预先存储的虚拟ip分配策略文件,并将所述虚拟ip分配策略文件加载到内存中;所述虚拟ip分配策略文件中包括有多条分配策略,每条分配策略包含有一个虚拟ip及其对应的节点,并且所述虚拟ip对应的所有所述节点按照优先级顺序排列;

从所述内存中获取一条分配策略,依次判断所述分配策略中包括的节点是否出现故障,若存在未出现故障的节点,则将所述分配策略的虚拟ip分配到所述节点上;直至完成所有所述分配策略中虚拟ip的分配,则结束操作。

可选的,所述从所述内存中获取一条分配策略,依次判断所述分配策略中包括的节点是否出现故障,若存在未出现故障的节点,则将所述分配策略的虚拟ip分配到所述节点上;直至完成所有所述分配策略中虚拟ip的分配,则结束操作包括:s21:初始化分配策略计数值;

s22:从所述内存中获取一条分配策略,并将所述分配策略计数值加1;

s23:判断所述分配策略计数值是否小于等于分配策略总数值;若是,则执行s24;若否,则结束操作;

s24:初始化节点计数值;

s25:从所述分配策略中获取第一节点信息,并将所述节点计数值加1;

s26:判断所述节点计数值是否小于等于节点总数值;若是,则执行s27;若否,则结束操作;

s27:判断所述第一节点是否出现故障;若是,则执行s28;若否,则执行s29;

s28:依据所述分配策略中节点的优先级顺序,将出现故障的所述第一节点的下一个节点作为新的第一节点并返回所述s25;

s29:将所述分配策略的虚拟ip分配到所述第一节点上,并返回所述s22。

可选的,还包括:

当所述分配策略中包括的所有节点均出现故障时,则进行告警提示。

本发明实施例还提供了一种ctdb自定义分配虚拟ip的装置,包括读取单元和分配单元;

所述读取单元,用于读取预先存储的虚拟ip分配策略文件,并将所述虚拟ip分配策略文件加载到内存中;所述虚拟ip分配策略文件中包括有多条分配策略,每条分配策略包含有一个虚拟ip及其对应的节点,并且所述虚拟ip对应的所有所述节点按照优先级顺序排列;

所述分配单元,用于从所述内存中获取一条分配策略,依次判断所述分配策略中包括的节点是否出现故障,若存在未出现故障的节点,则将所述分配策略的虚拟ip分配到所述节点上;直至完成所有所述分配策略中虚拟ip的分配,则结束操作。

可选的,所述分配单元包括分配策略初始化子单元、分配策略处理子单元、分配策略判断子单元、节点初始化子单元、节点处理子单元、节点判断子单元、故障判断子单元、选取子单元和配置子单元,

所述分配策略初始化子单元,用于初始化分配策略计数值;

所述分配策略处理子单元,用于从所述内存中获取一条分配策略,并将所述分配策略计数值加1;

所述分配策略判断子单元,用于判断所述分配策略计数值是否小于等于分配策略总数值;若是,则触发所述节点初始化子单元;若否,则结束操作;

所述节点初始化子单元,用于初始化节点计数值;

所述节点处理子单元,用于从所述分配策略中获取分配策略节点信息,并将所述节点计数值加1;

所述节点判断子单元,用于判断所述节点计数值是否小于等于节点总数值;若是,则触发所述故障判断子单元;若否,则结束操作;

所述故障判断子单元,用于判断所述分配策略节点是否出现故障;若是,则触发所述选取子单元;若否,则触发所述配置子单元;

所述选取子单元,用于依据所述分配策略中节点的优先级顺序,将出现故障的所述分配策略节点的下一个节点作为新的分配策略节点并触发所述节点处理子单元;

所述配置子单元,用于将所述分配策略的虚拟ip分配到所述分配策略节点上,并触发所述分配策略处理子单元。

可选的,还包括提示单元,所述提示单元,用于当所述分配策略中包括的所有节点均出现故障时,则进行告警提示。

本发明实施例还提供了一种ctdb自定义分配虚拟ip设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序以实现如上述ctdb自定义分配虚拟ip的方法的步骤。

本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述ctdb自定义分配虚拟ip的方法的步骤。

由上述技术方案可以看出,系统将读取的虚拟ip分配策略文件加载到内存中;在该虚拟ip分配策略文件中包括有多条分配策略,每条分配策略包含有一个虚拟ip及其对应的节点,并且虚拟ip对应的所有节点按照优先级顺序排列;从所述内存中获取一条分配策略,依次判断所述分配策略中包括的节点是否出现故障,若存在未出现故障的节点,则将所述分配策略的虚拟ip分配到所述节点上;直至完成所有所述分配策略中虚拟ip的分配,则结束操作。系统中预先存储的虚拟ip分配策略文件中的分配策略可以由用户根据实际使用场景,或者是用户的使用习惯确定,也即用户可以根据自己的需要随意设置虚拟ip的分配方式,而不是由ctdb内置的有限的算法进行虚拟ip的分配,大大提高了ctdb集群的灵活性。同时当集群业务出现问题时,用户可以根据虚拟ip与节点的对应关系,快速定位节点解决问题;当集群业务复杂时需要将虚拟ip与具体业务进行绑定时,用户也可以清楚的知道哪些虚拟ip上绑定了哪些业务和服务,提高了集群的易用性。

附图说明

为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种ctdb自定义分配虚拟ip的方法的流程图;

图2为本发明实施例提供的一种依据分配策略进行虚拟ip分配的方法的流程图;

图3为本发明实施例提供的一种ctdb自定义分配虚拟ip的装置的结构示意图;

图4为本发明实施例提供的一种ctdb自定义分配虚拟ip设备的硬件结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。

接下来,详细介绍本发明实施例所提供的一种ctdb自定义分配虚拟ip的方法。图1为本发明实施例提供的一种ctdb自定义分配虚拟ip的方法的流程图,该方法包括:

s101:读取预先存储的虚拟ip分配策略文件,并将所述虚拟ip分配策略文件加载到内存中。

在本发明实施例中,用户可以根据实际使用场景,制定相应的虚拟ip的分配策略,可以将所有分配策略以虚拟ip分配策略文件形式存储于系统中。

在该虚拟ip分配策略文件中可以包括有多条分配策略,每条分配策略包含有一个虚拟ip及其对应的节点,并且所述虚拟ip对应的所有所述节点按照优先级顺序排列。

在具体实现中,可以针对每个虚拟ip制定出每个节点的分配优先级,以节点的物理节点号排列(从0开始),该虚拟ip会首先分配到优先级最高的节点;当优先级最高的节点发生故障时,该虚拟ip会被分配到剩余节点中优先级最高的节点。

虚拟ip分配策略文件可以使用可扩展标记语言(extensiblemarkuplanguage,xml)文件进行组织和存储,针对每个虚拟ip制定出每个节点的分配优先级,节点号以逗号分隔,其具体形式如下:

<virtual_ipsnodecount="3"vipcount="3">

<vipip="10.0.0.1">0,1,2</vip>

<vipip="10.0.0.2">1,2,0</vip>

<vipip="10.0.0.3">2,0,1</vip>

</virtual_ips>

其中,nodecount表示集群的节点个数;vipcount表示虚拟ip的个数,地址为10.0.0.1的虚拟ip对应的节点顺序为“0,1,2”;地址为10.0.0.2的虚拟ip对应的节点顺序为“1,2,0”;地址为10.0.0.3的虚拟ip对应的节点顺序为“2,0,1”。

s102:从所述内存中获取一条分配策略,依次判断所述分配策略中包括的节点是否出现故障,若存在未出现故障的节点,则将所述分配策略的虚拟ip分配到所述节点上;直至完成所有所述分配策略中虚拟ip的分配,则结束操作。

ctdb软件可以根据获取的分配策略进行虚拟ip的分配。以一条分配策略为例,假设该条分配策略中虚拟ip对应有5个节点,按照优先级顺序依次为节点1至节点5,系统可以先对优先级最高的节点1进行故障检测,当节点1未出现故障时,则可以将该虚拟ip分配到节点1上,完成该虚拟ip的分配;当节点1故障时,则从剩余的节点中选取优先级最高的节点2进行故障检测,当节点2未出现故障时,则可以将该虚拟ip分配到节点2上;当节点2故障时,则从剩余的节点中选取优先级最高的节点3进行故障检测,依次类推完成虚拟ip的分配。

以一条分配策略为例,当存在未出现故障的节点,则将所述分配策略的虚拟ip分配到所述节点上,完成该虚拟ip的分配;或者是当完成该条分配策略中所有节点的故障判断后,则对下一条分配策略进行处理,下一条分配策略的处理方式与该条分配策略的处理方式类似,在此不再赘述。

考虑到虚拟ip分配策略文件可以包括有多条分配策略,每条分配策略中的虚拟ip对应的节点可以有多个,在具体实现中,可以通过设置分配策略计数值和节点计数值的方式,完成虚拟ip的分配,其具体过程如图2所示,包括:

s21:初始化分配策略计数值。

s22:从所述内存中获取一条分配策略,并将所述分配策略计数值加1。

分配策略计数值可以用于表示系统已经获取过的分配策略的条数,初始化时,可以将分配策略计数值设置为0,从内存中每读取一条分配策略,分配策略计数值对应的可以加1。

需要说明的是,为了避免重复操作,集群系统每次均从未处理过的分配策略中获取一条分配策略。在具体实现中,集群系统可以依据虚拟ip分配策略文件中包括的分配策略的顺序依次读取。

s23:判断所述分配策略计数值是否小于等于分配策略总数值。

分配策略总数值可以是虚拟ip分配策略文件中包括的分配策略的总条数。

当分配策略计数值小于等于分配策略总数值时,则说明该条分配策略中的虚拟ip还未被分配,则可以执行s24;当分配策略计数值大于分配策略总数值时,则说明虚拟ip分配策略文件中包括的所有分配策略已经处理完毕,此时则结束操作。

s24:初始化节点计数值。

s25:从所述分配策略中获取第一节点信息,并将所述节点计数值加1。

节点计数值可以用于表示已经获取过的节点的个数,初始化时,可以将节点计数值设置为0,每获取一个节点信息,节点计数值对应的可以加1。

s26:判断所述节点计数值是否小于等于节点总数值。

节点总数值可以是一条分配策略中包括的节点的总个数。

当节点计数值小于等于节点总数值时,则说明还未对该节点的故障情况进行判断,则可以执行s27;当节点计数值大于节点总数值时,则说明已经对该条分配策略中的所有节点进行了故障判断,此时则结束操作。

s27:判断所述第一节点是否出现故障。

以一条分配策略为例,第一节点可以是该条分配策略中包含的所有未进行故障判断的节点中优先级最高的一个节点。

若第一节点出现故障,则说明该节点无法提供业务服务,此时需要对下一个节点进行判断,即执行s28;若第一节点未出现故障,则说明该节点可以提供业务服务,此时可以将虚拟ip分配到该节点上,即执行s29;

s28:依据所述分配策略中节点的优先级顺序,将出现故障的所述第一节点的下一个节点作为新的第一节点并返回所述s25。

s29:将所述分配策略的虚拟ip分配到所述第一节点上,并返回所述s22。

执行一次s24至s29的操作可以完成一条分配策略中虚拟ip的配置,通过返回s22可以依次完成所有分配策略的配置。

由上述技术方案可以看出,系统将读取的虚拟ip分配策略文件加载到内存中;在该虚拟ip分配策略文件中包括有多条分配策略,每条分配策略包含有一个虚拟ip及其对应的节点,并且虚拟ip对应的所有节点按照优先级顺序排列;从所述内存中获取一条分配策略,依次判断所述分配策略中包括的节点是否出现故障,若存在未出现故障的节点,则将所述分配策略的虚拟ip分配到所述节点上;直至完成所有所述分配策略中虚拟ip的分配,则结束操作。系统中预先存储的虚拟ip分配策略文件中的分配策略可以由用户根据实际使用场景,或者是用户的使用习惯确定,也即用户可以根据自己的需要随意设置虚拟ip的分配方式,而不是由ctdb内置的有限的算法进行虚拟ip的分配,大大提高了ctdb集群的灵活性。同时当集群业务出现问题时,用户可以根据虚拟ip与节点的对应关系,快速定位节点解决问题;当集群业务复杂时需要将虚拟ip与具体业务进行绑定时,用户也可以清楚的知道哪些虚拟ip上绑定了哪些业务和服务,提高了集群的易用性。

每个虚拟ip对应的节点个数有限,可能会出现该虚拟ip对应的所有节点都出现故障的情况,此时,无法顺利完成该虚拟ip的分配,为了便于及时提供用户,可以当所述分配策略中包括的所有节点均出现故障时,则进行告警提示。

图3为本发明实施例提供的一种ctdb自定义分配虚拟ip的装置的结构示意图,包括读取单元31和分配单元32;

所述读取单元31,用于读取预先存储的虚拟ip分配策略文件,并将所述虚拟ip分配策略文件加载到内存中;所述虚拟ip分配策略文件中包括有多条分配策略,每条分配策略包含有一个虚拟ip及其对应的节点,并且所述虚拟ip对应的所有所述节点按照优先级顺序排列;

所述分配单元32,用于从所述内存中获取一条分配策略,依次判断所述分配策略中包括的节点是否出现故障,若存在未出现故障的节点,则将所述分配策略的虚拟ip分配到所述节点上;直至完成所有所述分配策略中虚拟ip的分配,则结束操作。

可选的,所述分配单元包括分配策略初始化子单元、分配策略处理子单元、分配策略判断子单元、节点初始化子单元、节点处理子单元、节点判断子单元、故障判断子单元、选取子单元和配置子单元,

所述分配策略初始化子单元,用于初始化分配策略计数值;

所述分配策略处理子单元,用于从所述内存中获取一条分配策略,并将所述分配策略计数值加1;

所述分配策略判断子单元,用于判断所述分配策略计数值是否小于等于分配策略总数值;若是,则触发所述节点初始化子单元;若否,则结束操作。

所述节点初始化子单元,用于初始化节点计数值;

所述节点处理子单元,用于从所述分配策略中获取分配策略节点信息,并将所述节点计数值加1;

所述节点判断子单元,用于判断所述节点计数值是否小于等于节点总数值;若是,则触发所述故障判断子单元;若否,则结束操作;

所述故障判断子单元,用于判断所述分配策略节点是否出现故障;若是,则触发所述选取子单元;若否,则触发所述配置子单元;

所述选取子单元,用于依据所述分配策略中节点的优先级顺序,将出现故障的所述分配策略节点的下一个节点作为新的分配策略节点并触发所述节点处理子单元;

所述配置子单元,用于将所述分配策略的虚拟ip分配到所述分配策略节点上,并触发所述分配策略处理子单元。

可选的,还包括提示单元,所述提示单元,用于当所述分配策略中包括的所有节点均出现故障时,则进行告警提示。

图3所对应实施例中特征的说明可以参见图1和图2所对应实施例的相关说明,这里不再一一赘述。

由上述技术方案可以看出,系统将读取的虚拟ip分配策略文件加载到内存中;在该虚拟ip分配策略文件中包括有多条分配策略,每条分配策略包含有一个虚拟ip及其对应的节点,并且虚拟ip对应的所有节点按照优先级顺序排列;从所述内存中获取一条分配策略,依次判断所述分配策略中包括的节点是否出现故障,若存在未出现故障的节点,则将所述分配策略的虚拟ip分配到所述节点上;直至完成所有所述分配策略中虚拟ip的分配,则结束操作。系统中预先存储的虚拟ip分配策略文件中的分配策略可以由用户根据实际使用场景,或者是用户的使用习惯确定,也即用户可以根据自己的需要随意设置虚拟ip的分配方式,而不是由ctdb内置的有限的算法进行虚拟ip的分配,大大提高了ctdb集群的灵活性。同时当集群业务出现问题时,用户可以根据虚拟ip与节点的对应关系,快速定位节点解决问题;当集群业务复杂时需要将虚拟ip与具体业务进行绑定时,用户也可以清楚的知道哪些虚拟ip上绑定了哪些业务和服务,提高了集群的易用性。

图4为本发明实施例提供的一种ctdb自定义分配虚拟ip设备40的硬件结构示意图,包括存储器41和处理器42;

存储器41,用于存储计算机程序;

处理器42,用于执行所述计算机程序以实现如上述ctdb自定义分配虚拟ip的方法的步骤。

本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述ctdb自定义分配虚拟ip的方法的步骤。

以上对本发明实施例所提供的一种ctdb自定义分配虚拟ip的方法、装置、设备和计算机可读存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

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