6

如果我有多个用 Erlang 编写的 Web 服务器运行(负载平衡)并且 Mnesia 用于后端数据库,那么将整个系统升级到更新版本的最佳方法是什么?

4

2 回答 2

4

尽管 Erlang 支持热代码加载,但它不是必须使用的。在您的情况下,从负载均衡器中删除一个节点似乎更容易,重新启动它运行新代码并将其放回负载均衡器。

如果您想在您的实时系统中热升级到新的 Erlang/OTP 版本,那么您必须准备好关闭节点。

但对你来说真正冒出来的问题是那些来自失忆症的担忧。我认为您应该提出一个新问题,具体说明希望 mnesia 做什么。如果没有架构/表更改,并且您只想关闭一个节点并稍后添加它。或者,如果您实际上是在表中引入新表或新列。Mnesia 确实提供了通过表副本添加和删除节点的能力,并且它还相当独特地支持通过mnesia:transform_table/3,4.

于 2009-07-25T12:50:19.180 回答
1

如果您只是在进行代码升级,我写了一篇关于使用 fab 处理 erlang 发布的文章。使用此设置,您可以进行实时代码加载,而无需重新启动节点。但是,转换数据库应该从单个节点完成,与版本升级分开触发。

于 2009-07-25T22:33:53.973 回答