【发布时间】:2011-09-18 04:11:00
【问题描述】:
我使用分布式 erlang 应用程序付费。
配置和想法取自:
http://www.erlang.org/doc/pdf/otp-system-documentation.pdf 9.9。分布式应用程序
- 我们有 3 个节点:n1@a2-X201、n2@a2-X201、n3@a2-X201
- 我们有应用程序 wd 可以做一些有用的工作:)
配置文件:
- wd1.config - 对于第一个节点:
- 第二个的wd2.config:
- 对于节点 n3 看起来很相似。
现在在 3 个单独的终端中启动 erlang:
- erl -sname n1@a2-X201 -config wd1 -pa $WD_EBIN_PATH -boot start_sasl
- erl -sname n2@a2-X201 -config wd2 -pa $WD_EBIN_PATH -boot start_sasl
- erl -sname n3@a2-X201 -config wd3 -pa $WD_EBIN_PATH -boot start_sasl
在每个 erlang 节点上启动应用程序: * 应用程序:开始(wd)。
(n1@a2-X201)1> 应用程序:开始(wd)。 =信息报告==== 2011 年 6 月 19 日::15:42:51 === wd_plug_server 开始... PluginId: 4 路径: "/home/a2/src/erl/data/SIG" FileMask: "(?i)(.*)\\.SIG$" 好的 (n2@a2-X201)1> 应用程序:开始(wd)。 好的 (n2@a2-X201)2> (n3@a2-X201)1> 应用程序:开始(wd)。 好的 (n3@a2-X201)2>目前一切正常。正如 Erlang 文档中所写:应用程序正在节点 n1@a2-X201
上运行现在杀死节点n1: 应用程序已迁移到 n2
(n2@a2-X201)2> =信息报告==== 2011 年 6 月 19 日::15:46:28 === wd_plug_server 开始... PluginId: 4 路径: "/home/a2/src/erl/data/SIG" FileMask: "(?i)(.*)\\.SIG$"继续我们的游戏:杀死节点n2 再一次系统工作正常。我们在节点 n3
有我们的应用程序 (n3@a2-X201)2> =信息报告==== 2011 年 6 月 19 日::15:48:18 === wd_plug_server 开始... PluginId: 4 路径: "/home/a2/src/erl/data/SIG" FileMask: "(?i)(.*)\\.SIG$"现在恢复节点 n1 和 n2。 所以:
Erlang R14B (erts-5.8.1) [来源] [smp:4:4] [rq:4] [async-threads:0] [hipe] [kernel-poll:false] Eshell V5.8.1(使用 ^G 中止) (n1@a2-X201)1> Eshell V5.8.1(使用 ^G 中止) (n2@a2-X201)1>节点 n1 和 n2 又回来了。
看起来现在我必须手动重新启动应用程序:
* 我们先在节点 n2 做:
- 看起来像是被吊死了……
- 现在在 n1 重新启动它
它有效。并且节点 n2 也返回了 OK:
Eshell V5.8.1(使用 ^G 中止) (n2@a2-X201)1> 应用程序:开始(wd)。 好的 (n2@a2-X201)2>在节点 n3 我们看到:
=信息报告==== 2011 年 6 月 19 日::15:55:43 === 应用:wd 退出:停止 类型:临时总的来说,一切看起来都不错,如文档中所述,除了在节点 n2 处启动应用程序的延迟。
现在再次杀死节点n1:
(n1@a2-X201)2> 用户切换命令 --> q [a2@a2-X201 发布]$操作……一切都挂了。应用程序未在其他节点重新启动。
实际上,当我写这篇文章时,我意识到有时一切都好,有时我有问题。
任何想法,虽然在恢复“主”节点并再次杀死它时可能会出现问题?
【问题讨论】:
-
好问题:很多票但没有答案:)
标签: erlang erlang-otp