首页 > CEPH集群更换ip(更换ip前的防范和更换ip后的恢复)

CEPH集群更换ip(更换ip前的防范和更换ip后的恢复)

文章目录

          • 修改`/etc/hosts`中的ip设置
          • 修改`ceph.conf`中的ip地址
          • 获取monmap
          • 将`monmap`注入到集群


最近测试部在测试一些功能,在我们不知情得情况下更换了集群内外网ip,之后直接甩锅到我这里(大哭)

接手到的集群是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

获取monmap

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服务重新拉起即可

更多相关: