重新设计 Glassfish 集群以与 AWS Auto Scaling 和 ELB 一起使用

重新设计 Glassfish 集群以与 AWS Auto Scaling 和 ELB 一起使用

我正在学习 AWS 解决方案架构师考试。请从这个角度考虑这个问题,这是一个自动作业 :-)

作为可靠性支柱的练习,我正在尝试重新考虑由两个节点组成的 Glassfish 集群,以适应 ELB + 自动缩放组解决方案。

我的想法是只运行一个节点,并在其前面放置一个 ELB。ELB 将连接到主节点和最小容量为零的 Auto Scaling 组。为了更好地解释,主节点不包含在扩展组中,只有新创建的节点包含在内。

问题。

  1. ELB 可以有这样的配置 EC2 Main Node + Auto Scaling Group 吗?
  2. 为了在集群中添加节点,我必须从主节点运行特定的 asadmin shell 命令,我该如何实现这一点?应该通知主节点已添加具有特定 IP(或名称)的另一个节点。
  3. 另一个可能的选择是使用 Elastic Beanstalk,但我暂时不想采用这个选项,因为我必须学习如何使用 beanstalk 以及该解决方案的可行性。
  4. 与问题没有具体关系:如果我可以从新创建的实例运行添加节点命令,我就可以解决所有问题,但我认为这是不可能的。

[更新]

我想自动缩放至零的原因是我也在研究其他考试支柱。为了降低成本,我希望有一个“全职”工作节点和一个仅在警报违规时激活的节点(或更多,具体取决于缩放策略)。

我发现困难的是理解 Glassfish 在这种情况下如何配置,而不是自动缩放如何工作。重点是 Glassfish 需要一个主节点来启动命令“asadmin”。

我知道,并且我广泛使用“用户数据”来处理我的所有实例。但是,例如,自动缩放组仅与启动模板绑定(或不绑定?),我如何区分需要恢复为主节点或集群节点的用户数据。脚本会非常复杂。我不知道我是否说清楚了这一点。

也许,我正在研究的选项是不可行的。

答案1

你的想法

为什么最小值为零?请使用一,或者为了实现高可用性,请使用二。

如果想要高可用性,至少需要两个节点,这样如果一个节点发生故障,系统仍可继续工作,而自动扩展会启动另一台服务器。在自动扩展组之外设置一台服务器,这也不是一般的好做法,据我所知,在这种情况下是不必要的。

问题一

是的,但我看不出这样做有什么好的理由。

问题二

了解“ec2 用户数据”

一般注意事项

这些并不是特别难的问题,但很遗憾,你的答案似乎不太标准,无法帮助你设计出好的架构或通过考试。我建议你至少参加 Linux Academy 的考试,这些课程通常都很好。

更新

如果 GlassFish 需要主节点和工作节点,那么只需拥有两种 AMI 类型和两个自动缩放组。主 GlassFish 节点的最小和最大大小为 1,另一个节点的最小大小为零,您必须根据另一个自动缩放组的负载计算出参数来对其进行扩展。我从未尝试过,但 AWS 中许多复杂的自定义要求的答案通常是“使用 Lambda”。

相关内容