iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 25
0
Elastic Stack on Cloud

前端三分鐘 X Elastic Stack系列 第 25

Elastic Cloud Snapshots: 雲端資料備份與恢復 (25)

還在把資料備份到謎之 D 槽嗎? 現在都什麼時候了? 2020 年,這篇文章將提到怎麼利用現代科技進行資料的備份與恢復,Elastic 提供的快照功能,搭配對應的 plugins 能將資料備份到不同的雲端儲存服務。

Elastic Cloud Snapshots

為什麼備份跟快照很重要?

  • 快照可以在不影響系統運行的狀況下做快速且低成本的備份
  • 遇到病毒感染或錯誤可以用最快的速度恢復系統運行,通常做快照跟備份的位置會是不同的機台與服務,所以當主要的虛擬機被打掛了,快照跟備份還會活得好好的

Elastic Snapshots 可以做什麼?
https://ithelp.ithome.com.tw/upload/images/20200927/20130026YaMKfRuiJf.jpg

在啟用 Elastic Cloud 服務後,會預設幫我們啟動快照的功能,快照預設自動每 30 分鐘做一次且會透過 Repositories 進行存放。

Repositories 可以是本機或是任何遠端有提供支援 plugins 的雲端服務像是 Amazon S3、HDFS、Microsoft Azure、Google Cloud Storage 等等,目前 7.6 版以上就可以透過 kibana 的 GUI 進行快照跟恢復的動作了,可以說是非常方便。

建立快照與恢復

首先第一個步驟就是要註冊 Repository,Stack Management > Data > Snapshot and Restore 點選 Repositories 的 Tab 就可以進行建立,當然也可以透過 API 的方式進行,這個部分可以參考相關文件,目前 Elastic Cloud 試用帳號只支援 AWS S3 跟 GCP,這個帳號目前是建立在 GCP 上。

  1. 建立 Repository

Kibana 的介面中
https://ithelp.ithome.com.tw/upload/images/20200927/20130026GZtVt7yYwe.jpg

也有提供支援 S3,要使用其他平台應該就要裝額外的 plug-in,這個部分目前沒有去嘗試
https://ithelp.ithome.com.tw/upload/images/20200927/201300268fEE7UH90L.jpg

Elastic Cloud Enterprise 的介面也是類似
https://ithelp.ithome.com.tw/upload/images/20200927/20130026wUr0eubu0V.jpg

  1. 建立快照並設定相關週期,透過 GUI 其實蠻方便的,就是下一步下一步。

建立的過程中可以設定像是要多久快照一次快照保存多久
https://ithelp.ithome.com.tw/upload/images/20200927/20130026bCLPAfv7pE.jpg

設定完成後也可以在 Policy 的 Tab 進行管理
https://ithelp.ithome.com.tw/upload/images/20200927/20130026PncZGKcGBV.jpg

Snapshots 可以看到系統自動製作的快照列表
https://ithelp.ithome.com.tw/upload/images/20200927/20130026i1CiDgDknN.jpg

  1. 從快照恢復資料,從快照恢復也很方便就是點選然後按恢復就完成,也同樣能透過 API 進行操作

從快照恢復資料
https://ithelp.ithome.com.tw/upload/images/20200927/20130026qmgWZFT5dG.jpg

SLM (snapshot lifecycle management)

這篇文章示範的 UI 背後其實是一套叫做 SLM (snapshot lifecycle management) 的管理機制,會自動依照設定的 SLM policy 做備份跟老舊快照的移除,也提供相關 API 提供管理,更詳細的資訊可以參考SLM 相關文件,底下附上 API 的範例,看完之後建議直接使用 Kibana 的介面,畢竟 Kibana 已經做好 API 的串接。

curl -X PUT "localhost:9200/_slm/policy/nightly-snapshots?pretty" -H 'Content-Type: application/json' -d'
{
  "schedule": "0 30 1 * * ?",
  "name": "<nightly-snap-{now/d}>",
  "repository": "my_repository",
  "config": {
    "indices": ["*"]
  },
  "retention": {
    "expire_after": "30d",
    "min_count": 5,
    "max_count": 50
  }
}

上一篇
Elastic Cloud Enterprise Deployment: 開箱及部屬體驗心得分享 (24)
下一篇
Elastic Cloud Enterprise Platforms: 平台管理與設定 (26)
系列文
前端三分鐘 X Elastic Stack31

尚未有邦友留言

立即登入留言