假设我有一个在Linux VPS框上运行的Web应用程序。 为了应用内核升级和一些安全修补程序,我需要重新启动服务器。 在此期间,服务器无法访问。 我想知道是否可以在这个时候向用户显示维护通知(通过HTTP)。 通知将由PHP脚本发送,该脚本将处理以HTML格式,图片或Web服务XML向客户提供维护通知的请求。 或者如果可能的话,提供部分运行的服务。
我需要什么types的硬件和软件(最低的预算,我希望一个典型的VPS /专用主机提供商可以支持这些)?
现在我已经知道我可以使用像squid这样的软件在两台HTTP服务器之间提供负载均衡。 但是,如果squid本身需要升级,或者托pipesquid的CentOS服务器,我该怎么办? 另外,我实际上并不需要负载平衡,如果我必须手动“切换”到维护模式,那很好。 有任何想法吗?
提前致谢。
如果你有这么多的正常运行时间(例如,在服务器重启时间<5分钟),那么我build议设置第二台虚拟服务器。 这可能是非常小的,运行lighttp和一个静态页面 – 或者它可能是您的活网站的副本。
然后在两台服务器上设置heartbeat2 ,并给它们一个共享的IP地址 。 当主机启动时,它会响应地址,但是如果它离线,IP地址会在几秒钟之内自动在第二台机器上启动。
如果您决定在两台服务器上放置完整版本的网站,除了heartbeat2之外,我还会安装ldirectord ,这是一个负载均衡器应用程序,可以在与您的networking服务器相同的机器上运行。 在这种情况下,当两台服务器都停机时, 甚至不会有几秒的停机时间 。
然后,如果你想要看到你可以挂载你的网站内容,并从另一台服务器(或服务器集群)上的NFS共享configuration,以便不需要在networking服务器之间的同步或重复。
我们通常升级的方法是使用升级的组件(软件,硬件等)构build新机器。 然后,我们将生产数据加载到系统中并进行彻底testing。 准备好之后,我们重新加载最新的生产数据,并将DNS指向新机器。
那样的话,旧盒子和新盒子之间的可用性是不变的。
如果您需要在需要重新启动的服务器上执行升级,则至less需要一台备用机器来托pipe临时站点,而原始机器处于脱机状态。 一种select是使用低TTL的DNS在原始网站离线时指向新的服务器。
另一个像你说的是使用鱿鱼来代理。 我相信鱿鱼也可以与多个鱿鱼服务器在循环的DNS情况下工作。
但是,如果select这种方式,您所做的任何DNS传播都可能被下游服务器caching。 你可以尝试用30秒TTL或可笑的小东西缓解这一点,但一些DNS服务器将忽略这一点,仍然caching值更长。
如果您正在切换到维护模式,为什么不花5分钟时间来重新启动并事先向用户发送通知? 除了非常高的可用性情况外,这应该可以正常工作。
一些DNS提供商(如dnsmadeeasy.com)提供故障转移DNS服务。
这项服务将定期检查,以确保您的主IP地址已经启动,如果没有,它将开始以备份IP地址进行响应 – 可能指向另一个主机上的“服务器不可用 – 请稍后再试”页面。
但是,这可能不适合于重新引导,因为dns条目上的TTL会阻止人们在重新启动的2或3分钟内获取故障转移页面。 然而,这对于更长时间(或计划外)的停电很有效。
检查Zoneedit的DNS。 对于一个非常低的成本,他们提供DNS故障转移。
我build议只通知网站上的用户,通知他们停电的时间。 然后在停电期间,他们会得到404或500的错误。
编辑:他们不会得到404/500,而是一个超时错误。