一种虚IP地址管理方法及装置与流程

文档序号:29073035发布日期:2022-03-01 21:55阅读:105来源:国知局
一种虚IP地址管理方法及装置与流程
一种虚ip地址管理方法及装置
技术领域
1.本发明涉及计算机技术领域,具体涉及一种虚ip地址管理方法及装置。


背景技术:

2.随着业务规模的增长,考虑到容量和扩展性,越来越多的应用部署在集群上,当客户端从外部访问应用时,使用一个高可用ip地址(即虚ip地址)实现集群中应用的访问。该虚ip地址不会绑到集群的单个节点,在节点故障时,虚ip地址会迁移到其他正常节点上,从而外部的客户端仍然使用虚ip地址访问应用。
3.目前,在集群中有主备节点,主节点上承载有虚ip地址,并且主备节点之间基于vrrp(virtual router redundancy protocol,虚拟路由冗余协议)维持心跳信息,当主节点故障,备节点接收不到主节点的心跳信息时,由备节点设置虚ip地址,完成虚ip地址迁移。
4.然而,在主备节点之间由于某些原因造成网络隔离时,主备节点之间无法在指定时间内接收到彼此的心跳信息,此时备节点认为主节点故障,需要立刻设置虚ip地址,确保虚ip地址高可用,而主节点认为备节点故障,主节点继续承载虚ip地址。从而造成虚ip地址在两个节点上并存的问题,导致地址冲突,并且还会影响客户端访问。


技术实现要素:

