不朽的應用
(TL;DR:最後一段)我正在執行一項線上服務,到目前為止,我一直在進行離線備份和簡單的監控,以實現彈性和可用性。
彈性是相當手動的,但我相當有信心數據能夠存活下來。我有點擔心數據不太安全,因為我必須主動備份它。由於 UPS 和網路故障,我需要時間做出響應,該站點已經關閉了好幾次半天。
我不喜歡那樣。
我一直在研究基於 XEN 的伺服器集群解決方案以及 PaaS 解決方案。我發現沒有任何 PaaS 可以提供我所需的安全級別。我正在考慮拆分為低秒和高秒操作,但這只會改變我的託管問題。
我不需要極高的可擴展性(但我希望 :) 或完美的正常執行時間,但我自然會喜歡它們。暫停幾分鐘是可以接受的。失去活躍的記憶很糟糕。失去磁碟數據是不可接受的。違反安全性(公開數據)是不可接受的。我只關心單個應用程序的生存,而不關心 cron 作業或它執行的作業系統(只要它是偏執的安全,更喜歡 OpenBSD)。
問題:我如何執行一個應用程序(Linux 和 BSD 兼容),使其永遠不會在伺服器集群上死掉?
編輯:響應您的澄清要求:它是用於安全儲存私鑰的 Web 服務,這意味著可通過 Internet 訪問並在清除後執行私鑰操作的 API。私鑰是有價值的,不能失去。這些密鑰與磁碟同步,因此不需要維護記憶體。我所說的不朽是指它可能會被暫停,但它必須能夠在暫停後繼續。核心升級不會是一個重大問題,因為它可能會計劃停機。這開始看起來像複製磁碟和自動故障轉移問題。
為了可用性,您在某處需要第二台伺服器。如果您的位置不夠好,第二個好處是購買伺服器並將其託管在某個託管數據中心,安全性較低 - 租用專用伺服器(如機架空間),安全性較低 - 訂閱 VPS。我想你不需要花更少的錢,因為 VPS 很便宜(Amazon EC2 可以免費使用 1 年)。
從您描述可用性要求的方式來看,只需將單個 VPS 添加到現有伺服器就足夠了。
如果對於高安全性操作,您的單個伺服器就足夠了 - 您可以在 VPS 上使用低安全性。如果您的伺服器本身不足以實現高安全性 - 您就沒有什麼可拆分的了。
在兩台伺服器上擁有“永不當機”的應用程序並不難——只需在伺服器之間實時同步所有數據,使用一些集群數據庫(我聽說過 cassandra,但有很多集群數據庫適合)。它必須是文件系統文件,有 DRDB,但我建議無論如何都要嘗試使用數據庫並避免並發症。兩列表怎麼樣:1.文件名和路徑和2.內容。然後,您將所有保存文件替換為 store-to-DB,並將您的讀取文件替換為 get-from-DB。
基本上就是這樣。您要實現的目標既不復雜也不昂貴。
免責聲明:您決定需要的安全級別,我不建議將您的敏感數據儲存在託管伺服器上,也不建議其他方式。