聊聊如何Ceph修改mon ip地址
背景
最近公司服務(wù)器搬遷至外地機(jī)房,服務(wù)器中包含ceph存儲(chǔ)集群,遷移到新機(jī)房需要整體修改服務(wù)器ip,因此mon節(jié)點(diǎn)的ip也將被修改,發(fā)現(xiàn)官網(wǎng)有修改ip的文檔,正好參考官網(wǎng)記錄一下。官網(wǎng)提供了只更改同一網(wǎng)絡(luò)里的mon節(jié)點(diǎn)ip以及ceph集群更改到不同網(wǎng)絡(luò)的情況下修改所有mon ip的方法。
修改同一網(wǎng)絡(luò)里的mon ip
這被官網(wǎng)稱為是一種正確的方法。僅更改監(jiān)視器的 IP 地址ceph.conf不足以確保集群中的其他mon收到更新。要更改監(jiān)mon的 IP 地址,必須添加一個(gè)具有要使用的 IP 地址的新mon節(jié)點(diǎn)(如添加監(jiān)視器(手動(dòng))中所述),確保新mon成功加入仲裁;然后移除舊 IP 地址的mon。最后更新ceph.conf文件以確??蛻舳撕推渌刈o(hù)程序知道新mon的 IP 地址。
手動(dòng)添加mon節(jié)點(diǎn)
在目標(biāo)節(jié)點(diǎn)上,新建 mon 的數(shù)據(jù)目錄。{mon-id} 名稱自己定義 。
mkdir /var/lib/ceph/mon/ceph-{mon-id}
獲取 mon 的 keyring 文件,保存在臨時(shí)目錄下。
ceph auth get mon. -o /tmp/ceph.mon.keyring
獲取集群的 mon map 并保存到臨時(shí)目錄下。
ceph mon getmap -o /tmp/monmap
格式化mon的數(shù)據(jù)目錄并指定上面兩步創(chuàng)建的monmap和ceph.mon.keyring文件路徑
ceph-mon -i {mon-id} --mkfs --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
啟動(dòng)節(jié)點(diǎn)上的 mon 進(jìn)程,它會(huì)自動(dòng)加入集群。守護(hù)進(jìn)程需要知道綁定到哪個(gè) IP 地址,可以通過 --public-addr {ip:port} 選擇指定
systemctl start ceph-mon@{mon-id}
ceph-mon -i {mon-id} --public-addr {ip:port}
刪除mon節(jié)點(diǎn)
1.停止mon節(jié)點(diǎn)
systemctl stop ceph-mon@{mon-id}
2.從ceph集群移除mon節(jié)點(diǎn)
ceph mon remove {mon-id}
3.在ceph.conf配置文件中移除mon部分
修改所有mon節(jié)點(diǎn)ip
如背景所說,我們剛遷移了ceph集群的服務(wù)器到其他地市的機(jī)房。這需要改變mon節(jié)點(diǎn)的所有網(wǎng)絡(luò)。在這種情況下,解決方案是為集群中的所有mon生成具有更新 IP 地址的新 monmap,并將新映射注入每個(gè)單獨(dú)的mon。我這里是將192.168.28.0/24網(wǎng)段變更為192.168.244.0/24網(wǎng)段。
獲取monmap,如果此時(shí)已經(jīng)連接不上集群了可以在mon節(jié)點(diǎn)上使用第二條命令,并指定{mon-id}
ceph mon getmap -o /tmp/monmap
ceph-mon -i node3 --extract-monmap /tmp/monmap
monmap內(nèi)容如下:
monmaptool: monmap file /tmp/monmap
epoch 7
fsid 9c079a1f-6fc2-4c59-bd4d-e8bc232d33a4
last_changed 2022-10-08T10:00:04.055141+0000
created 2022-10-08T03:45:47.301186+0000
min_mon_release 16 (pacific)
election_strategy: 1
0: [v2:192.168.28.159:3300/0,v1:192.168.28.159:6789/0] mon.node1
1: [v2:192.168.248.160:3300/0,v1:192.168.28.160:6789/0] mon.node2
2: [v2:192.168.28.161:3300/0,v1:192.168.28.161:6789/0] mon.node3
刪除現(xiàn)有的mon:
monmaptool: monmap file /tmp/monmap
monmaptool: removing node1
monmaptool: removing node2
monmaptool: removing node3
monmaptool: writing epoch 1 to /tmp/monmap (0 monitors)
添加新的mon:
monmaptool: monmap file /tmp/monmap
monmaptool: writing epoch 1 to /tmp/monmap (3 monitors)
停止所有mon服務(wù)并注入monmap,,每個(gè)mon節(jié)點(diǎn)都要執(zhí)行;
ceph-mon -i {mon-id} --inject-monmap /tmp/monmap
執(zhí)行完成后需要重啟mon
systemctl start ceph-mon@{mon-id}
按照官網(wǎng)文檔執(zhí)行上述操作后,發(fā)現(xiàn)客戶端不能連接ceph集群,查看mon服務(wù)都能正常監(jiān)聽,且端口通信正常,查看mon選舉狀態(tài)也是正常的。
ceph daemon mon.cloudmap mon_status
后來查看了ceph.conf配置文件,發(fā)現(xiàn)mon的配置還是用的以前的mon配置,所有節(jié)點(diǎn)更新后并重啟mon后,客戶端正常連接ceph集群。
官網(wǎng)鏈接:https://docs.ceph.com/en/latest/rados/operations/add-or-rm-mons/