【技术实现步骤摘要】
一种心跳连接的建立方法及装置
本申请涉及存储领域,特别涉及一种心跳连接的建立方法及装置。
技术介绍
为了维护分布式存储系统(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中选择;将每个心跳连接环 ...
【技术保护点】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。