一种心跳连接的建立方法及装置制造方法及图纸

技术编号:25184499 阅读:48 留言:0更新日期:2020-08-07 21:12
本申请提供了一种心跳连接的建立方法及装置,该方法应用于Ceph集群中的监视器,该方法包括:根据Ceph集群的OSD拓扑信息,构建多个由OSD组成的心跳连接环,每个心跳连接环上的每个OSD均从Ceph集群中不同的存储节点中的OSD中选择;将每个心跳连接环上的每个OSD的邻居OSD分别发送给每个OSD,以使每个OSD分别与其邻居OSD建立心跳连接。本申请可大大减轻Ceph集群中OSD的通信负载。

【技术实现步骤摘要】
一种心跳连接的建立方法及装置
本申请涉及存储领域,特别涉及一种心跳连接的建立方法及装置。
技术介绍
为了维护分布式存储系统(Ceph)集群的稳定、可靠的运行,在Ceph集群中,针对每个存储节点中的每个对象存储设备(ObjectStorageDevice,OSD),会根据自身配置的心跳连接的条数,例如,配置10条心跳连接,随机与配置的条数个其他OSD建立心跳连接,这里的其他OSD可能是该OSD所属存储节点中的其他OSD,也可能是其他存储节点中的OSD。在Ceph集群运行过程中,该OSD会发心跳报文给其他OSD,也会监听其他OSD发过来的心跳报文,一旦在一定时间段内没有收到和自己建立心跳连接的OSD的心跳报文,该OSD会上报给Ceph集群中的监视器(Monitor),由Monitor根据收到的该OSD的异常报告信息综合判定该OSD是否异常,并进行后续处理。然而,在实际应用中,在Ceph集群规模较大的情况下,上述这种心跳连接的建立方式,需要建立非常多的心跳连接,导致OSD的通信负载较重。
技术实现思路
本申请提供一种心跳连接的建立方法及装置,可大大减轻Ceph集群中OSD的通信负载。本申请提供的技术方案如下:本申请提供一种心跳连接的建立方法,所述方法应用于Ceph集群中的监视器,所述方法包括:根据Ceph集群的OSD拓扑信息,构建多个由OSD组成的心跳连接环,每个心跳连接环上的每个OSD均从所述Ceph集群中不同的存储节点中的OSD中选择;将每个心跳连接环上的每个OSD的邻居OSD分别发送给每个OSD,以使每个OSD分别与其邻居OSD建立心跳连接。本申请还提供一种心跳连接的建立装置,所述装置应用于Ceph集群中的监视器,所述装置包括:构建模块,用于根据Ceph集群的OSD拓扑信息,构建多个由OSD组成的心跳连接环,每个心跳连接环上的每个OSD均从所述Ceph集群中不同的存储节点中的OSD中选择;发送模块,用于将每个心跳连接环上的每个OSD的邻居OSD分别发送给每个OSD,以使每个OSD分别与其邻居OSD建立心跳连接。由以上技术方案可以看出,在Ceph集群中,提供了一种新的建立OSD之间的心跳连接的机制,在此机制中,每个心跳连接环上的OSD均来自不同的存储节点,避免了同一存储节点中的OSD之间建立心跳连接,可大大减少心跳连接的建立条数,进而减轻了OSD的通信负载。附图说明图1为本申请实施例提供的一种心跳连接的建立方法的流程示意图;图2为本申请实施例提供的基于Ceph集群建立的心跳连接环的示意图之一;图3为本申请实施例提供的基于Ceph集群建立的心跳连接环的示意图之二;图4为本申请实施例提供的基于Ceph集群建立的心跳连接环的示意图之三;图5为本申请实施例提供的基于Ceph集群建立的心跳连接环的示意图之三中OSD1异常时的示意图;图6为本申请实施例提供的基于Ceph集群建立的心跳连接环的示意图之三中OSD11异常时的示意图;图7为本申请实施例提供的新增OSD时的处理流程示意图;图8为本申请实施例提供的基于Ceph集群建立的心跳连接环的示意图之二中新增OSD时的示意图;图9为本申请实施例提供的基于Ceph集群建立的心跳连接环的示意图之二中删除OSD时的示意图;图10为本申请实施例提供的一种心跳连接的建立装置的结构示意图。具体实施方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。本申请实施例提供了一种心跳连接的建立方法,如图1所示,该方法应用于Ceph集群中的Monitor,该方法可以包括如下步骤:S11:根据Ceph集群的OSD拓扑信息,构建多个由OSD组成的心跳连接环,每个心跳连接环上的每个OSD均从Ceph集群中不同的存储节点中的OSD中选择。优选地,在本申请实施例中,Monitor可以通过以下方式构建心跳连接环:根据Ceph集群的OSD拓扑信息,判断所有存储节点中的OSD的总数量是否均相同;若是,将每个存储节点中的每个OSD分别与其他存储节点中的一个未被构建过心跳连接环的OSD构建一个第一心跳连接环,其中,不同的第一心跳连接环上的OSD均不相同;否则,根据每个存储节点中的OSD,构建M个第一心跳连接环和N个第二心跳连接环;其中,N个心跳连接环上的OSD中部分OSD为复用的各自所属存储节点中已构建过心跳连接环的OSD;M的取值为OSD的数量最少的存储节点中所有OSD的总数量;N的取值为OSD的数量最多的存储节点中所有OSD的总数量与OSD的数量最少的存储节点中所有OSD的总数量的差值。需要说明的是,本申请实施例中,在构建第一心跳连接环时,可以优选处于同一归置组(PlacementGroup,PG)中的OSD。例如,如图2所示,假设Ceph集群中有3个存储节点,分别为存储节点A、存储节点B和存储节点C,每个存储节点包括的OSD如图2所示。在这种架构下,所有存储节点中OSD的总数量相同,构建的第一心跳连接环可以是如图2所示的心跳连接环。当然,图2仅为一种不同存储节点中不同OSD组合构建心跳连接环的示例,其他示例不再一一列举。又例如,如图3所示,假设Ceph集群中有3个存储节点,分别为存储节点D、存储节点E和存储节点F,每个存储节点包括的OSD如图3所示。在这种架构下,所有存储节点中OSD的总数量不全部相同,构建的第一心跳连接环和第二心跳连接环可以是如图3所示的心跳连接环。其中,共构建了4个第一心跳连接环和1个第二心跳连接环,第一心跳连接环的数量为OSD数量最少的存储节点C中所有OSD的总数量;第二心跳连接环上的OSD3为复用的OSD,且第二心跳连接环的数量为OSD的数量最多的存储节点(存储节点A和存储节点B)中所有OSD的总数量(5个)与OSD的数量最少的存储节点(存储节点C)中所有OSD的总数量(4个)的差值。当然,图3仅为一种不同存储节点中不同OSD组合构建心跳连接环的示例,其他示例不再一一列举。S12:将每个心跳连接环上的每个OSD的邻居OSD分别发送给每个OSD,以使每个OSD分别与其邻居OSD建立心跳连接。可见,在本申请实施例中,在Ceph集群中,提供了一种新的建立OSD之间的心跳连接的机制,在此机制中,每个心跳连接环上的OSD均来自不同的存储节点,避免了同一存储节点中的OSD之间建立心跳连接,可大大减少心跳连接的建立条数,进而减轻了OSD的通信负载。进一步地,在本申请实施例中,本申请还提供了在新的心跳连接建立机制下Ceph集群中OSD异常、新增OSD、新增存储节点、OSD被删除以及存储节点被删除时的处理流程,以确本文档来自技高网...

