我一直在探索 chef,它的一个功能是自动更新客户端。我犹豫是否要在生产中使用此功能,因为我不想在使用时升级节点。对于重大更改,我希望将流量路由到其他节点,然后升级(例如,我不想在使用时升级我的应用服务器)。
我知道我可以编写节点更新脚本并按需更新,但我想知道人们是否只是让他们的节点在生产中自动更新,以及他们如何在服务器使用时处理升级。
答案1
视情况而定™您的环境究竟是如何运作的。
例如:我刚刚和 Heroku 的一位前系统管理员交谈过。他们有一个高度自动化的系统;当某个节点需要更新或某些东西时,它就会进入“维护模式”。所有流量都会转移到其他服务器;一旦完成,它就会处于“维护就绪”状态,更新就会应用并重新启动。当它重新启动时,其他系统会将其识别为“就绪”,并再次开始接收流量。
其工作原理的关键在于,应用程序中的每一层都“知道”哪些服务器可用,并智能地路由流量。不幸的是,大多数供应商提供的应用程序都几乎没有故障转移能力,而且情况并不乐观。因此,您可能只能从上到下地进行手动处理。