丢了ceph.mon.keying解决办法

在linux操作系统下,可能因为一些很小的误操作,都会造成非常重要的文件的丢失,而文件的备份并不是每时每刻都会注意到,一般是等到文件丢失了才会去想办法,这里讲下ceph.mon.keyring丢失的解决办法

1、没有启用部署认证的

auth_cluster_required =none

在进行部署的时候 ceph-deploy new 以后会生成ceph.mon.keyring文件,内容如下

1
2
3
[mon.]
key = AQBnutdWAAAAABAAPmLaAd9CeKaCRj1CIrztyA==
caps mon = allow *

这个keyring在增加mon的时候,mon之间加密会用到的,如果在未开启认证的情况下,只需要在部署目录下面创建一个同名文件,里面填入一个格式相同的任意内容即可(需要有这个文件,不然无法部署新的mon),在没有开启认证的时候是没有生成这个文件的 /var/lib/ceph/mon/ceph-lab8106/keyring

一般是在系统盘损坏的时候容易丢失这个部署目录,并且没有做备份

2、启用了部署认证

auth_cluster_required =cephx

开启了以后,在进行mon的部署以后,是会生成/var/lib/ceph/mon/ceph-lab8106/keyring这个文件的,这个文件的内容跟部署的目录下面的keyring是一样的,所以丢失了部署目录以后,去mon的路径下面查看文件,然后写入一个同名文件里面即可
如下所示

1
2
3
4
5
6
7
8
[root@lab8106 ceph]# cat /var/lib/ceph/mon/ceph-lab8106/keyring 
[mon.]
key = AQC4V9hWAAAAABAArPTf+Az43NWsoU88okI+Mg==
caps mon = "allow *"
[root@lab8106 ceph]# cat ceph.mon.keyring
[mon.]
key = AQC4V9hWAAAAABAArPTf+Az43NWsoU88okI+Mg==
caps mon = allow *

这个是个简单的操作即可避免无法新加mon的问题,当然做好预备工作是最好的,建议做好下面的两个工作:

  • 1、直接备份部署目录里面的文件,最好备份到自己的电脑上
  • 2、将这个keyring的信息备份到集群里面去,记录到认证信息中
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    [root@lab8106 ceph]# ceph auth import -i ceph.mon.keyring
    imported keyring
    [root@lab8106 ceph]# ceph auth get mon.
    exported keyring for mon.
    [mon.]
    key = AQC4V9hWAAAAABAArPTf+Az43NWsoU88okI+Mg==
    caps mon = "allow *"
    [root@lab8106 ceph]# cat ceph.mon.keyring
    [mon.]
    key = AQC4V9hWAAAAABAArPTf+Az43NWsoU88okI+Mg==
    caps mon = allow *