跳轉到主要內容
Beplay体育安卓版本平台的博客

災難恢複為磚工作區自動化和工具

災難恢複的第2部分磚
分享這篇文章

這篇文章的延續災難恢複概述、策略和評估博客。


介紹

一個廣泛的工具存在的生態係統來實現災難恢複(DR)解決方案。雖然沒有完美的工具,工具的市場中增強和自定義代碼將提供博士團隊實現所需的敏捷性和最小的複雜性。

與備份或一次性遷移,實現博士是一個移動的目標,通常,支持工作負載的需求變化迅速和頻繁。因此,沒有開箱即用的或一刀切的實現。這個博客提供了一個固執己見的博士對可用的工具和自動化最佳實踐解決方案磚工作區。,我們是針對一般方法為核心,將提供一個基本的了解大多數博士解決方案的實現。我們不能考慮所有可能的情況,和一些工程工作的博士提供的建議將需要形成一個全麵的解決方案。

磚工作區中可用的工具

博士的策略和解決方案可以是至關重要的,也是非常複雜的。一些複雜性,存在於任何自動化解決方案,成為至關重要的一部分博士是冪等操作,管理基礎設施狀態,減少配置漂移,並要求各級博士支持自動化的範圍,例如,multi-AZ,多區和多重雲。

存在著三個主要的工具用於自動化的部署Databricks-native對象。這些都是磚REST api,磚CLI和磚起程拓殖的提供者。我們將考慮每個工具依次審查它的角色在實現一個博士的解決方案。

不管選擇的工具實現,任何解決方案應該能夠:

  • 管理狀態,引入最小的複雜性,
  • 執行等冪的,孤注一擲的變化,
  • 重新部署,以防錯誤配置。

磚REST API

原因有幾個基本REST api是強大的自動化工具。共同遵守HTTP標準和休息建築風格允許一個透明的、係統的方法安全、治理、監測、規模和采用。此外,REST api很少有第三方依賴和通常包括記錄規範。磚REST API (AWS|Azure|GCP)有幾個強大的特性,可以利用作為一個博士的解決方案的一部分,但它們的使用有很大的局限性的上下文中。

好處

支持定義、出口和進口幾乎每個磚對象可以通過REST api。任何新創建的對象在一個工作區臨時可以導出API方法使用“得到”的語句。相反,JSON對象版本化的定義和部署的一部分CI / CD管道可以用來創建這些對象定義在許多工作區API方法同時使用“POST”語句。

定義對象的組合JSON、廣泛的熟悉的HTTP和其他使這種少量付出工作流來實現。

限製

有一個簡單的權衡使用磚REST api的自動化工作空間更改。這些api不跟蹤狀態,則不是冪等,並必要的,這意味著API調用必須在一個精確的成功執行以達到理想的結果。因此,自定義代碼,詳細的邏輯,和手動管理所需的依賴關係使用磚REST api博士在一個解決方案來處理錯誤,有效載荷驗證和集成。

JSON定義和響應從“得到”語句應該版本跟蹤對象的整體狀態。“POST”語句應該隻使用版本定義標記,以避免發布配置漂移。一個設計良好的解決方案將有一個自動化的過程版本博士和標簽對象定義,以及確保隻有正確的釋放是應用於目標工作區。

REST api不是冪等,所以額外的過程將需要博士解決方案,以確保冪等性存在。沒有這個,這個解決方案可能產生同一對象的多個實例,需要手動清理。

REST api是必要的和不知道的依賴性。當為一個工作負載進行API調用複製對象,每個對象將必要的成功運行的工作負載,和操作應該完全成功或失敗,這並不是一個本地REST API的功能。這意味著開發人員將負責處理錯誤管理、保存點和檢查點,並解決對象之間的依賴關係。

盡管這些限製使用REST API自動化,幾乎所有的好處是足夠強大基礎設施代碼(IaC)工具的構建上。

磚CLI