【技术保护点】
1.一种心跳连接的建立方法,其特征在于,所述方法应用于分布式存储系统Ceph集群中的监视器,所述方法包括:/n根据Ceph集群的对象存储设备OSD拓扑信息,构建多个由OSD组成的心跳连接环,每个心跳连接环上的每个OSD均从所述Ceph集群中不同的存储节点中的OSD中选择;/n将每个心跳连接环上的每个OSD的邻居OSD分别发送给每个OSD,以使每个OSD分别与其邻居OSD建立心跳连接。/n

【技术特征摘要】
1.一种心跳连接的建立方法,其特征在于,所述方法应用于分布式存储系统Ceph集群中的监视器,所述方法包括:
根据Ceph集群的对象存储设备OSD拓扑信息,构建多个由OSD组成的心跳连接环,每个心跳连接环上的每个OSD均从所述Ceph集群中不同的存储节点中的OSD中选择;
将每个心跳连接环上的每个OSD的邻居OSD分别发送给每个OSD,以使每个OSD分别与其邻居OSD建立心跳连接。


2.根据权利要求1所述的方法,其特征在于,根据Ceph集群的OSD拓扑信息,构建多个由OSD组成的心跳连接环,具体包括:
根据Ceph集群的OSD拓扑信息,判断所有存储节点中的OSD的总数量是否均相同;
若是,将每个存储节点中的每个OSD分别与其他存储节点中的一个未被构建过心跳连接环的OSD构建一个第一心跳连接环,其中,不同的第一心跳连接环上的OSD均不相同;
否则,根据每个存储节点中的OSD,构建M个第一心跳连接环和N个第二心跳连接环;
其中,N个第二心跳连接环上的OSD中部分OSD为复用的OSD,每个复用的OSD为复用各自所属存储节点中已构建过心跳连接环的OSD;
M的取值为OSD的数量最少的存储节点中所有OSD的总数量;
N的取值为OSD的数量最多的存储节点中所有OSD的总数量与OSD的数量最少的存储节点中所有OSD的总数量的差值。


