天天看點

Ceph修改mon ip位址

微信公衆号:運維開發故事,作者:wanger

背景

         最近公司伺服器搬遷至外地機房,伺服器中包含ceph存儲叢集,遷移到新機房需要整體修改伺服器ip,是以mon節點的ip也将被修改,發現官網有修改ip的文檔,正好參考官網記錄一下。官網提供了隻更改同一網絡裡的mon節點ip以及ceph叢集更改到不同網絡的情況下修改所有mon ip的方法。

修改同一網絡裡的mon ip

這被官網稱為是一種正确的方法。僅更改mon的 IP 位址不足以確定叢集中的其他mon收到更新。要更改mon的 IP 位址,必須添加一個具有要使用的 IP 位址的新mon節點(如添加mon(手動)中所述),確定新mon成功加入仲裁;然後移除舊 IP 位址的mon。最後更新ceph.conf檔案以確定用戶端和其他守護程式知道新mon的 IP 位址。

手動添加mon節點

  1. 在目标節點上,建立 mon 的資料目錄。{mon-id} 名稱自己定義 。
mkdir /var/lib/ceph/mon/ceph-{mon-id}      
  1. 擷取 mon 的 keyring 檔案,儲存在臨時目錄下。
ceph auth get mon. -o /tmp/ceph.mon.keyring      
  1. 擷取叢集的 mon map 并儲存到臨時目錄下。
ceph mon getmap -o /tmp/monmap      
  1. 格式化mon的資料目錄并指定上面兩步建立的monmap和ceph.mon.keyring檔案路徑
ceph-mon -i {mon-id} --mkfs --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring      
  1. 啟動節點上的 mon 程序,它會自動加入叢集。守護程序需要知道綁定到哪個 IP 位址,可以通過 --public-addr {ip:port} 選擇指定
systemctl start ceph-mon@{mon-id}
ceph-mon -i {mon-id} --public-addr {ip:port}      

删除mon節點

  1. 停止mon節點
systemctl stop ceph-mon@{mon-id}      
  1. 從ceph叢集移除mon節點
ceph mon remove {mon-id}      
  1. 在ceph.conf配置檔案中移除mon部分

修改所有mon節點ip

如背景所說,我們剛遷移了ceph叢集的伺服器到其他地市的機房。這需要改變mon節點的所有網絡。在這種情況下,解決方案是為叢集中的所有mon生成具有更新 IP 位址的新 monmap,并将新映射注入每個單獨的mon。我這裡是将192.168.28.0/24網段變更為192.168.244.0/24網段。

  1. 擷取monmap,如果此時已經連接配接不上叢集了可以在mon節點上使用第二條指令,并指定{mon-id}
ceph mon getmap -o /tmp/monmap
ceph-mon -i node3  --extract-monmap /tmp/monmap      
  1. monmap内容如下
# monmaptool --print /tmp/monmap 
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      
  1. 删除現有的mon
# monmaptool --rm node1 --rm node2 --rm node3 /tmp/monmap 
monmaptool: monmap file /tmp/monmap
monmaptool: removing node1
monmaptool: removing node2
monmaptool: removing node3
monmaptool: writing epoch 1 to  /tmp/monmap (0 monitors)      
  1. 添加新的mon
# monmaptool --add node1 192.168.244.44 --add node2 192.168.244.45  --add node3 192.168.244.46 /tmp/monmap
monmaptool: monmap file  /tmp/monmap
monmaptool: writing epoch 1 to  /tmp/monmap (3 monitors)      
  1. 停止所有mon服務并注入monmap,,每個mon節點都要執行
ceph-mon -i {mon-id} --inject-monmap /tmp/monmap      
  1. 執行完成後需要重新開機mon
systemctl start ceph-mon@{mon-id}      

按照官網文檔執行上述操作後,發現用戶端不能連接配接ceph叢集,檢視mon服務都能正常監聽,且端口通信正常,檢視mon選舉狀态也是正常的。

ceph daemon mon.cloudmap mon_status      
Ceph修改mon ip位址

後來檢視了ceph.conf配置檔案,發現mon的配置還是用的以前的mon配置,所有節點更新後并重新開機mon後,用戶端正常連接配接ceph叢集。

Ceph修改mon ip位址
官網連結:https://docs.ceph.com/en/latest/rados/operations/add-or-rm-mons/

公衆号:運維開發故事

github:​​https://github.com/orgs/sunsharing-note/dashboard​​

部落格:https://www.devopstory.cn

愛生活,愛運維

我是wanger,《運維開發故事》公衆号團隊中的一員,一線運維農民工,這裡不僅有硬核的技術幹貨,還有我們對技術的思考和感悟,歡迎關注我們的公衆号,期待和你一起成長!

繼續閱讀