我运行多个运行在负载均衡器后面的应用程序服务器。 应用程序服务器共享一个SQL Db。 相当传统的设置,我认为。
想象一下,sw升级包可用于应用程序。 升级包括对应用程序和Db架构的更改。
pipe理员开始在第一个应用程序服务器上安装升级。 这导致应用程序服务器和Db模式更新为新版本。
一旦Db更新正在运行,剩下的应用程序服务器应该以某种方式被通知他们应该停止使用Db,直到他们收到升级。 我不知道有没有已知的解决scheme?
这不能以一般的方式回答。 这取决于应用程序本身以及您正在进行的更改的types。 例如,某些数据库更改不应该影响正在运行的应用程序(如果正确完成),例如将新列添加到现有表或添加新表。 其他人可能会影响像删除现有的列或重命名。
当然,最安全的解决scheme是完全停止应用程序,对应用程序和数据库执行所需的更改,然后再次启动应用程序。 根据您的要求,这可能也可能不可行。
如果不需要或停机时间最短,则必须同时提供两个运行的独立副本。 在保持用户访问第二个副本的同时,在一个副本(应用程序+ DB +任何其他依赖项)上进行升级。 启动第一个副本并将用户redirect到第一个升级后的副本后升级第二个副本。