5.本发明的目的是针对上述现有技术的不足提出的一种虚ip地址管理方法及装置,该目的是通过以下技术方案实现的。
6.本发明的第一方面提出了一种虚ip地址管理方法,应用于集群中的任一节点,所述任一节点与所述集群中部署的etcd服务通信连接,所述方法包括:
7.周期性的向所述etcd服务中的同一键执行写入操作;
8.如果写入操作执行成功,则在本节点设置虚ip地址;
9.如果写入操作执行失败,则在节点设置有所述虚ip地址时,清除所述虚ip地址。
10.在本技术的一些实施例中,所述周期性的向所述etcd服务中的同一键执行写入操作,包括:
11.周期性的向所述etcd服务中的同一键执行记入键值操作和/或记入有效时长操作。
12.在本技术的一些实施例中,所述周期性的向所述etcd服务中的同一键执行记入键值操作和/或记入有效时长操作,包括:
13.判断所述etcd服务中是否存有所述键和对应的值;若存有所述键和对应的值,则判断所述值是否为本节点记录的值;如果是本节点记录的值,则向所述etcd服务中的所述键记入有效时长,确定写入操作执行成功;如果不是本节点记录的值,则确定写入操作执行失败;若不存有所述键和对应的值,则向所述etcd服务中记入本节点记录的键和值,以及所述键的有效时长,确定写入操作执行成功。
14.在本技术的一些实施例中,所述判断所述etcd服务中是否存有所述键和对应的值,包括:
15.向所述etcd服务读取所述键和对应的值;如果读取成功,则确定所述etcd服务中存有所述键和对应的值;如果读取失败,则将读取次数加1,并继续执行向所述etcd服务读取所述键和对应的值,直到所述读取次数达到预设次数时结束,并确定所述etcd服务中未存有所述键和对应的值。
16.在本技术的一些实施例中,所述方法还包括:
17.通过所述etcd服务对所述键的有效时长进行监控;当所述有效时长到期时,清除所述键和对应的值。
18.本发明的第二方面提出了一种虚ip地址管理装置,应用于集群中的任一节点,所述任一节点与所述集群中部署的分布式一致性键值存储etcd服务通信连接,所述装置包括:
19.写入模块,用于周期性的向所述etcd服务中的同一键执行写入操作;
20.虚ip设置模块,用于在写入操作执行成功时,在本节点设置虚ip地址;
21.虚ip清除模块,用于在写入操作执行失败且本节点设置有所述虚ip地址时,清除所述虚ip地址。
22.基于上述第一方面和第二方面所述的虚ip地址管理方法及装置,本发明至少具有如下有益效果或优点:
23.通过在集群中部署etcd服务,并由集群中各节点均周期性的向etcd服务中的同一键执行写入操作,由于etcd服务具有保证键和值在集群中强一致的特点,因此在同一时刻只能有一个节点会执行成功写入操作,从而可以在写入操作执行成功的节点上设置虚ip地址,而写入操作执行失败的节点自动清除虚ip地址,以确保虚ip地址的高可用切换。
24.进一步地,即使在节点出现网络隔离或故障问题时,由于节点写入操作执行失败,因此会自动清除虚ip地址,从而可以避免因网络隔离等问题导致的虚ip地址在多个节点上并存的问题。
附图说明
25.此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
26.图1为本发明示出的一种虚ip地址迁移示意图;
27.图2为本发明示出的虚ip地址在多个节点上并存的示意图;
28.图3为本发明根据一示例性实施例示出的一种虚ip地址管理方法的实施例流程图;
29.图4为本发明根据图3所示实施例示出的一种集群中各节点自身记录的键和值的示意图;
30.图5为本发明根据图3所示实施例示出的一种向etcd服务执行写入操作的流程示意图;
31.图6为本发明根据图3所示实施例示出的一种节点1承载虚ip地址的结构示意图;
32.图7为本发明根据图3所示实施例示出的一种节点1网络隔离时的虚ip地址迁移示
意图;
33.图8为本发明根据一示例性实施例示出的一种虚ip地址管理装置的结构示意图。
具体实施方式
34.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
35.在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
36.应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
37.目前,对于使用虚ip地址为外部提供访问服务的分布式操作系统集群,每一节点均部署有keepalived服务,并由keepalived服务基于vrrp协议维持主备节点的心跳,在集群中主备节点是基于优先级选举的,两节点在互相接收到心跳信息时,优先级高的节点为主节点,其上承载有虚ip地址,优先级低的节点为备节点,不承载虚ip地址。在主节点出现问题时,备节点在一定时间内接收不到主节点的心跳信息,备节点承载虚ip地址,从而完成虚ip迁移。
38.如图1所示,节点1的优先级高于节点3,节点1成为主节点,节点3成为备节点,节点1承载虚ip地址,当节点1出现问题时,节点3接收不到节点1的心跳信息,节点3变为主节点,并承载虚ip地址,完成虚ip迁移。
39.但是,在主备节点之间由于某些原因(例如网络策略限制、链路故障等)造成网络隔离时,如图2所示,作为主节点的节点1和节点2无法接收到彼此的心跳信息,一方面,作为备节点的节点2认为节点1出现问题,立即变为主节点并承载虚ip地址,以确定虚ip地址高可用;另一方面,节点1认为节点2出现问题,节点1继续承载虚ip地址,造成虚ip地址在两个节点上并存,导致地址冲突。此时,外部客户端访问应用时,有时可能从节点1上访问,有时可能从节点2上访问,致使节点1和节点2上的数据无法保持一致,影响到客户端访问。
40.为解决上述技术问题,本技术提出一种虚ip地址管理方法,即集群中的任一节点周期性的向集群中部署的etcd(分布式一致性键值存储)服务中的同一键执行写入操作,如果写入操作执行成功,则设置虚ip地址,如果写入操作执行失败,则在本地设置有虚ip地址时,清除虚ip地址。
41.基于上述描述可达到的技术效果有:
42.通过在集群中部署etcd服务,并由集群中各节点均周期性的向etcd服务中的同一键执行写入操作,由于etcd服务具有保证键和值在集群中强一致的特点,因此在同一时刻
只能有一个节点会执行成功写入操作,从而可以在写入操作执行成功的节点上设置虚ip地址,而写入操作执行失败的节点自动清除设置的虚ip地址,以确保虚ip地址的高可用切换。
43.进一步地,即使在节点出现网络隔离或故障问题时,由于节点写入操作执行失败,因此会自动清除虚ip地址,从而可以避免因网络隔离等问题导致的虚ip地址在多个节点上并存的问题。
44.为了使本领域技术人员更好的理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述。
45.实施例一:
46.图3为本发明根据一示例性实施例示出的一种虚ip地址管理方法的实施例流程图,在本技术实施例中,预先在集群中部署etcd服务,该etcd服务采用raft算法保证键值对在集群中强一致,也就是说,集群中每个节点上部署的etcd服务存储的键值对始终保持一致。该方法可以应用于集群中的任一节点上,如图3所示,该虚ip地址管理方法包括如下步骤:
47.步骤101:周期性的向集群部署的etcd服务中的同一键执行写入操作。
48.也就是说,集群中的各个节点均会周期性的尝试往etcd服务中同一键记入自身节点记录的值。
49.需要说明的是,各节点均会预先记录etcd服务中同一键的值,并且各节点记录的值均不同,如图4所示,etcd服务中的键key=/vipnominate,节点1上预先记录/vipnominate的值value=node1,节点2上预先记录/vipnominate的值value=node2,节点3上预先记录/vipnominate的值value=node3。
50.在一可选的具体实施例中,节点在尝试记入自身节点记录的值时,还可以设置有效时长(即租期),以实现周期性续租,因此节点向etcd服务中的同一键具体执行的是记入键值操作和/或记入有效时长操作。
51.也就是说,如果etcd服务中还未记入键和值,那么集群中先发起写入操作的节点执行的是记入键值操作和记入有效时长操作,如果etcd服务中已经记入有键和值,并且记入的值为集群中某一节点上记录的值,那么该某一节点发起的写入操作具体为记入有效时长操作,以实现续租目的。
52.在一可选的具体实施方式中,如图5所示,针对向etcd服务中的同一键执行写入操作的过程包括如下步骤:
53.步骤1011:判断etcd服务中是否存有键和对应的值,若存有,则执行步骤1012,若未存有,则执行步骤1015。
54.可选的,可以向etcd服务读取所述键和对应的值,如果读取成功,则确定etcd服务中存有所述键和对应的值,如果读取失败,则将读取次数加1,并继续执行向etcd服务读取所述键和对应的值,直到读取次数达到预设次数时结束,并确定etcd服务中未存有所述键和对应的值。
55.其中,通过多次读取方式,以确保写入操作成功执行。
56.进一步地,如果读取次数达到预设次数仍然读取失败,则说明节点可能出现故障问题而无法与etcd服务进行通信,也可能是因为网络隔离问题而无法与etcd服务进行通信,可以确定该节点写入操作执行失败,如果节点上设置有虚ip地址,自动清除虚ip地址。
57.步骤1012:判断所述值是否为本节点记录的值,如果是本节点记录的值,则执行步骤1013,如果不是本节点记录的值,则执行步骤1014。
58.步骤1013:向etcd服务中的所述键记入有效时长,确定写入操作执行成功。
59.其中,如果读取到的值与本节点记录的值一致,说明本节点上当前承载着虚ip地址,可以向etcd服务申请续租,即向etcd服务中的所述键记入新的有效时长。
60.值得注意的是,用于续租的有效时长要大于节点发起写入操作的周期,以确保节点能够在有效时长到期前完成续租。
61.需要说明的是,为了提升记入成功率,如果本节点向etcd服务中的键记入有效时长出现失败的情况,可以再次向etcd服务记入,直到记入次数达到一定次数时结束。
62.进一步地,如果多次记入均失败,则说明节点在记入过程中出现故障问题而无法与etcd服务进行通信,也可能是因为网络隔离问题而无法与etcd服务进行通信,可以确定该节点写入操作执行失败,如果节点上设置有虚ip地址,自动清除虚ip地址。
63.步骤1014:确定写入操作执行失败。
64.其中,如果读取到的值与本节点记录的值不一致,说明虚ip地址不在本节点上承载,本节点无法执行任何写入操作。
65.步骤1015:向etcd服务中记入本节点记录的键和值,以及所述键的有效时长,确定写入操作执行成功。
66.其中,如果etcd服务未存有键和对应的值,说明还没有节点向etcd服务中的键执行过写入操作,本节点此次记入的键和值,以及有效时长,属于etcd服务的首次记入。
67.需要说明的是,为了提升记入成功率,如果本节点向etcd服务中记入本节点记录的键和值,以及所述键的有效时长出现失败的情况,可以再次向etcd服务记入,直到记入次数达到一定次数时结束。
68.进一步地,如果多次记入均失败,则说明节点在记入过程中出现故障问题而无法与etcd服务进行通信,也可能是因为网络隔离问题而无法与etcd服务进行通信,可以确定该节点写入操作执行失败,如果节点上设置有虚ip地址,自动清除虚ip地址。
69.基于上述描述,在集群上部署的etcd服务中,需要对其上存储的键的有效时长进行监控,当有效时长到期时,说明节点可能因为故障或网络隔离,在有效时长内未能成功续租,因此需要清除所述键和对应的值,以便于由其他节点完成键值写入操作后能够承载虚ip地址,从而完成虚ip地址迁移。
70.步骤102:如果写入操作执行成功,则在本节点设置虚ip地址。
71.其中,写入操作执行成功指的是etcd服务中存储的键的值为本节点记录的值,说明当前由本节点承载虚ip地址。
72.具体地,节点设置虚ip地址的设置命令如下:
73.ip address add《虚ip地址》/《掩码长度》dev《网卡名称》
74.其中,“虚ip地址”为要设置的虚地址,网卡名称用于指示虚ip地址需要设置到节点上的网卡。
75.如图6所示,etcd服务中存储的键key=/vipnominate的值value=node1,即属于节点1上记录的值,因此节点1需要执行设置命令,以承载虚ip地址。
76.步骤103:如果写入操作执行失败,则在本节点设置有虚ip地址时,清除所述虚ip
地址。
77.其中,基于上述步骤101的描述可知,写入操作执行失败可能是因为etcd服务中存储的键的值不是本节点记录的值无法执行记入,也可能是因为本节点故障或网络隔离问题,无法与etcd服务进行通信造成记入失败,说明本节点此时不能承载虚ip地址。
78.具体地,节点清除虚ip地址的清除命令如下:
79.ip address del《虚ip地址》/《掩码长度》dev《网卡名称》
80.其中,“虚ip地址”为要清除的虚地址,网卡名称用于指示虚ip地址所设置的网卡。
81.在一示例性场景中,如图7所示,当节点1因为网络隔离问题无法向etcd服务中的键key=/vipnominate完成续租,自动清除虚ip地址,进而导致该键的有效时长到期,etcd服务会清除键key=/vipnominate和值value=node1,而后由节点2向etcd服务记入节点2上记录的键key=/vipnominate和值value=node2,并在节点2上设置虚ip地址,从而完成虚ip地址迁移。
82.至此,完成上述图3所示的虚ip地址的管理流程,通过在集群中部署etcd服务,并由集群中各节点均周期性的向etcd服务中的同一键执行写入操作,由于etcd服务具有保证键和值在集群中强一致的特点,因此在同一时刻只能有一个节点会执行成功写入操作,从而可以在写入操作执行成功的节点上设置虚ip地址,而写入操作执行失败的节点自动清除设置的虚ip地址,完成虚ip地址的分配,以确保虚ip地址的高可用切换。
83.进一步地,即使在节点出现网络隔离或故障问题时,由于节点写入操作执行失败,因此会自动清除虚ip地址,从而可以避免因网络隔离等问题导致的虚ip地址在多个节点上并存的问题。
84.与前述虚ip地址管理方法的实施例相对应,本发明还提供了虚ip地址管理装置的实施例。
85.图8为本发明根据一示例性实施例示出的一种虚ip地址管理装置的结构示意图,该装置用于执行上述任一实施例提供的虚ip地址管理方法,如图8所示,该装置包括。
86.写入模块810,用于周期性的向所述etcd服务中的同一键执行写入操作;
87.虚ip设置模块820,用于在写入操作执行成功时,在本节点设置虚ip地址;
88.虚ip清除模块830,用于在写入操作执行失败且本节点设置有所述虚ip地址时,清除所述虚ip地址。
89.在一可选的实现方式中,所述写入模块810,具体用于周期性的向所述etcd服务中的同一键执行记入键值操作和/或记入有效时长操作。
90.在一可选的实现方式中,所述写入模块,具体用于判断所述etcd服务中是否存有所述键和对应的值;若存有所述键和对应的值,则判断所述值是否为本节点记录的值;如果是本节点记录的值,则向所述etcd服务中的所述键记入有效时长,确定写入操作执行成功;如果不是本节点记录的值,则确定写入操作执行失败。若不存有所述键和对应的值,则向所述etcd服务中记入本节点记录的键和值,以及所述键的有效时长,确定写入操作执行成功。
91.在一可选的实现方式中,所述写入模块810,具体用于在判断所述etcd服务中是否存有所述键和对应的值的过程中,向所述etcd服务读取所述键和对应的值;如果读取成功,则确定所述etcd服务中存有所述键和对应的值;如果读取失败,则将读取次数加1,并继续执行向所述etcd服务读取所述键和对应的值,直到所述读取次数达到预设次数时结束,并
确定所述etcd服务中未存有所述键和对应的值。
92.在一可选的实现方式中,所述装置还包括(图8中未示出):监控模块,用于通过所述etcd服务对所述键的有效时长进行监控;当所述有效时长到期时,清除所述键和对应的值。
93.上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
94.对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
95.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
96.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
97.以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1