美文网首页ceph
ceph添加&删除mon&osd

ceph添加&删除mon&osd

作者: Joncc | 来源:发表于2018-05-22 15:35 被阅读60次

    本次主要是使用ceph-deploy工具和使用ceph的相关命令实现集群Monitor&osd的增加和删除。

    添加monitor
    修改配置文件
    添加新的mon,逗号分隔不要有空格:

    cat /root/cluster/ceph.conf |grep mon
    
    mon_initial_members = test3, test4, test5
    mon_host = 10.0.0.3,10.0.0.4,10.0.0.5
    

    推送配置

    ceph-deploy --overwrite-conf config push  test3 test4 test5
    

    ……
    若干log
    ……
    添加MON

    ceph-deploy mon create test4 test5
    
    ……
    若干log
    ……
    

    查看
    ceph -s可以看到新的MON已经添加进来了。

    [root@test3 ~]# ceph -s
    
    cluster e40207d9-d9a8-43ba-8d3c-45fb79bfa0f4
     health HEALTH_OK
     monmap e1: 3 mons at {test3=10.0.0.3:6789/0,test4=10.0.0.4:6789/0,test5=10.0.0.5:6789/0}
            election epoch 14, quorum 0,1,2 test3,test4,test5
            ……
    

    需要注意的是,如果新增节点ceph-3上之前部署过MON,必须清理干净之前的MON数据库,否则会有异常发生,因为ceph会在创建MON之前检测/var/lib/ceph/mon/$CLUSTER-$HOSTNAME目录下是否有done文件,如果有的话,就不会新建而沿用原来的

    ps aux|grep ceph-mon |awk '{print $2}'|xargs kill -9
    
    rm -rf /var/run/ceph/*
    rm -rf /var/lib/ceph/mon/*
    rm -rf /var/lib/ceph/bootstrap-mon/*
    rm -rf /etc/ceph/*
    

    删除monitor
    修改配置文件
    去除需要删除的节点host

    cat /root/cluster/ceph.conf |grep mon
    
    mon_initial_members = test3
    mon_host = 10.0.0.3
    

    推送配置

    ceph-deploy --overwrite-conf config push test3 test4 test5
    
    ……
    若干log
    ……
    

    删除MON
    通过ceph-deploy移除test4\test5

    ceph-deploy mon create test4 test5
    
    ……
    若干log
    ……
    

    从集群中删除 monitor。

    ceph mon remove {mon-id}
    

    查看
    ceph -s可以发现test4\test5这两个个MON已经被删除了

    ceph-deploy删除MON的时候调用的指令是ceph mon remove ceph-3同时需要keyring,如果某个时候把cephx设置成了none这个MON的keyring是不会生成的。
    删除的MON的文件夹被移到了/var/lib/ceph/mon-removed,并不是真的删除了,有时候这个文件夹能救ceph一命

    添加osd
    添加TEST5节点上SDB\SDC\SDD

    ceph-deploy osd create test5:/dev/sda test5:/dev/sdb test5:/dev/sdc --zap-disk
    

    ……
    若干log
    ……
    检查
    ceph -s检查集群状态

    查看磁盘分区和挂载情况

    [root@test5 ~]# lsblk
    
    NAME                                                                                              MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    sda                                                                                                 8:0    0 447.1G  0 disk
    ├─sda1                                                                                              8:1    0 437.1G  0 part /var/lib/ceph/osd/ceph-6
    └─sda2                                                                                              8:2    0    10G  0 part
    sdb                                                                                                 8:16   0 447.1G  0 disk
    ├─sdb1                                                                                              8:17   0 437.1G  0 part /var/lib/ceph/osd/ceph-7
    └─sdb2                                                                                              8:18   0    10G  0 part
    sdc                                                                                                 8:32   0 447.1G  0 disk
    ├─sdc1                                                                                              8:33   0 437.1G  0 part /var/lib/ceph/osd/ceph-8
    └─sdc2                                                                                              8:34   0    10G  0 part
    

    查看journal分区是否链接好了

    [root@test5 ~]# ll /var/lib/ceph/osd/*
    
    /var/lib/ceph/osd/ceph-6:
    total 60
    -rw-r--r--   1 root root  481 Jun 16 14:17 activate.monmap
    -rw-r--r--   1 ceph ceph    3 Jun 16 14:17 active
    -rw-r--r--   1 ceph ceph   37 Jun 16 14:17 ceph_fsid
    drwxr-xr-x 292 ceph ceph 8192 Jun 17 19:20 current
    -rw-r--r--   1 ceph ceph   37 Jun 16 14:17 fsid
    lrwxrwxrwx   1 ceph ceph   58 Jun 16 14:17 journal -> /dev/disk/by-partuuid/ac8846a1-e867-40d7-9bba-fa610160277a
    -rw-r--r--   1 ceph ceph   37 Jun 16 14:17 journal_uuid
    -rw-------   1 ceph ceph   56 Jun 16 14:17 keyring
    -rw-r--r--   1 ceph ceph   21 Jun 16 14:17 magic
    -rw-r--r--   1 ceph ceph    6 Jun 16 14:17 ready
    -rw-r--r--   1 ceph ceph    4 Jun 16 14:17 store_version
    -rw-r--r--   1 ceph ceph   53 Jun 16 14:17 superblock
    -rw-r--r--   1 root root    0 Jun 16 15:16 sysvinit
    -rw-r--r--   1 ceph ceph   10 Jun 16 14:17 type
    -rw-r--r--   1 ceph ceph    2 Jun 16 14:17 whoami
    

    异常处理
    本次添加后新添加的osd并没有被拉起来,手动重启test5上的新增OSD,启动后weight(权重)为0

    [root@test5 ~]# systemctl restart ceph-osd@6
    
    [root@test5 ~]# systemctl restart ceph-osd@7
    [root@test5 ~]# systemctl restart ceph-osd@8
    [root@test5 ~]# ceph osd tree
    ID WEIGHT  TYPE NAME      UP/DOWN REWEIGHT PRIMARY-AFFINITY
    -1 2.58955 root default                                     
    -2 1.29477     host test3                                   
     1 0.43159         osd.1       up  1.00000          1.00000
     2 0.43159         osd.2       up  1.00000          1.00000
     0 0.43158         osd.0       up  1.00000          1.00000
    -3 1.29478     host test4                                   
     3 0.43159         osd.3       up  1.00000          1.00000
     4 0.43159         osd.4       up  1.00000          1.00000
     5 0.43159         osd.5       up  1.00000          1.00000
     6       0 osd.6               up  1.00000          1.00000
     7       0 osd.7               up  1.00000          1.00000
     8       0 osd.8               up  1.00000          1.00000
    

    添加Bucket test5

     [root@test5 ~]# ceph osd crush add-bucket test5 host
    
    added bucket test5 type host to crush map
    [root@test5 ~]# ceph osd tree
    ID WEIGHT  TYPE NAME      UP/DOWN REWEIGHT PRIMARY-AFFINITY
    -4       0 host test5                                       
    -1 2.58955 root default                                     
    -2 1.29477     host test3                                   
     1 0.43159         osd.1       up  1.00000          1.00000
     2 0.43159         osd.2       up  1.00000          1.00000
     0 0.43158         osd.0       up  1.00000          1.00000
    -3 1.29478     host test4                                   
     3 0.43159         osd.3       up  1.00000          1.00000
     4 0.43159         osd.4       up  1.00000          1.00000
     5 0.43159         osd.5       up  1.00000          1.00000
     6       0 osd.6               up  1.00000          1.00000
     7       0 osd.7               up  1.00000          1.00000
     8       0 osd.8               up  1.00000          1.00000
    

    将OSD移到test5的host下面
    注意添加OSD时的weight是该OSD的实际大小(2T为2 ,800G为0.8),切勿随意填写!!!

    [root@test5 ~]# ceph osd crush add osd.6 0.43159 host=test5
    
    add item id 6 name 'osd.6' weight 0.43159 at location {host=test5} to crush map
    [root@test5 ~]# ceph osd tree
    ID WEIGHT  TYPE NAME      UP/DOWN REWEIGHT PRIMARY-AFFINITY
    -4 0.43158 host test5                                       
     6 0.43158     osd.6           up  1.00000          1.00000
    -1 2.58955 root default                                     
    -2 1.29477     host test3                                   
     1 0.43159         osd.1       up  1.00000          1.00000
     2 0.43159         osd.2       up  1.00000          1.00000
     0 0.43158         osd.0       up  1.00000          1.00000
    -3 1.29478     host test4                                   
     3 0.43159         osd.3       up  1.00000          1.00000
     4 0.43159         osd.4       up  1.00000          1.00000
     5 0.43159         osd.5       up  1.00000          1.00000
     7       0 osd.7               up  1.00000          1.00000
     8       0 osd.8               up  1.00000          1.00000
    
    [root@test5 ~]# ceph osd crush add osd.7 0.43159 host=test5
    add item id 7 name 'osd.7' weight 0.43159 at location {host=test5} to crush map
    [root@test5 ~]# ceph osd crush add osd.8 0.43159 host=test5
    add item id 8 name 'osd.8' weight 0.43159 at location {host=test5} to crush map
    [root@test5 ~]# ceph osd tree
    ID WEIGHT  TYPE NAME      UP/DOWN REWEIGHT PRIMARY-AFFINITY
    -4 1.29474 host test5                                       
     6 0.43158     osd.6           up  1.00000          1.00000
     7 0.43158     osd.7           up  1.00000          1.00000
     8 0.43158     osd.8           up  1.00000          1.00000
    -1 2.58955 root default                                     
    -2 1.29477     host test3                                   
     1 0.43159         osd.1       up  1.00000          1.00000
     2 0.43159         osd.2       up  1.00000          1.00000
     0 0.43158         osd.0       up  1.00000          1.00000
    -3 1.29478     host test4                                   
     3 0.43159         osd.3       up  1.00000          1.00000
     4 0.43159         osd.4       up  1.00000          1.00000
     5 0.43159         osd.5       up  1.00000          1.00000
    

    这个时候看起来就顺眼多了,但是存储还是不会调用的,需要将对应的host(test5)移到root下

    [root@test5 ~]# ceph osd crush move test5 root=default
    
    moved item id -4 name 'test5' to location {root=default} in crush map
    [root@test5 ~]# ceph osd tree
    ID WEIGHT  TYPE NAME      UP/DOWN REWEIGHT PRIMARY-AFFINITY
    -1 3.88429 root default                                     
    -2 1.29477     host test3                                   
     1 0.43159         osd.1       up  1.00000          1.00000
     2 0.43159         osd.2       up  1.00000          1.00000
     0 0.43158         osd.0       up  1.00000          1.00000
    -3 1.29478     host test4                                   
     3 0.43159         osd.3       up  1.00000          1.00000
     4 0.43159         osd.4       up  1.00000          1.00000
     5 0.43159         osd.5       up  1.00000          1.00000
    -4 1.29474     host test5                                   
     6 0.43158         osd.6       up  1.00000          1.00000
     7 0.43158         osd.7       up  1.00000          1.00000
     8 0.43158         osd.8       up  1.00000          1.00000
    

    查看存储状态,由于新添加了三块OSD所以集群会做backfilling等pg迁移操作,等待集群OK即可。

    [root@test5 ~]# ceph -s
    
        cluster 12741d27-7fbb-4a15-90a8-a73d78f0172d
         health HEALTH_WARN
                clock skew detected on mon.test5
                127 pgs backfill_wait
                2 pgs backfilling
                2 pgs degraded
                1 pgs peering
                1 pgs recovery_wait
                57 pgs stuck unclean
                recovery 4/670906 objects degraded (0.001%)
                recovery 379815/670906 objects misplaced (56.612%)
                crush map has legacy tunables (require argonaut, min is firefly)
                crush map has straw_calc_version=0
                Monitor clock skew detected
         monmap e3: 3 mons at {test3=10.0.0.3:6789/0,test4=10.0.0.4:6789/0,test5=10.0.0.5:6789/0}
                election epoch 36, quorum 0,1,2 test3,test4,test5
         osdmap e2477: 9 osds: 9 up, 9 in; 360 remapped pgs
                flags sortbitwise
          pgmap v3791033: 1088 pgs, 3 pools, 932 GB data, 234 kobjects
                1891 GB used, 2085 GB / 3977 GB avail
                4/670906 objects degraded (0.001%)
                379815/670906 objects misplaced (56.612%)
                     724 active+clean
                     232 active+remapped
                     127 active+remapped+wait_backfill
                       2 active+remapped+backfilling
                       1 peering
                       1 active+degraded
                       1 active+recovery_wait+degraded
    recovery io 330 MB/s, 82 objects/s
    

    删除osd
    正常处理流程:
    停止osd进程——将节点状态标记为out——从crush中移除节点——删除节点——删除节点认证
    根据这个方法会触发两次迁移,一次是在节点osd out以后,一次是在crush remove以后。参考磨渣-删除OSD的正确方式,调整处理步骤能够减少一次数据迁移。

    在ceph的集群当中关于节点的替换的问题,一直按照以前的方式进行的处理,处理的步骤如下:

    调整OSD的CRUSH WEIGHT

    ceph osd crush reweight osd.0 0.1
    

    说明:这个地方如果想慢慢的调整就分几次将crush 的weight 减低到0 ,这个过程实际上是让数据不分布在这个节点上,让数据慢慢的分布到其他节点上,直到最终为没有分布在这个osd,并且迁移完成
    这个地方不光调整了osd 的crush weight ,实际上同时调整了host 的 weight ,这样会调整集群的整体的crush 分布,在osd 的crush 为0 后, 再对这个osd的任何删除相关操作都不会影响到集群的数据的分布

    停止OSD进程

    systemctl stop ceph-osd@0
    

    停止到osd的进程,这个是通知集群这个osd进程不在了,不提供服务了,因为本身没权重,就不会影响到整体的分布,也就没有迁移

    将节点状态标记为out

    ceph osd out osd.0
    

    停止到osd的进程,这个是通知集群这个osd不再映射数据了,不提供服务了,因为本身没权重,就不会影响到整体的分布,也就没有迁移

    从CRUSH中移除节点

    ceph osd crush remove osd.0
    

    这个是从crush中删除,因为已经是0了 所以没影响主机的权重,也就没有迁移了

    删除节点

    ceph osd rm osd.0
    

    这个是从集群里面删除这个节点的记录

    删除节点认证(不删除编号会占住)

    ceph auth del osd.0
    

    删除HOST节点
    将OSD全部删除后,如果还需要在集群中删除该osd的host节点,可以使用该命令。

    ceph osd crush rm test5
    

    相关文章

      网友评论

        本文标题:ceph添加&删除mon&osd

        本文链接:https://www.haomeiwen.com/subject/wytcjftx.html