3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
针对所述Ceph集群中的每个心跳连接环,如果确定出该心跳连接环未被标记为用于表征心跳连接环上OSD数量减少的降级状态且发生异常的OSD的数量不小于该心跳连接环上所有OSD的总数量的一半,或者确定出该心跳连接环被标记为降级状态且发生异常的OSD的累计数量不小于该心跳连接环上所有OSD的总数量的一半,则通知该心跳连接环上未发生异常的OSD断开与其邻居OSD之间的连接,并删除该心跳连接环;
如果确定出该心跳连接环未被标记为降级状态且发生异常的OSD的数量小于该心跳连接环上所有OSD的总数量的一半,或者确定出该心跳连接环被标记为降级状态且发生异常的OSD的累计数量小于该心跳连接环上所有OSD的总数量的一半,则判断该心跳连接环上其他未发生异常的OSD是否均为复用的OSD;
若是,则删除该心跳连接环;
否则,进一步判断该心跳连接环上当前发生异常的OSD所属的存储节点中是否存在复用次数不大于设定阈值的OSD;
在判断结果为是时,从复用次数不大于设定阈值的OSD中选择一个OSD替换当前发生异常的OSD,并分别通知该心跳连接环上当前发生异常的OSD的邻居OSD重新与替换后的OSD建立心跳连接;
在判断结果为否时,如果该心跳连接环上未发生异常前所有OSD的总数量为3个,通知该心跳连接环上当前发生异常的OSD的邻居OSD彼此建立心跳连接,并将该心跳连接环标记为降级状态;
如果该心跳连接环上未发生异常前所有OSD的总数量大于3个且该心跳连接环未被标记为降级状态,在当前发生异常的OSD的邻居OSD均正常时,通知当前发生异常的OSD的邻居OSD彼此建立心跳连接,在当前发生异常的OSD为至少两个相邻的OSD时,通知该心跳连接环上至少两个相邻的OSD中邻居OSD为正常的OSD彼此建立心跳连接,并将该心跳连接环标记为降级状态;
如果该心跳连接环上未发生异常前所有OSD的总数量大于3个且该心跳连接环被标记为降级状态,在当前发生异常的OSD的邻居OSD均正常时,通知当前发生异常的OSD的邻居OSD彼此建立心跳连接,在当前发生异常的OSD为至少两个相邻的OSD时,通知该心跳连接环上至少两个相邻发生异常的OSD中邻居OSD为正常的OSD彼此建立心跳连接。


