不朽的申请

(TL; DR:最后一段)我正在运行在线服务,因此已经进行离线备份和简单的监控,以实现恢复能力和可用性。

韧性是相当手动,但我相当有信心它的数据将生存。 我稍微担心数据不太安全,因为我必须积极备份数据。 由于UPS和networking故障,我需要一段时间来响应,而且有几天的时间,网站已经停了好几天了。

我不喜欢那样

我一直在寻找基于XEN的服务器集群解决scheme以及PaaS解决scheme。 我发现没有PaaS可以提供​​我所需的安全级别。 我正在考虑分成低秒和高秒的操作,但这只会影响我的托pipe问题。

我不需要极高的可伸缩性(但是,我希望:)或完美的正常运行时间,但我自然喜欢它们。 暂停几分钟是可以接受的。 失去活动内存很烂。 丢失磁盘数据是不可接受的。 违反安全(公开数据)是不可接受的。 我只关心单个应用程序的存活,而不是关于cron作业或运行的操作系统(只要它是偏执性的,更喜欢OpenBSD)。

问题:如何以一种永不死亡的方式运行应用程序(兼容Linux和BSD)?

编辑:为了清楚您的请求:这是一个用于安全存储私钥的Web服务,意味着可以通过Internet访问的API并在清除之后执行私钥操作。 私钥是有价值的,不能丢失。 这些密钥与磁盘同步,因此不需要维护内存。 不朽的意思是它可能被暂停,但在暂停之后必须能够继续。 内核升级不会是一个重大的问题,因为它可能会计划停机。 这开始看起来像复制磁盘和自动故障转移问题。

要获得可用性,您需要在某个地方使用第二台服务 如果你的位置不够好,第二件好事就是购买一台服务器,并在一个主机数据中心托pipe它,安全性较差 – 租用专用服务器(如机架空间),安全性较差 – 订阅VPS。 我想你不需要那么做,因为VPS很便宜(亚马逊EC2是免费的1年)。

从描述可用性需求的方式来看,只需将VPS添加到现有服务器就足够了。

如果要进行高速运行,那么您的单个服务器就足够了 – 您可以在VPS上拥有较低的秒数。 如果你的服务器本身不够高,那么你就没有任何东西可以分割。

在两台服务器上“永不死”的应用程序并不难 – 只需在服务器之间实时同步所有的数据,使用一些集群数据库(我听说过cassandra,但是有很多集群数据库可以安装)。 它必须是一个文件系统文件,有DRDB,但我build议尝试去与数据库,避免并发症。 怎么样两列表:1.文件名和path和2.内容。 然后,用store-to-DBreplace所有的savefiles,用get-from-DBreplace你的readfiles。

这基本上都是。 在你想要达到的目标上,没有什么太复杂也不贵的。

免责声明:您决定需要哪种级别的安全性,我并不build议将敏感数据存储在托pipe服务器上,也不提供其他build议。

你问了很多问题,都是用一个大球包起来的。 我怀疑你甚至不知道你在问他们中的一些人。
我试图挑选重要的项目,并提供一些指导。


我稍微担心数据不太安全,因为我必须积极备份数据。

encryption备份 。 任何值得使用的备份软件(如Bacula )都会支持这一点。


由于UPS和networking故障,我需要一段时间来响应,而且有几天的时间,网站已经停了好几天了。

我不喜欢那样

没有人会这样,但是事情就是这样。 如果你想避免这种情况,你需要分配你的站点的冗余副本,最好是并行冗余(在所有的时间里,请求都会发送到所有的副本,数据在它们之间神奇地同步)。
想想谷歌,因为那是我们在这里讨论的那种预算。 在正常运行时间内,Nines花费美元。


我一直在寻找基于XEN的服务器集群解决scheme以及PaaS解决scheme。 我发现没有PaaS可以提供​​我所需的安全级别。 我正在考虑分成低秒和高秒的操作,但这只会影响我的托pipe问题。

这听起来像是你看错了解决scheme,因为如果I do not require extreme scalability (yet, I hope :) or perfect uptime, but I'd naturally like them. 是最真实的最经济的解决scheme将是find一个不同的数据中心(具有更好的基础设施和更严格的SLA)。
为了达到可靠的目标,你追求的是快速devise的东西 – 两者并不相互排斥(实际上它们有些共生),但它们也不是连体双胞胎。


暂停几分钟是可以接受的。 失去活动内存很烂。 丢失磁盘数据是不可接受的。 违反安全(公开数据)是不可接受的。 我只关心单个应用程序的存活,而不是关于cron作业或运行的操作系统(只要它是偏执性的,更喜欢OpenBSD)。

好的, Halting for minutes is acceptable意味着你是合理的。 那很好。 我们喜欢这里的合理的人。

Losing active memory sucks – 我同意你在那里Skippy,我只是不认为你有一个行动的原因。
服务器崩溃。 即使在维护良好的环境中也是如此,当服务器重新启动或掉电时,活动内存(RAM)消失。 你可以做的事情并不多 – 这就是应该发生的事情。

Losing disk data is unacceptable – 噢,现在你是不合理的。
在现实世界中磁盘失败。 当发生这种情况时,他们将所有的数据与他们,他们失去了自上次备份以来所做的一切。 这就是我们做备份的原因(通常我们不会失去太多重要的数据)。
既然你已经在做备份,你正在尽一切可能来缓解这一点,所以当不可避免的磁盘故障(或操作系统崩溃和腐败)发生时,我的build议是打一只小猫,并开始恢复过程。
(你有一个恢复过程,并定期testing,对吧?:-)

Breach of security (publicized data) is unacceptable – 我只是想说“好吧,DUH”,继续前进。 我不能想到任何有数据泄露的服务被认为是“可以接受的”。

[I don't care] about . . . the OS . . . (as long as it's paranoidly secure, prefer OpenBSD) [I don't care] about . . . the OS . . . (as long as it's paranoidly secure, prefer OpenBSD) – 安全性不是操作系统的function,它是你在其上应用的configuration的一个function。 我可以在5秒内制作一个不安全的OpenBSD机器。
忘记所有的营销宣传,忘记OpenBSD的(令人印象深刻的)logging:挑选满足您需求的操作系统,然后花时间保护它。 是的,你还必须为OpenBSD盒子做这个。


问题:如何以一种永不死亡的方式运行应用程序(兼容Linux和BSD)?

你没有。 在大多数群集(或单一系统)上可以做的最好的方法是监视应用程序故障,并尽快重启,以免用户注意到。
最接近你要描述的东西是build立类似于VMWare HA(如果networking/数据中心(电源)问题是真正的问题,则跨越地理上分布的站点),并且失败整个(虚拟)环境如果一个网站发生故障


编辑:为了清楚您的请求:这是一个用于安全存储私钥的Web服务,意味着可以通过Internet访问的API并在清除之后执行私钥操作。

我希望你们不要这样做,但是当你从我冷冷的,死去的,没有生气的手中撬开他们的时候,你可以拥有我的私钥。 任何不同意这个哲学的人对数据安全性都不够偏执。 🙂