1. 前言
為什麼要使用集中儲存? 使用集中儲存有個很大的優勢是資料安全和統一管理,和叢集完美配合。 產品整合儲存經歷過幾個階段:
1.單機本機儲存。 系統使用本地硬碟儲存
2.單網路集中儲存。 區域網主機使用同一網路內的磁碟陣列儲存單元
3.分散式叢集本地儲存。 叢集節點使用自己本地硬碟儲存。
4.分散式叢集集中儲存。叢集節點使用集中儲存(其背後可以是單一儲存也可以是分散式儲存,集中儲存相當於一個代理入口)
其中雲端計算用的最多的是 3,4 這幾個。主要適應於網路架構的分散式設計和基本雲端計算儲存,如多機房,多地儲存。使用集中儲存給運維帶來的最大
優勢就是核心資料儲存,不怕應用崩潰,各種docker容器都可以隨時拋棄,重建。不用擔心資料問題。
2. Rancher中使用集中儲存NFS
Rancher對Docker叢集的管理已經是非常方便,預設是沒有載入共享儲存的,我們這裡使用RancherNFS外掛來實現一個統一的儲存,
當然也可以選擇其他的外掛,目前官方只有這一個,其他非官方的如CephFS,FastDfs等請自行新增外掛或自寫外掛來實現。在此不做過多解讀
點選Rancher應用商店,搜尋nfs,找到官方外掛並新增
填寫主機地址:IP
目錄: 建議不要填 / 而是指向NFS伺服器儲存的一個目錄
ON_Remove: Purge: 刪除對映目錄時會刪除NFS遠端對應的資料 Retain:不刪除遠端資料
點“啟動”即可 ,Rancher會在各個宿主機上面新增NFS驅動
檢視NFS驅動,每個宿主機都已啟動完畢
使用NFS:
我們在新增服務的時候, 可以配置下卷 name:/容器對應目錄
填 logs:/opt/logs 會對應遠端NFS裡面 新建的 logs目錄
如果填 /logs:/opt/logs 則是常用的卷對映,會寫入宿主機本地的/logs目錄
驅動填寫預設的 rancher-nfs
這樣 容器裡面讀寫的檔案就直接操作遠端Nfs伺服器了
檢視效果:
啟動應用後,容器的日誌已經輸出到NFS裡面了。
用途及注意事項:
主要是針對日誌類的,可以統一做日誌蒐集。
針對於資料持久化的,如MySQL資料 可以 通過對映 mysql/data:/var/lib/mysql 把資料集中儲存到NFS上
注意:1. 集中儲存要考慮到同時讀寫的問題,即Lock。 有的程式無法同用一套資料,這時候要考慮到單獨讀寫或放到多個變數子目錄
如MySQL無法同時起2個例項讀寫一套資料。
2. NFS外掛還有不完善的地方, 如只能對映目錄,無法對映檔案 ,我們常用的 -v /nginx.conf:/nginx.conf 就無法使用了。
3. 多NFS伺服器配置,無法從UI介面新增, 只能從YML檔案來處理。
4. 集中儲存一定要考慮速度問題,畢竟網路傳輸沒有本地傳輸速度快,儘量選擇公有云/私有云網路是走光纖通道的。儘量不要跨地域傳輸,如深圳的使用上海的NFS伺服器
5. 儘可能使用可靠性有保障的儲存,畢竟伺服器,容器神碼的都可以丟棄,資料是要絕對安全的。推薦阿里雲的NFS服務,可以保障9個9的安全性。