接手到的集群是ceph各个组件之间无法成功通信,不能正常运行,该情根据网上的恢复方法已经不可行。因为ceph mon 命令无法使用,所以不能够通过该命令获取到monmap了。
经过对monmaptool
工具的调研,发现它可以直接从/etc/ceph/ceph.conf
中获取到monmap
所以我的恢复过程如下
/etc/hosts
中的ip设置将如下ip映射关系更改为 当前设备ip即可
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost4 localhost4.localdomain4
10.193.56.91 node1
10.193.56.92 node2
10.193.56.93 node3
修改完成之后scp
同步到集群其他节点
ceph.conf
中的ip地址其中包括如下ip,全部更改为当前集群设备ip
mon_host = 10.193.56.91,10.193.56.92,10.193.56.93
public)_network = 10.193.0.0/16
cluster_network = 10.193.0.0/16
修改完成后执行ceph-deploy --overwrite-conf config push node1 node2 node3
monmaptool --create --generate -c /etc/ceph/ceph.conf ./monmap
在当前目录生成monmap文件
这里如果是集群 ip还未更改,可以通过
ceph mon getmap -o ./monmap
来在当前目录下生成monmap文件
使用monmaptool --print monmap
查看集群monmap如下
[root@node1 ~]# monmaptool --print monmap
monmaptool: monmap file monmap
epoch 0
fsid fb4a710d-7b1e-4efe-9482-e46f590a8dcf
last_changed 2019-05-21 13:57:37.783971
created 2019-05-21 13:57:37.783971
0: 10.193.56.91:6789/0 mon.node1 #主要是更改这一部分,将我们新集群的集群网络ip写入到这里
1: 10.193.56.92:6789/0 mon.node2
2: 10.193.56.93:6789/0 mon.node3
使用monmaptool --rm node1 --rm node2 --rm node3 ./monmap
删除对应mon.id的配置
[root@node1 ~]# monmaptool --rm node1 --rm node2 --rm node3 monmap
monmaptool: monmap file monmap
monmaptool: removing node1
monmaptool: removing node2
monmaptool: removing node3
monmaptool: writing epoch 0 to monmap (0 monitors)
再次查看monmap内容如下
[root@node1 ~]# monmaptool --print monmap
monmaptool: monmap file monmap
epoch 0
fsid fb4a710d-7b1e-4efe-9482-e46f590a8dcf
last_changed 2019-05-21 13:57:37.783971
created 2019-05-21 13:57:37.783971
将我们当前设备的ip加入到monmap中即可,执行命令monmaptool --add mon.id 10.112.101.141:6789 --add mon.id 10.112.101.143:6789 --add mon.id 10.112.101.142:6789 monmap
这里填写清楚当前mon的名称即可,如下
[root@node1 ~]# monmaptool --add node1 10.112.101.141:6789 --add node2 10.112.101.143:6789 --add node3 10.112.101.142:6789 monmap
monmaptool: monmap file monmap
monmaptool: writing epoch 0 to monmap (3 monitors)
[root@node1 ~]# monmaptool --print monmap
monmaptool: monmap file monmap
epoch 0
fsid fb4a710d-7b1e-4efe-9482-e46f590a8dcf
last_changed 2019-05-21 13:57:37.783971
created 2019-05-21 13:57:37.783971
0: 10.112.101.141:6789/0 mon.node1
1: 10.112.101.142:6789/0 mon.node3
2: 10.112.101.143:6789/0 mon.node2
此时我们已成功完成修改monmap内容,我们将修改后的monmap 通过scp 同步到集群所有节点
monmap
注入到集群注入之前请先停止集群内所有的ceph服务,systemctl stop ceph.service
因为需要所有的组件重新读配置文件,主要是mon重新加载monmap来更改集群通信ip
每个节点执行命令ceph-mon -i node1 --inject-monmap ./monmap
,集群都执行结束后每个节点再将所有ceph服务重新拉起即可