磚CLI (AWS|Azure|GCP)是一個Python包裝器磚REST api。出於這個原因,CLI享有相同的優點和缺點的磚REST api的自動化,所以將簡要介紹。然而,CLI使用REST api直接引入了一些額外的優勢。

CLI將處理身份驗證(AWS|Azure|GCP為個人API調用)代表用戶可以配置和驗證多個磚工作區跨多個雲通過存儲連接配置文件(AWS|Azure|GCP)。CLI更容易融入Bash比直接調用數據磚和/或Python腳本api。

使用Bash腳本,CLI將可以使用安裝之後,和CLI可視為一個臨時Python SDK,開發者會導入“ApiClient”來處理身份驗證,然後管理API調用所需的服務。下麵是一個例子使用“ClusterService”來創建一個新的集群。

databricks_cli.sdk.api_client進口ApiClientdatabricks_cli.clusters.api進口ClusterApi
              api_client = ApiClient (令牌= < personal-access-token >,主機= https:// < workspace_name > .cloud.www.eheci.com,command_name =“disasterrecovery-cluster”)
              cluster_api = ClusterApi (api_client)
              sample_cluster_config = {“num_workers”:0,“spark_version”:“10.4.x-photon-scala2.12”,“spark_conf”:{“spark.master”:“地方(* 4)”,“spark.databricks.cluster.profile”:“singleNode”},“aws_attributes”:{“first_on_demand”:1,“可用性”:“SPOT_WITH_FALLBACK”,“zone_id”:“us-west-2c”,“spot_bid_price_percent”:One hundred.,“ebs_volume_count”:0},“node_type_id”:“i3.xlarge”,“driver_node_type_id”:“i3.xlarge”,“ssh_public_keys”:[],“custom_tags”:{“ResourceClass”:“SingleNode”},“spark_env_vars”:{“PYSPARK_PYTHON”:“磚/ python3 / bin / python3”},“autotermination_minutes”:20.,“enable_elastic_disk”:真正的,“init_scripts”:[],}
              cluster_api.create_cluster (sample_cluster_config)
              < / workspace_name > < / personal-access-token >

這段代碼演示了如何創建一個單節點集群使用磚CLI作為一個模塊。臨時SDK可以找到的和額外的服務databricks-cli庫。冪等性的缺乏在REST api和CLI可以突出顯示上麵的代碼片段。運行上麵的代碼將創建一個新的集群定義規範每次執行;不進行檢驗來驗證如果集群已經存在在創建一個新的。

起程拓殖

基礎設施代碼(IaC)工具迅速成為標準管理基礎設施。這些工具廠商提供包和開源api中軟件開發工具包(SDK)包括額外的工具使開發,如CLI和驗證,使基礎設施資源定義和管理簡單易懂,可共享、可重複使用的配置文件。起程拓殖特別是具有顯著的流行由於其易用性,健壯性和支持第三方服務在多個雲提供商。

好處

類似於磚,起程拓殖是開源和cloud-agnostic。因此,一個起程拓殖可以管理多重雲解決方案由博士的工作負載。這簡化了管理和編製開發人員不需要擔心個人工具和接口/雲也雲間依賴關係需要處理。

自起程拓殖管理狀態,文件的起程拓殖。tfstate的商店狀態基礎設施和配置,包括元數據和資源依賴關係。這允許對冪等和增量操作通過一個配置文件和當前快照比較“terraform.tfstate”的狀態。跟蹤國家還允許起程拓殖杠杆聲明性編程HashiCorp配置語言(HCL),用於起程拓殖,隻需要定義目標狀態和流程來實現這一狀態。這聲明式方法使得管理基礎設施、州和博士的解決方案明顯更容易,而不是過程編程:

  • 當處理程序代碼,完整的曆史的變化需要了解基礎設施的狀態。
  • 程序代碼的可重用性本質上是有限的由於分歧的狀態代碼庫和基礎設施。作為一個結果,程序上的基礎結構代碼往往變得龐大而複雜。

限製

起程拓殖開始需要一些支持,因為它可能不容易熟悉開發人員喜歡REST api或程序性CLI工具。

訪問控製應該嚴格定義和執行團隊中獲得起程拓殖。幾個命令,尤其是“汙染”和“進口”似乎是無害的,但這些命令允許開發人員自己的變化融入國家直到這樣的治理實踐製定。

起程拓殖沒有回滾功能。要做到這一點,你必須恢複到之前的版本,然後重新應用。起程拓殖刪除所有“外來”無論如何補充道。

起程拓殖雲和企業起程拓殖

鑒於起程拓殖提供的福利和強大的社區,它是無處不在的企業架構。Hashicorp起程拓殖的分布——提供管理起程拓殖雲和企業起程拓殖。起程拓殖雲提供了額外的功能,方便團隊合作一起起程拓殖,起程拓殖企業是一個私人的實例起程拓殖雲提供先進的安全性和遵從性的特性。

部署的基礎設施,起程拓殖

起程拓殖的部署是一個簡單的三步過程:

  1. 編寫基礎設施配置的代碼使用鹽酸和/或導入現有基礎設施受到起程拓殖管理。
  2. 執行一個幹燥的運行使用“起程拓殖計劃預覽的執行計劃,繼續根據需要編輯配置文件,直至達到理想的目標狀態。
  3. 運行的起程拓殖應用提供基礎設施。

磚,起程拓殖的部署是一個簡單的三步過程。

磚起程拓殖的提供者

磚是一種選擇合作夥伴Hashicorp和正式支持磚起程拓殖的提供者和問題跟蹤通過Github。使用磚起程拓殖的提供者有助於規範博士的部署工作流解決方案,促進康複模式。提供者不僅能夠提供磚對象,像磚REST api和磚CLI,但是也可以提供一個磚工作區,雲基礎設施,通過起程拓殖和更多的供應商。此外,實驗出口國的功能應該用於捕獲鹽酸磚工作空間的初始狀態代碼,同時維護引用完整性。這會顯著減少所需的水平工作采用IaC,起程拓殖。

使用磚起程拓殖的提供者有助於規範博士的部署工作流解決方案,促進康複模式。

結合磚提供者,起程拓殖是一個工具,它可以自動的創建和管理的所有博士的解決方案所需的資源數據磚工作區。

結合磚提供者,起程拓殖是一個工具,它可以自動的創建和管理的所有博士的解決方案所需的資源數據磚工作區。

自動化災難恢複的最佳實踐

起程拓殖的推薦方法有效數據磚部署,管理雲基礎設施作為CI / CD管道的一部分,和自動化的創建磚的對象。這些做法簡化實現大規模博士的解決方案。

範圍內的所有基礎設施和磚對象博士解決方案應該被定義為代碼。對於任何資源,不是已經由TF,明確資源的代碼是一個一次性的活動。

工作負載,計劃和/或自動化應優先為博士,應該受到特遣部隊的管理。特別的工作,例如,生成生產數據報告,分析師應該盡可能地自動化和一個可選的,手動驗證。對工件不能自動管理,即需要一些用戶交互,嚴格治理與一個已定義過程將確保這些正在博士的管理解決方案。添加標記在配置計算,包括工作(AWS|Azure|GCP)、集群(AWS|Azure|GCP)和SQL端點(AWS|Azure|GCP),可以方便識別的對象應該是博士的範圍內。

基礎設施代碼應該獨立於應用程序代碼,至少存在兩個獨家存儲庫,一個存儲庫包含基礎設施模塊作為藍圖和生活基礎設施的另一個存儲庫配置。分離簡化了測試模塊代碼和促進不變的基礎版本使用trunk-based發展。此外,國家不能手動修改文件和足夠安全,以防止任何敏感信息的泄露。

關鍵基礎設施和作用的對象必須集成到博士CI / CD管道。通過添加起程拓殖到現有的工作流程,開發人員可以部署在同一管道基礎設施雖然步驟將由於基礎設施代碼的本質不同。

  • 測試:測試模塊的唯一方法是真正的基礎設施部署到一個沙箱環境中,允許他們進行檢查來驗證部署資源。排練是唯一重要的測試,可以執行對生活基礎設施代碼檢查什麼變化會使對當前生活環境。
  • 發布:發布管理模塊應該利用一個人類可讀的標簽;同時,住代碼將生成工件。的主要分支生活基礎設施回購將代表正確部署。
  • 部署:生活基礎設施部署代碼的管道將取決於起程拓殖應用和配置被更新。基礎設施部署應該運行在一個專用、封閉服務器以便CI / CD服務器不允許部署基礎設施。起程拓殖雲起程拓殖企業提供這樣一個環境中托管服務。

與應用程序代碼不同,基礎設施代碼工作流需要human-in-the-loop審查有三個原因:

  • 建立一個自動化測試工具,引發足夠的信心在基礎設施代碼是困難和昂貴的。
  • 沒有的概念與基礎設施代碼回滾。環境會被破壞和重新部署,最後安全的版本。
  • 失敗可能是災難性的,和額外的檢查可以幫助他們應用前抓住問題。

human-in-the-loop最佳實踐是更重要的比傳統的IaC博士在一個解決方案。手動審查應要求任何更改後回滾到一個已知良好狀態的DR站點不可能在災難事件。此外,事件經理應該自己決定失敗到網站博士和失敗回主站點。流程應該存在,以確保一個負責任的和負責任的人總是可以觸發的解決方案如果需要博士和他們能與適當的谘詢,業務涉眾的影響。

手動決定將避免不必要的故障轉移。短暫中斷,要麼不符合作為一個災難事件或業務可能能夠承受,仍可能引發故障轉移,如果決定是完全自動的。使這是一個業務驅動的決定,避免了不必要的數據損壞的風險固有故障轉移/退回流程和降低成本的努力協調退回。最後,如果這是一個人類決策,業務可以評估影響,允許動態變化。幾個示例場景,這可能是重要的包括決定故障轉移速度附近的一個電子商務公司聖誕節相比常規銷售的一天,或金融服務公司必須故障轉移更快,因為監管報告的最後期限的等待。

監控服務為每個博士是一個必需的組件的解決方案。必須完全自動檢測故障,即使自動化故障轉移/退回決定不推薦。自動檢測提供了兩個關鍵的好處。它可以觸發警報通知事件經理或負責人,及時所需表麵信息的影響,使評估故障轉移的決定。同樣,在故障轉移之後,監控服務也應該檢測服務時在線和警報所需人員的主要網站已經恢複到健康狀態。理想情況下,所有服務水平指標(圖書館),如延遲、吞吐量、可用性等,對健康監測和用於計算服務水平目標(SLOs)應該在一個窗格中可用。

服務的工作負載直接接口應監測作用。服務中常見的高級概述Lakehouse工作負載中可以找到第一部分本係列的。然而,這不是一個詳盡的清單。磚服務,用戶可以提交請求,應監控公司的狀態頁麵上可以找到(AWS|Azure|GCP)。此外,您的雲服務帳戶所需電器部署由SaaS提供者。在磚的實例部署中,這包括計算資源(AWS|Azure|GCPApache)旋轉火花™集群和對象存儲(AWS|Azure|GCP)引發應用程序可以使用存儲洗牌文件。

監控服務為每個博士是一個必需的組件的解決方案。

開始:

起程拓殖教程——HashiCorp學習
起程拓殖供應商文檔磚在AWS上
Azure磚起程拓殖供應商文檔
起程拓殖磚豐富供應商文檔

免費試著磚

相關的帖子

看到所有解決方案的帖子
Baidu
map