背景
Ceph在线上跑了一段时间了,现在上面除了存储一些Docker镜像外并无其他数据。最近由于物理机新规划了Ceph的专属网络,需要把集群地址整体移过去。查了下网上各种资料便开始做了,中途比较顺利。我这里记录下来也是方便以后类似操作。
环境
操作系统: Ubuntu16.04.2
Ceph: Jewel
host | 原IP | 新IP |
---|---|---|
l-010017064038-docker.magine.com | 10.9.1.38/16 | 10.17.70.38/23 |
l-010017064039-docker.magine.com | 10.9.1.39/16 | 10.17.70.39/23 |
l-010017064040-docker.magine.com | 10.9.1.40/16 | 10.17.70.40/23 |
操作
**1. **导出monmap文件
$ monmaptool --create --generate -c /etc/ceph/ceph.conf /tmp/monmap
**2. **解析文件
$ monmaptool --print /tmp/monmap
monmaptool: monmap file /tmp/monmap
epoch 3
fsid 23b7d822-31b0-4748-85b6-1035cc431efd
last_changed 2017-04-01 14:08:43.926253
created 2017-04-01 13:29:18.450778
0: 10.9.1.38:6789/0 mon.l-010017064038-docker
1: 10.9.1.39:6789/0 mon.l-010017064039-docker
2: 10.9.1.40:6789/0 mon.l-010017064040-docker
**3. **删除老的mon节点
$ monmaptool --rm l-010017064038-docker /tmp/monmap
$ monmaptool --rm l-010017064039-docker /tmp/monmap
$ monmaptool --rm l-010017064040-docker /tmp/monmap
**4. **添加新的mon节点
$ monmaptool --add l-010017064038-docker 10.17.70.38:6789 --add l-010017064039-docker 10.17.70.39:6789 --add l-010017064040-docker 10.17.70.40:6789 /tmp/monmap
**5. **将新的manmap文件拷贝到所有运行ceph-mon服务的机器上
**6. **导入manmap
备注:导入manmap前,需要把集群内的所有ceph-mon服务停掉
#host38
$ ceph-mon -i l-010017064038-docker --inject-monmap /tmp/monmap
#host38
$ ceph-mon -i l-010017064039-docker --inject-monmap /tmp/monmap
#host40
$ ceph-mon -i l-010017064040-docker --inject-monmap /tmp/monmap
**7. **同步Ceph配置文件到所有节点
[global]
fsid = 23b7d822-31b0-4748-85b6-1035cc431efd
mon_initial_members = l-010017064040-docker
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
public_network = 10.17.70.0/23
cluster_network = 10.17.70.0/23
rbd_default_features = 3
[mon.l-010017064038-docker]
host = l-010017064038-docker
mon addr = 10.17.70.38:6789
[mon.l-010017064039-docker]
host = l-010017064039-docker
mon addr = 10.17.70.30:6789
[mon.l-010017064040-docker]
host = l-010017064040-docker
mon addr = 10.17.70.40:6789
**8. **重启服务
$ systemctl restart ceph-mon.target
$ systemctl restart ceph-osd@0 ceph-osd@1