0

我一直在尝试使用 Vert.x 高可用性功能来测试水平可伸缩性和弹性。我有一个基于 Hazelcast 的几个节点的集群。我正在通过 HTTP API 在任何节点上创建 Verticle。Verticles 在HA创建时设置了标志。

测试可扩展性

如果我的n节点Nn加载了 HA-verticles,并且如果我添加了一个额外的节点,则没有从新Nn节点上的节点迁移的 Verticle,以便平衡负载。有没有办法告诉 Vert.x 这样做,或者不这样做?我相信这不是那么简单...

测试弹性

如果我有加载了 HA-verticles 的n节点Nn并且我杀死了其中一个节点,那么来自该节点的所有 verticles 都会被迁移,但会迁移到剩余节点中的一个节点上,该节点并不总是负载最少的节点。该目标节点可能会过载,整个集群将面临冻结或崩溃的风险。和以前一样的问题:有没有办法强制Vert.x 在所有节点上平衡重新启动的 verticles,或者至少在负载最少的节点上平衡?

4

1 回答 1

1

你的观察是正确的,没有办法:

  • 将来自故障节点的顶点分布到其余节点上
  • 防止在已经加载的节点中启动verticles

改进 HA 功能不在 Vert.x 路线图中。

如果看起来您需要的不仅仅是基本的故障转移,我建议使用专门的基础设施工具,这些工具可以利用来自监控系统的信息并根据需要启动/停止新节点。

于 2020-07-20T08:59:23.357 回答