4.根据权利要求2或3所述的方法,其特征在于,在所述Ceph集群中的存储节点中新增至少一个OSD后,所述方法还包括:
判断新增的OSD中是否存在与被标记为降级状态的心跳连接环上减少的OSD处于同一存储节点的第一OSD;
在判断出新增的OSD中不存在与被标记为降级状态的心跳连接环上减少的OSD处于同一存储节点的第一OSD时,判断新增的OSD中是否存在与复用的OSD处于同一存储节点的第二OSD;
在判断出新增的OSD中不存在与复用的OSD处于同一存储节点的第二OSD时,执行以下操作:
判断新增的OSD中是否存在能够构建新的第一心跳连接环的第三OSD;
在判断出新增的OSD中存在能够构建新的第一心跳连接环的第三OSD时,根据所述第三OSD构建新的第一心跳连接环,并将新的第一心跳连接环上的每个第三OSD的邻居OSD分别发送给每个第三OSD,以使每个第三OSD分别与其邻居OSD建立心跳连接;
若新增的OSD中还有剩余的第四OSD,判断当前的所有心跳连接环中是否存在第二心跳连接环;
在判断出当前的所有心跳连接环中不存在第二心跳连接环时,根据所述第四OSD构建新的第二心跳连接环,并将新的第二心跳连接环上的每个第四OSD的邻居OSD分别发送给每个第四OSD,以使每个第四OSD分别与其邻居OSD建立心跳连接;
在判断出当前的所有心跳连接环中存在第二心跳连接环时,进一步判断同一存储节点中复用的OSD的数量是否不小于该存储节点中第四OSD的第二数量;
在判断结果为是时,从该存储节点中选择Q个不同的第四OSD替换不同的复用的OSD,分别通知所述Q个复用的OSD的邻居OSD重新与替换后的第四OSD建立心跳连接,并在新增的OSD中仍有剩余的第四OSD时,根据当前剩余的第四OSD构建新的第二心跳连接环,并将新的第二心跳连接环上的每个第四OSD的邻居OSD分别发送给每个第四OSD,以使每个第四OSD分别与其邻居OSD建立心跳连接,其中,Q的取值为该存储节点中所有第四OSD的总数量;
在判断结果为否时,从该存储节点中选择不同的第四OSD替换所有不同的复用的OSD,分别通知所有的复用的OSD的邻居OSD重新与替换后的第四OSD建立心跳连接,并在新增的OSD中仍有剩余的第四OSD时,根据当前剩余的第四OSD构建新的第二心跳连接环,将新的第二心跳连接环上的每个第四OSD的邻居OSD分别发送给每个第四OSD,以使每个第四OSD分别与其邻居OSD建立心跳连接;
在判断出新增的OSD中不存在能够构建新的第一心跳连接环的第三OSD时,将新增的OSD作为第四OSD,执行判断当前的所有心跳连接环中是否存在第二心跳连接环的步骤;
在判断出新增的OSD中存在与复用的OSD处于同一存储节点的第二OSD时,执行以下操作:
若同一存储节点中复用的OSD的数量不大于第二OSD的数量,从该存储节点中选择不同的第二OSD替换所有不同的复用的OSD,分别通知所有的复用的OSD的邻居OSD重新与替换后的第二OSD建立心跳连接,并在新增的OSD中还有剩余的OSD时,根据剩余的OSD构建新的心跳连接环,将新的第二心跳连接环上的每个OSD的邻居OSD分别发送给每个OSD,以使每个OSD分别与其邻居OSD建立心跳连接;
若同一存储节点中复用的OSD的数量大于第二OSD的数量,从该存储节点中选择S个不同的第二OSD替换不同的复用的OSD,分别通知所述S个复用的OSD的邻居OSD重新与替换后的第二OSD建立心跳连接,并在新增的OSD中还有剩余的OSD时,根据剩余的OSD构建新的心跳连接环,将新的心跳连接环上的每个OSD的邻居OSD分别发送给每个OSD,以使每个OSD分别与其邻居OSD建立心跳连接,其中,S的取值为该存储节点中所有第二OSD的总数量;
在判断出新增的OSD中存在与被标记为降级状态的心跳连接环上减少的OSD处于同一存储节点的第一OSD时,将第一OSD恢复到该心跳连接环上,并在新增的OSD还有剩余的OSD时,执行判断新增的OSD中是否存在与复用的OSD处于同一存储节点的第二OSD的步骤。


5.根据权利要求2所述的方法,其特征在于,在所述Ceph集群中的存储节点中的至少一个OSD被删除后,所述方法还包括:
针对每个被删除的OSD,判断该被删除的OSD所在的心跳连接环上的其他OSD是否均为复用的OSD;
若是,删除该被删除的OSD所在的心跳连接环;
否则,从该被删除的OSD所属存储节点中的其他OSD中选择一个OSD替换被删除的OSD,并通知被删除的OSD的邻居OSD重新与替换后的OSD建立心跳连接。


6.根据权利要求2所述的方法,其特征在于,在所述Ceph集群中新增存储节点或者至少一个存储节点被删除后,所述方法还包括:
根据所述Ceph集群的最新OSD拓扑信息,重新构建心跳连接环;
将重新构建的每个心跳连接环上的每个OSD的邻居OSD分别发送给每个OSD,以使每个OSD重新与其邻居OSD建立心跳连接。


7.一种心跳连...

【专利技术属性】
技术研发人员:金朴堃杨潇
申请(专利权)人:新华三技术有限公司成都分公司
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1