本文來自Rancher Labsmysql
做者簡介sql
鞠宏超,Rancher研發工程師。4年雲計算領域經驗,2018年加入Rancher Labs,前後參與了Longhorn產品研發,Rancher2.x產品研發,目前主要致力於Rancher企業版產品的設計與研發工做。分佈式
Longhorn是基於Kubernetes的輕量級分佈式塊存儲系統,它徹底開源,而且已經捐獻給CNCF。隨着雲原生應用的普及,愈來愈多的服務提供容器運行時,數據的持久化存儲問題漸漸顯現出來,咱們要作的不單單是數據的持久化,還要考慮備份的準確性,遷移的複雜性等。測試
Longhorn提供的分佈式塊存儲能夠在Kubernetes中直接使用持久化存儲,它能夠爲數據卷在不一樣主機提供多副本服務,以保證數據的可靠性,它提供簡潔的UI能夠直接管理存儲節點、數據卷,輕鬆實現數據卷的備份/定時備份,您還可使用容災備份功能,在不一樣集羣建立容災備份卷,並在發生緊急狀況時及時進行故障轉移。雲計算
在這篇文章中,咱們將把MySQL做爲Pod部署到集羣A中,並使用Longhorn做爲持久化存儲卷,而後依託Rancher多集羣管理的特性,結合Longhorn的容災備份功能,演示一下如何優雅地將集羣A中的MySQL應用及數據遷移到集羣B中。spa
Rancher (HA部署) - v2.4.8設計
Longhorn(經過Rancher UI Catalog部署) - v1.0.23d
MySQL - 8server
私有S3 - minio部署blog
業務集羣A、B
在Rancher中,進入集羣A的system項目,在應用商店中能夠一鍵啓動Longhorn。
等待應用商店部署成功後,能夠根據應用商店連接進入到Longhorn UI。
接下來,咱們在集羣B中以一樣方式啓動Longhorn,等待Longhorn正常運行。
訪問Rancher,進入集羣A的system項目,選擇 資源 > 密文 菜單,在longhorn-system 命名空間中建立訪問s3的secret,須要增長的參數包括:
訪問Rancher,進入集羣B的system項目,選擇 資源 > 密文 菜單,在longhorn-system 命名空間中建立與上面相同的secret內容。
接下來咱們須要在A和B兩個集羣的Longhorn中配置相同的backup target。
從應用商店的連接跳轉到longhorn UI,點擊 Setting > General 菜單,找到Backup分類,配置備份目標。
目前Longhorn支持NFS/S3兩種備份方式,在本例中,咱們使用minio搭建了一個私有S3服務,這裏咱們使用s3方式配置。
PS: 若是使用NFS,則須要保證NFS server支持NFSv4
在集羣A中部署一個MySQL應用,並在MySQL中建立測試表article並插入一條數據。
在集羣A的Longhorn中對這個捲進行備份。
備份成功後,能夠在集羣B的Longhorn中看到備份信息(由於兩個集羣的Longhorn配置了相同的backup target,因此備份信息是共享的)。
訪問集羣B的Longhorn UI,使用集羣A的Volume的備份,在集羣B中建立一個容災備份卷。
這裏Volume的名稱會根據備份卷自動填充,不建議手動修改。
保存後,訪問 Volume 頁面能夠看到咱們新建立的容災備份卷。
在集羣A的MySQL應用中再次插入幾條數據。
訪問集羣A的Longhorn UI,對這個卷再次進行備份。這時能夠看到集羣B中的容災備份捲圖標變成了灰色,表明這個卷正在同步集羣A中Volume的最新備份數據,此時沒法激活和使用容災備份卷。
等待一會,圖標變成了藍色,表明已經與集羣A中Volume的最新備份同步成功。接下來咱們就可使用這個捲了。
若是在集羣A中對MySQL卷設置了自動備份,集羣B中的Longhorn會定時輪詢最新的備份,將增量數據信息自動同步到容災備份卷,以保持與集羣A中Volume的數據一致。
假設此時咱們的集羣A已經沒法使用了,咱們能夠在集羣B使用最新的備份卷快速恢復MySQL應用。
首先,咱們將集羣B的容災備份卷激活。
等待卷狀態變成Detached之後,選擇建立PV/PVC。
這裏不建議修改PV和PVC的名稱,namespace可根據實際集羣B中的namespace名稱進行填寫。保存會,會在集羣B的指定namespace中建立PVC。
訪問Rancher能夠看到PVC已經建立成功。
使用恢復的PVC建立MySQL應用,再查詢一下數據,能夠看到數據也恢復過來啦!大功告成!
隨着雲原生應用的普及,愈來愈多的服務能夠依託Kubernetes運行,保證服務的穩定性和可靠性也漸漸成爲難題,依託Longhorn的跨集羣容災備份功能,在Rancher中能夠自動完成應用的編排、數據遷移,隨時優雅的切換業務應用運行環境。