我的要求:
1)必须能够在节点故障后继续运行 2)日志在节点故障后必须可恢复 - 没有数据丢失 3)必须能够扩展 4)必须是事务性的 - 当一条消息被记录下来时,我需要保证它被持久保存到磁盘
这和我之前的一个问题类似,但我刚刚意识到事务功能的重要性。这是一款医疗应用;我们不能丢失任何日志消息。
谢谢!!
答案1
使用 rsyslog 进行可靠转发会帮助你入门。rsyslog 文档还有描述如何将数据写入数据库以及如何扩展写入数据库的页面。
现在,此设置并未专门处理多个日志服务器之间的自动故障转移。我个人并不担心这一点,因为每个发送日志数据的客户端都会将数据排队到其终端,直到日志服务器恢复。而且我已安装监视器,当日志服务器关闭时会通知我。
如果你已经有一个具有适当故障转移和高可用性设置的数据库系统,你可以设置两个日志服务器并使用心跳系统(也许linux-ha) 自动接管实时日志服务器的 IP。
答案2
从您上面的描述来看,您想要的是连续计算。Windows 平台上有两种软件可以提供您所需的功能。我对任何事务日志应用程序都不太熟悉。使用以下两种 HA/FT 解决方案,您可以使用其中任何一种。(只要它们在 Windows 中运行)
Neverfail 是一种 HA 解决方案,可保护您的应用程序免受任何数据丢失的影响。如果发生服务器中断,两台服务器之间的故障转移是无缝的(不需要人工交互),并且根据内存中仍有多少数据未写入活动服务器上的 I/O,被动服务器将接管操作。这将为您提供接近 99.99% 的正常运行时间。
Marathon 与 Neverfail 类似,但它增加了一项保护措施,即组件保护。借助其 FT 功能,如果您的服务器发生任何故障,例如磁盘故障甚至网络故障,您的应用程序将继续运行。因此不会丢失数据或中断业务。