Jakarta ee 使用MySQL为Java EE web应用程序配置Amazon云

Jakarta ee 使用MySQL为Java EE web应用程序配置Amazon云,jakarta-ee,amazon-ec2,amazon-web-services,amazon-rds,amazon-ebs,Jakarta Ee,Amazon Ec2,Amazon Web Services,Amazon Rds,Amazon Ebs,在我的工作中,我需要将一些现有的企业Java应用程序迁移到AWS。我已经浏览了aws.amazon.com上的许多页面,也用谷歌搜索了足够多的内容。此外,我还试图在stackoverflow上浏览所有相关问题。所有这些都让很多事情变得清晰,但我仍然有些困惑。以下是我们的应用程序结构: 它是一个基于Spring的应用程序,使用SpringMVC作为表示层,使用普通Java接口和类来处理业务和数据逻辑 MySQL用于持久性 因此,应用程序架构非常简单。然而,关键是我们需要部署此应用程序的许多实例。此

在我的工作中,我需要将一些现有的企业Java应用程序迁移到AWS。我已经浏览了aws.amazon.com上的许多页面,也用谷歌搜索了足够多的内容。此外,我还试图在stackoverflow上浏览所有相关问题。所有这些都让很多事情变得清晰,但我仍然有些困惑。以下是我们的应用程序结构:

  • 它是一个基于Spring的应用程序,使用SpringMVC作为表示层,使用普通Java接口和类来处理业务和数据逻辑
  • MySQL用于持久性
  • 因此,应用程序架构非常简单。然而,关键是我们需要部署此应用程序的许多实例。此计数当前为15,可以超过30。还有一点是,所有这些实例共享一个公共数据库

    现在,我们需要通过转移到AWS来实现以下目标:

  • 应用程序具有更高的容错能力。最近,我们在专用主机中遇到服务器/电源故障,导致数小时停机
  • 在响应时间和吞吐量方面,应用程序的所有实例都具有更高的性能
  • MySQL具有更高的容错性。最近,由于某些硬件(硬盘)的原因,我们的一台服务器上的应用程序实例出现故障,这基本上导致MySQL意外停止。硬盘上的整个文件系统变为只读,导致该服务器上承载的应用程序实例出现故障
  • 明显降低了基础架构管理的总成本和开销
  • 就我目前所能理解的AWS基础设施而言,以下是我们在AWS中进行设置所需的内容:

  • 4个实例,每个实例承载大约10个应用程序实例,其中一些基于EBS的LINUX AMI上安装了Tomcat和MySQL
  • 我猜,对于这4个实例中的每一个,总共8个实例,我们还需要1个实例来进行容错
  • 所有服务器实例都有大约160GB的EBS
  • 4个弹性IP
  • 4个弹性负载平衡器
  • 其他东西,比如快照等等
  • 下面是我的问题:

  • 考虑到EBS由AWS自动备份,并且在硬件出现故障时,它们将为新的EBS提供相同的数据,我真的需要为每个主服务器实例提供额外的服务器实例(用于容错)

  • 在上述场景中,如何在所有服务器实例(4x2)之间共享数据库?我看到的一个选择是在这些服务器实例之间实现MySQL集群。比方说,MySQL集群将包含1个管理节点、3个SQL节点和4个数据节点。然而,在这种情况下,维护集群将是我们额外的开销,这可能不被接受,因为我们希望摆脱基础设施管理

  • 我是否需要为数据库使用RDS,并从所有服务器iNtance(4x2)中删除MySQL实例?如果是,除了EC2实例之外,我是否还需要购买RDS实例(我认为,如果我需要为RDS购买单独的实例,那么整个基础设施的成本将至少增加75%),或者RDS实例还提供用于应用程序开发的计算单元,从而减少应用程序部署的实例总数

  • 在RDS实施的情况下,是否真的需要基于EBS的EC2实例?如果我们能够在RDS实例就位的情况下,从EC2实例中删除一些EBS需求,我们就可以降低总成本


  • 非常感谢您的帮助,如果我不清楚我的问题,并且需要更多的澄清,请告诉我。

    我不是基础设施专家,但我在AWS方面有一些经验,我希望我至少可以帮助您解决一些问题。我的背景不允许我就基础设施的规模向您提供任何建议,但我可以就基础设施的类型提供建议。
    首先,我肯定会选择EBS。除了在物理上与应用服务器分离外,它还具有高可靠性和高可用性。我可以告诉你,它救了我好几次。虽然我说过我不会告诉您任何关于大小的信息,但我认为您不需要额外的4个“容错”实例,但也许您可以保留一些2个实例,以备万一

    关于您的数据库,您一定要继续使用RDS for MySQL(http://aws.amazon.com/rds/mysql/). 它们为您提供了预先配置的节点、自动修补、自动备份、自动复制和一键扩展,而且价格很低。MySQL的所有这些特性都已经准备好了。您还可以使用指标和监控,这一切都包括在内。RDS不提供计算单元,但在AWS中将它们分开是一种很好的做法。您还可以设置4个EC2 Tomcat节点+2个RDS节点。这只是大小问题:)

    如果您已经阅读过Amazon弹性负载平衡,那么它看起来非常适合您的解决方案。您可以将一些EC2节点附加到每个ELB节点,而不必考虑负载平衡。它可以正常工作,如果需要,还可以配置粘性会话。虽然我不知道您应该选择多少ELB节点,但请注意一个问题:您只能将来自同一地理区域(例如美国东海岸)的EC2节点添加到同一ELB。例如,在西海岸的一只雄猫和东海岸的另一只雄猫之间,不可能平衡流量。如果您选择将节点分布到多个区域,则需要在Amazon之外提供另一个LB解决方案

    我最后的建议是:继续使用基于ELB+EBS的EC2+RDS。它将大大简化您的监视、部署和维护,而且成本往往要低得多。您可能更清楚需要多少种节点,但不要害怕错过,因为在AWS上升级或缩小infra非常容易。

    I wou