zoukankan      html  css  js  c++  java
  • ceph osd tree的可视化

    前言

    很久没有处理很大的集群,在接触一个新集群的时候,如果集群足够大,需要比较长的时间才能去理解这个集群的结构,而直接去看ceph osd tree的结果,当然是可以的,这里是把osd tree的结构进行了一个结构化输出,也可以理解为画出一个简单的结构图,比较适合给其它人讲解你对crush做了哪些改变,这个如果指着文字来讲估计很多人会听的云里雾里,如果有比较方便的方式出图就比较好了

    为此写了一个小工具自己用,正好也可以看看我们对结构做简单调整后的效果

    创建一个模拟集群

    环境就一台机器,不需要用到磁盘,这里是模拟结构
    创建一个大集群40台机器

    seq 1 40 |xargs -i ceph  osd crush add-bucket lab{} host
    seq 1 40|xargs -i ceph osd crush move lab{}  root=default
    

    创建一个960个的集群

    seq 1 960 |xargs -i ceph osd create
    

    放到指定的主机

    #! /bin/sh
    for osd in `seq 0 959`
    do
    host=$(( (($osd / 24)) + 1 ))
    ceph osd  crush create-or-move  osd.$osd 3.6  host=lab$host &
    done
    

    这里后台执行会快点,不然得等15分钟,执行完检查下有没有还在处理的进程即可

    ps -ef|grep create-or-move
    

    osd的一些结构

    机器如果在远程可以上传临时文件

    ceph osd tree -f json-pretty > zp.json
    curl --upload-file ./zp.json https://transfer.sh/zp.json
    

    得到的地址下载即可

    默认结构,主机分组

    960个osd的效果如图,节点太多了,图片本身输出的时候是高清图片可以放大去看的,并且主机如果不是这么多,显示效果会好一点,这里我们看的清楚是主机分组的

    调整下rack结构

    seq 1 8|xargs -i ceph  osd crush add-bucket rack{} rack
    seq 1 8|xargs -i ceph osd crush move rack{} root=default
    
    #! /bin/sh
    for host in `seq 1 40`
    do
    rack=$((  (((($host - 1)) / 5)) + 1 ))
    ceph osd  crush move lab$host rack=rack$rack &
    done
    

    调整完结构我们再看下

    可以看到已经是多层的结构了,这个机器太多,我们来看下稍微少点机器的效果

    12台机器每台12个osd的效果

    主机分组

    rack分组

    后面的两个图的就比较清晰了

    工具的一个作用是,在调整结构后,能够比较方便的去检查osd的结构,是不是均匀的,有没有调整错误,有没有某个host里面的osd个数跟其他不一样,这几种情况之前都遇到过

    • 分rack的时候rack里面主机数目不一致,怎么调整pg都是不平衡
    • 加osd的时候,某个主机的osd给漏掉了

    如果你面对的是几十个osd的时候,你还会看看,当超过一百个的时候,一般来说就是走过场了,都会侥幸的认为,应该没事吧,好像是对的,当然通过各种方式都能实现

    目前这个小工具是直接运行直接出图的,配色后面再处理下效果

    总结

    这个tree的图一直以为之前有写过,但是找不到代码了,重新实现了一次,也算一个梳理,这个图只是作为一个更大的体系里面很小的一部分的模块

    本篇同样给出了模拟大集群的方式

    Just for Fun

    变更记录

    Why Who When
    创建 武汉-运维-磨渣 2018-09-19
  • 相关阅读:
    LeetCode 109 Convert Sorted List to Binary Search Tree
    LeetCode 108 Convert Sorted Array to Binary Search Tree
    LeetCode 107. Binary Tree Level Order Traversal II
    LeetCode 106. Construct Binary Tree from Inorder and Postorder Traversal
    LeetCode 105. Construct Binary Tree from Preorder and Inorder Traversal
    LeetCode 103 Binary Tree Zigzag Level Order Traversal
    LeetCode 102. Binary Tree Level Order Traversal
    LeetCode 104. Maximum Depth of Binary Tree
    接口和多态性
    C# 编码规范
  • 原文地址:https://www.cnblogs.com/zphj1987/p/13575475.html
Copyright © 2011-2022 走看看