在Amazon EC2上为Java Web应用程序构建简单,可扩展的集群的最佳实践

时间:2010-03-31 11:48:29

标签: java scalability amazon-web-services cluster-analysis

我想构建一个Java Web应用程序并将其部署在 EC2 上。它将用Java编写,并将使用MySQL。我希望得到一些关于实际部署过程和配置的指示。特别是我对以下主题感兴趣:

  • 机器图像(DIY与现成品相比)
  • mysql复制并备份到 S3
  • 在不中断的情况下将应用部署和重新部署到 EC2 的方式
  • 防火墙?
  • 负载平衡和自动缩放
  • cloudtools(或替代工具)

1 个答案:

答案 0 :(得分:2)

我只能根据经验谈谈你的一些讨论要点。我不得不删除各种亚马逊产品的超链接,因为我是Stackoverflow的新手,并且没有足够的代表来发布多个链接。

机器图片虽然您可以从自己的机器映像开始并使用EC2 AMI工具将其转换为AMI,但我更喜欢从亚马逊的现成图像开始,并根据其自定义图像进行定制我的需要。这里的优势在于您已经知道基础映像将部署,您更有可能在论坛或EC2员工处获得帮助,并且您不必经历设置物理机器或您自己的VM,以捆绑图像并上传它。如果您使用的是EC2 API工具,则可以使用ec2-describe-images -o amazon获取可用基本图片的列表。

MySQL复制和备份:查看新的(ish)Amazon Relational Database Service。它旨在与MySQL配合使用,可以执行自动备份,并可轻松扩展。

防火墙:使用API​​工具可以轻松处理实例的防火墙。例如,您可以创建一个组

ec2-add-group condor –d “Condor Workers”

为该组设置防火墙规则(错误示例 - 打开CIDR范围的所有UDP和TCP端口),

ec2-authorize condor -P tcp -p 0-65535 -s 129.127.0.0/16
ec2-authorize condor -P udp -p 0-65535 -s 129.127.0.0/16

然后将您的实例作为组的一部分启动,以便它们继承防火墙规则。

ec2-run-instances ami-12345678 –g condor –k mykeypair

棘手的部分是向另一个方向发展 - 允许您的EC2实例与您的公司/学校/个人网络进行通信。由于您不知道实例在启动之前将具有哪些IP(Amazon Elastic IP可以在某种程度上缓解这种情况),因此您通常被迫允许EC2云的某个子网。

您还可以在实例上设置Iptables或其他防火墙。

负载平衡:考虑Amazon Elastic Load Balancing。如果这不符合您的需求,您可以创建自己的“虚拟集群”并使用您喜欢的任何框架。