Date: 4 6 月, 2026
LifeKeeper 通用應用程序,用於高可用性和災難復原
保護業務關鍵型應用程式的成功關鍵
高可用性和災難復原必須涵蓋廣泛的應用場景。應用場景的數量與組織的數量一樣多,遠遠超出任何單一解決方案的能力範圍。高可用性和災難復原該解決方案旨在為各種場景提供開箱即用的支援。雖然許多常見應用程式都有豐富的可用高可用性和災難復原解決方案,但更具體的用例會限制可用於保護業務關鍵型應用程式的方案選擇。
當然,LifeKeeper 無法開箱即用地涵蓋所有用例。然而,LifeKeeper 提供了一個通用且靈活的框架,可以適應各種用例,從而彌補這一不足。雖然功能強大,但對於外行人來說,這個框架可能顯得複雜。本部落格旨在幫助您在為特定用例構思通用應用程式復原工具包時獲得一些幫助。
相關部落格和背景閱讀推薦
本部落格假設讀者已熟悉 LifeKeeper 資源層級架構和 LifeKeeper 叢集。如需了解這些主題的背景知識,請參閱下方列出的部落格。此外,本部落格還基於先前關於如何利用 LifeKeeper 中的「快速服務保護應用程式復原工具包」(QSP ARK)來彌合潛在用例與支援的保護機制之間差距的部落格(連結如下)。
- Linux叢集/Windows 叢集(本文由SIOS全球銷售與行銷副總裁霍格蘭女士及SIOS行銷團隊撰寫)
- 應用智能與高可用性(本文由SIOS資深軟體工程師Hendricks-Sinke女士撰寫)
- 資源行動和背景通用應用程式復原工具包(本文由資深技術推廣專家伯明罕先生撰寫)
- 在 GenApp 和 QSP 之間進行選擇:為您的關鍵應用程式量身定制高可用性(本文由 SIOS 資深軟體工程師 Hendricks-Sinke 女士撰寫)。
然而,本部落格將探討當 QSP ARK 無法滿足特定應用程式或用例的高可用性和災難復原需求時可用的選項。
應用概念化和方法定義
詢問有關應用程式健康狀況的最細微的問題
系統管理和軟體工程都是非常注重細節的領域。一個問題背後可能包含許多因素,因此很難找到一個簡單直接的答案。在日常對話中,這很容易理解。但在程式碼中,複雜的答案卻難以實現。提出「最小問題」的做法,就是將問題聚焦到盡可能小的層面,同時確保答案符合明確的標準。
「應用程式是否正在運行?」這是一個「大」問題,可能需要詳細的答案。應用程式確實在運行,但沒有響應。應用程式確實在運行,但它運行在另一個系統上,而不是你正在討論的這個系統。答案的標準很模糊,而且答案本身也很微妙——開發人員通常都不願意處理這種細節。
“應用程式進程是否正在運行?應用程式是否正在積極回應查詢?”
雖然表述起來更冗長,但這卻是一個更小的問題。它清晰地定義了答案為“是”或“否”的條件。儘管這項改變有所改進,但它還不是「最小」的問題。先前的問題同樣陷入了「X 和 Y 是否都為真?」的陷阱。 「是」或「否」的答案無法提供足夠的細節來獨立判斷 X 和 Y 的真假。最小的問題需要具體性;它必須能夠全面洞察整體中最小元素的狀態。 「應用程式的進程是否在目標系統上運行?」這是一個小問題——在本例中,這就是最小的問題。請記住,可能存在多個「最小」的問題——在本例中,「應用程式是否回應查詢」也符合條件。
雖然問題幾乎可以無限細分,但還是存在一個限度。 「最小的問題?」這句話的意思是「提出一個能夠提供有用/可操作資訊的最小問題」。問「我是否在去費城的火車上?」就足夠了;進一步問「我是否在去費城的火車上,費城是哪個方向?」可以提供更多資訊——但這並不能提供可操作的資訊。我無法改變火車的行駛方向。我只能從「我是否在去費城的火車上?」這個問題的答案中判斷是否需要打電話通知老闆我會遲到。
雖然在這個例子中這一點很明顯,但在開發通用應用程式時就不那麼顯而易見了。在保護通用應用程式的整個過程中,仍然需要著眼於全局。這和其他事情一樣,都是一項技能──透過實踐和協作,就能判斷哪些問題是最根本的問題,哪些細微之處不再能提供更多有用的資訊。
通用應用程式復原工具包的建構基礎是將廣泛的問題分解為針對各個組成部分的更小、更具體、更有針對性的問題。每個「大問題」都可以透過其中涉及的各個組成部分的解答綜合起來得到解答。
一旦將問題分解成最小的組成部分,需要傳遞的訊息就會變得清晰得多。在了解了所需資訊後,開發通用應用程式復原工具包的剩餘工作就變成如何從現有資訊中提取所需資訊。必須利用已有的資訊進行工作。
使用應用程式 API 和 LifeKeeper API
應用程式通常會提供圖形使用者介面 (GUI) 來顯示資訊或應用程式發生的變更。雖然這對於人為操作來說非常方便,但當管理工作由應用程式執行時,這種方式就顯得不太實用。 GUI 是供人使用的,而應用程式(為了避免大量的程式設計工作和不必要的複雜性)並不具備像人一樣與另一個應用程式的 GUI 進行互動的能力。對於 LifeKeeper 和通用應用程式資源而言,通用應用程式復原工具包的操作腳本與受保護的應用程式之間的資訊交換必須透過應用程式介面 (API) 來完成。
LifeKeeper 提供自己的 API,用於與 LifeKeeper 本身、其層級結構以及層級結構中的資源進行互動。對於 LifeKeeper 的 API,產品內建的命令列實用程式在通用應用程式中最易於使用。一般建議僅使用 LifeKeeper 產品文件中概述的命令列實用程式(Linux 命令文檔/Windows 命令文檔應該使用這些命令。即使有了這項建議,使用這些命令時也應謹慎細緻,以確保不會產生意外後果。
當然,LifeKeeper並非通用應用程式保護的唯一要素。受保護的應用程式還需要提供API,以便操作腳本能夠利用該API來實現預期結果。開發通用應用程式復原工具包確實需要了解受保護應用程式的API,以及如何在構成該工具包的操作腳本中使用該API。
在恢復腳本中使用返回碼和輸出流
無論是 LifeKeeper 的 API 還是受保護的應用程序,資訊主要以兩種方式輸出:
- 回傳代碼
- 輸出流(有時稱為“STDOUT/STDERR 輸出”或簡稱“終端輸出”)
回傳碼如何幫助判斷成功或失敗
從廣義上講,返回碼提供了一種快速判斷實用程式是否成功的方法。通常(在 shell 環境中),回傳碼 0 表示成功,而非零回傳碼表示失敗。
根據應用場景的不同,返回碼的具體值可以提供更多關於所遇到錯誤的資訊。通常,只需檢查返回碼即可推斷透過應用 API 執行的操作的結果。
在一些更複雜的情況下,返回碼可能僅用於告知程式在呼叫應用程式 API 後應採取何種操作。當處理與底層元素狀態相關的實用程式時,返回碼尤其有用。
輸出流如何提供更詳細的應用程式信息
輸出流雖然在程式中使用起來比較複雜,但有時對於資訊交換或驗證結果來說是必不可少的。例如,如果執行一個實用程式來取得系統主機名,僅憑回傳碼無法確定主機名稱是什麼,除非該實用程式成功取得了主機名稱。在某些情況下,即使 API 實用程式已獲取到要求的信息,它也可能返回成功返回碼,但該信息的有效性仍需根據具體情況進行評估。
無論使用返回碼還是輸出流,開發通用應用程式都需要利用現有資訊。在思考如何實現資源操作(下一節將詳細介紹)或確定應用程式或 LifeKeeper 資源的相關資訊時,請嘗試從返回碼和輸出流的角度思考,而不是從圖形使用者介面 (GUI) 的角度思考。想像一下透過電話傳遞訊息會很有幫助。也就是說,當實用程式的輸入和輸出能夠準確地作為輸入或輸出進行報告時,資訊傳遞、操作定義和場景處理才能達到最佳效果。
建構通用應用程式保護的基礎
本節主要著重於策略的概念性闡述。這些策略為思考應用程式奠定了基礎,其核心在於如何透過對應用程式提出的問題和採取的操作的回應來進行分析。接下來,我們將更具體地探討 LifeKeeper 以及通用應用程式恢復工具包的創建過程。同時,這些策略與其他技能一樣,需要透過實踐來提升。無論是在技術交流、撰寫流程文檔,或是其他任何工作中,練習這些概念化策略不僅能帶來短期益處,更能帶來長期的益處。
需要協助保護不符合標準高可用性模型的關鍵業務應用程式嗎? SIOS 可以幫助您評估環境並確定合適的 LifeKeeper 方法。申請演示今天。
作者:Philip Merry,SIOS Technology Corp. 的 L3 支援工程師
經許可轉載SIOS
