修改Ceph 監視器地址

您是否有過因爲大意將Ceph Monitor地址配置錯的經歷? 我曾經就因爲馬大哈,將Ceph Monitor的地址配置成了管理網絡地址,而且是在使用了2天后才發現。(⊙﹏⊙)b

您是否有過由於公司網絡重新規劃需要修改Ceph Monitor地址的需求? 我在QQ羣中就有遇到網友諮詢相關處理辦法。

直接修改ceph.conf配置不就行了麼?真有這麼簡單!要知道Ceph是將Monitor配置信息存儲在monmap中的,修改ceph.conf中的配置後,重新啓動Monitor,讀取monmap時必然會出現信息不匹配,該Monitor就無法加入仲裁,也就沒法與其他的Monitor通信,整個操作就是失敗的!

既然直接修改ceph.conf配置不行,那遇到這種情況,該怎麼處理呢? 請看下文::)

在不破壞原有集羣的情況下,需要按如下方式動態修改Monitor的地址配置:

下文的操作方法在CentOS7.1 上安裝的Hammer 0.94.1上驗證有效;配置信息來自真實的環境,爲保證安全,抹去了具體地址信息

獲取monmap

轉儲當前Ceph集羣的monmap到/tmp/monmap文件

[root@ceph-xxx-xxx ~]# ceph mon getmap -o /tmp/monmap
got monmap epoch 4

查看monmap內容

我的示例Ceph集羣中包含三個Monitor節點

root@ceph-xxx-xxx ~]# monmaptool --print /tmp/monmap
monmaptool: monmap file /tmp/monmap
epoch 4
fsid 1ee20ded-caae-419d-9fe3-5919f129cf55
last_changed 2016-02-26 17:10:47.603764
created 0.000000
0: 192.168.xxx.xxx:6789/0 mon.ceph-xxx-xxx
1: 192.168.xxx.xxy:6789/0 mon.ceph-xxx-xxy
2: 192.168.xxx.xxz:6789/0 mon.ceph-xxx-xxz

刪除monitor節點信息

逐一刪除monmap中的節點信息:

root@ceph-xxx-xxx ~]# monmaptool --rm ceph-xxx-xxx /tmp/monmap 
monmaptool: monmap file /tmp/monmap
monmaptool: removing ceph-xxx-xxx
monmaptool: writing epoch 4 to /tmp/monmap (2 monitors)

//按照上述方法刪除三個節點後,/tmp/monmap的內容如下:
[root@ceph-xxx-xxx ~]# monmaptool --print /tmp/monmap
monmaptool: monmap file /tmp/monmap
epoch 4
fsid 1ee20ded-caae-419d-9fe3-5919f129cf55
last_changed 2016-02-26 17:10:47.603764
created 0.000000

添加monitor節點

原有的monitor信息刪除後,添加三個新的monitor節點,如下:

[root@ceph-xxx-xxx ~]# monmaptool --add ceph-xxx-xxm 192.168.xxx.xxm:6789 /tmp/monmap 
monmaptool: monmap file /tmp/monmap
monmaptool: writing epoch 4 to /tmp/monmap (1 monitors)

//添加完成三個新的monitor節點後,/tmp/monmap內容如下
[root@ceph-xxx-xxx ~]# monmaptool --print /tmp/monmap
monmaptool: monmap file /tmp/monmap
epoch 4
fsid 1ee20ded-caae-419d-9fe3-5919f129cf55
last_changed 2016-02-26 17:10:47.603764
created 0.000000
0: 192.168.xxx.xxm:6789/0 mon.ceph-xxx-xxm
1: 192.168.xxx.xxn:6789/0 mon.ceph-xxx-xxn
2: 192.168.xxx.xxl:6789/0 mon.ceph-xxx-xxl

修改節點ip地址

通過修改/etc/sysconfig/network-scripts/ifcfg-eth*文件,修改各節點ip地址,然後重啓網絡服務完成ip的修改,命令如下:

[root@ceph-xxx-xxx ~]#ifdown eth* && ifup eth*

[root@ceph-xxx-xxy ~]#ifdown eth* && ifup eth*

[root@ceph-xxx-xxz ~]#ifdown eth* && ifup eth*

修改ceph.conf

在admin節點上修改ceph.conf中的mon_host 配置,然後通過ceph-deploy推送到所有monitor節點:

[root@ceph-xxx-xxm ~]#cat ceph.conf
[global]
......

mon_host = 192.168.xxx.xxm,192.168.xxx.xxn,192.168.xxx.xxl

......

[root@ceph-xxx-xxm ~]#ceph-deploy admin overwrite-conf ceph-xxx-xxm ceph-xxx-xxn ceph-xxx-xxl

停止monitor並注入新的monmap

停止各節點上的monitor服務,將/tmp/monmap文件文件拷貝到其他節點,並注入新的monmap記錄:

[root@ceph-xxx-xxm ~]#/etc/init.d/ceph stop mon
[root@ceph-xxx-xxm ~]#ceph-mon -i ceph-xxx-xxm --inject-monmap /tmp/monmap

[root@ceph-xxx-xxn ~]#/etc/init.d/ceph stop mon
[root@ceph-xxx-xxn ~]#ceph-mon -i ceph-xxx-xxn --inject-monmap /tmp/monmap


[root@ceph-xxx-xxl ~]#/etc/init.d/ceph stop mon
[root@ceph-xxx-xxl ~]#ceph-mon -i ceph-xxx-xxl --inject-monmap /tmp/monmap

啓動monitor

啓動各節點上的monitor服務:

[root@ceph-xxx-xxm ~]# /etc/init.d/ceph start mon

[root@ceph-xxx-xxn ~]# /etc/init.d/ceph start mon

[root@ceph-xxx-xxl ~]# /etc/init.d/ceph start mon

重啓OSD

最後重啓所有的OSD服務:

[root@ceph-xxx-xxm ~]# /etc/init.d/ceph restart osd

[root@ceph-xxx-xxn ~]# /etc/init.d/ceph restart osd

[root@ceph-xxx-xxn ~]# /etc/init.d/ceph restart osd

整個過程還是挺簡單的,希望對大家有用!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章