Linux学习 当前位置:首页 > 计算机学习 > 操作系统 > Linux学习>正文

记一次ceph心跳机制异常的案例

【Linux学习】 2020-01-10本文已影响

症状:引入ceph集群使用时,对于大型集群,如果存在节点网络或osd异常,则mon不会打开异常的osd,等待900s,mon发现该节点的osd未更新pgmap,然后打开osd映射,再打开osd映射 然而,在900s中,客户机IO上升到异常的osd,IO超时,对上次的业务造成了进一步的影响。ktF秒教学习网-学习教育资源分享平台

原因分析:在mon日志中,异常osd和确立心跳的其他osd也向mon报告了该osd的异常,但mon在短时间内没有osd标记down。 看了相关的网络和书籍资料,才发现了问题。 首先,我们要关注osd配置的几个相关配置项。 (1) OSD _ heart beat _ min _ peers:10 (2) mon _ OSD _ min _ down _ reporters:2 (3) mon _ OSD _ min _ down _ reporters _ ratio:0.5或更大参数全部在ceph集群节点处被执行 问题的原因是什么?在问题现场的集群配置中,每个osd随机选择10个peer osd作为建立心跳的对象,但是在ceph的机制中,这10个osd不一定都能够分散到不同的节点。 因此,在存在osd异常的情况下,如果向mon报告osd瘫痪的reporter的概率不满足ratio=0.5,即reporter的数量没有超过集群存储主机数量的一半,则osd之间的心跳警报机制将导致osd丢失 900s后mon发现不更新osd pgmap才认出异常(另一机制可能为osd心跳报警机制投保最后),通过osd图扩散。 这种900s经常不被顶级业务接受。 但是,这种现象在小规模集群中很少出现。 例如,以一个3节点ceph集群为例,如果与其他节点osd的peer数小于osd_heartbeat_min_peers,则osd继续建立心跳连接,osd选择与其他节点osd接近的osd。 (1)及时:建立心跳的osd可以在秒级发现其他osd异常并向monitor报告,monitor在几分钟内关闭该osd标记 (2)适当的压力:不要认为peer越多越好。 特别是在当前的实际应用场景中,osd截取并发送心跳信息的网络链接与公共网络和群集网络共享,心跳连接的建立量增多会对系统性能产生很大影响。 虽然Mon可以与osd分开保持心跳,但是ceph利用osd之间的心跳来将这种压力分散到各个osd,并大大降低中心节点Mon的压力。 允许网络抖动: mon在收集osd报告后周期性地等待一些条件,而不是关闭osd。 这些条件包括:目标osd的有效时间大于由给定量的osd_heartbeat_grace和历史网络条件确定的阈值;报告的主机数目达到min_reporters和min_reporters_ratio (4)扩散机制: 2个实现,mon积极扩散osdmap,另一个惰性的由osd和客户端自身取得。 为了使客户机和其他osd及时感知异常信息,前者的安装一般是好的。ktF秒教学习网-学习教育资源分享平台

总结与启发:两个方向改变。 (1)以往的机制将集群存储节点数的0.5设为min_reporter_ratio显然是不合理的,该osd与何种host上的osd建立心跳(取得主机数),它是以0.5*建立了心跳的host的总数 (2)在一些情况下,我们自己定义存储了一些数据的逻辑区域,并使用crush的层次结构,例如,定义ceph集群中的多个逻辑区域,并且如果在一个逻辑区域中只存在一个数据的片或副本,则相关联的osd建立心跳连接ktF秒教学习网-学习教育资源分享平台

目前ceph实现的osd心跳机制还有很多问题,但后来还不知道是否有新机制,让我们来关注一下吧。ktF秒教学习网-学习教育资源分享平台

ktF秒教学习网-学习教育资源分享平台

本站所有资源均来自于秒教学习网蜘蛛爬取结果,如您发现侵权、违法、存在不和谐内容,告知本站一律删除

本站不以盈利为目的,全站资源仅供学习爱好使用。本站站长邮箱:3569622@qq.com

备案号:

©秒教学习网  2016-2019版权所有     站点地图

回到顶部