由於近期時間頗緊,代碼實現及測試暫時無暇顧及了,此處僅作思考記錄:
依賴條件:
1、得知所有dhcp分配的IP(下文簡稱dip),以及要修改爲的靜態IP(sip)
2、有一個腳本,通過其配置文件,可修改本機的主機名,ip等信息(已完成)
3、兩組ip以數組的形式,寫入腳本配置文件
4、未修改狀態下,dip online,sip必須offline.
5、未修改狀態下,如果sip online,記錄日誌並跳過
6、dip 和 sip的數量應該是相等的,但不強制
7、修改成功後,dip可能online,sip必須online
8、修改成功的,對應sip寫入/etc/hosts
9、修改成功後,刪除原dip在/etc/hosts記錄
10、修改成功後,刪除sip和dip在腳本配置文件的對應信息
11、考慮當dip多於sip時,可以直接將其正在使用的dip改爲sip(此功能可獨立)
12、cluster必須是互信的
實現方法:
遍歷dip數組:
當dip online和sip offline滿足,則繼續,否則記錄日誌並跳出本次循環
copy 配置文件到tmp目錄,並做修改其爲sip的配置
通過dip推送至目標節點
通過dip調用md5sum檢測配置文件一致性,一致則下一步,否則記錄日誌跳出本次循環
通過dip調用對應的腳本,考慮重啓網絡服務帶來的延遲,可休眠3秒
檢測本次修改的sip是否成功,dip在剛釋放可意味着其offline
檢測sip 和dip 狀態:
FUNC=刪除配置文件中對應的sip、dip和/etc/hosts中的dip,並將sip寫入/etc/hosts
sip online and dip offline: FUNC
sip offline and dip offline: FUNC ,記錄狀態日誌
dip online and sip online: FUNC ,記錄狀態日誌
第11條功能過於簡易,不再贅述.