我编写了一个小 Java 工具来对 NoSQL 数据库进行基准测试。因为我没有足够的计算机,所以我想在 Amazon EC2 中运行基准测试工具和一些数据库节点。
那可能吗?-> 我可以在没有任何进一步配置的情况下在 EC2 中部署 Java 应用程序吗?
谢谢
我编写了一个小 Java 工具来对 NoSQL 数据库进行基准测试。因为我没有足够的计算机,所以我想在 Amazon EC2 中运行基准测试工具和一些数据库节点。
那可能吗?-> 我可以在没有任何进一步配置的情况下在 EC2 中部署 Java 应用程序吗?
谢谢
我可以在没有任何进一步配置的情况下在 EC2 中部署 Java 应用程序吗
是的。如果您正在运行一个典型的 Web 应用程序,您可能会研究 Elastic BeanStalk。但这不适用于基准测试。
EC2 计算机只是计算机,除了手动安装操作系统之外,您可以选择一个预安装的操作系统进行引导,称为 AMI。您可以四处寻找预装了 Java 的映像,但启动您最喜欢的Ubuntu /Fedora/Centos/ AmazonLinux并执行“apt-get install java”或“yum install java”相当容易。
首先,您将把程序上传到盒子并通过 SSH 进行测试。但是,当您启动工作流程时,最好将您的程序上传到 S3,然后让盒子在启动时下载它。(S3 通常比您的上传速度更快,并且更可靠。)
如果您在启动时只有一个“微小”的配置要做,您可以使用cloud-init
. 这将在启动时运行预定义的脚本。(只需在启动时将命令放入 EC2 用户数据配置中。)它可以像 3 个命令一样简单:安装 java、下载我的应用程序、运行我的应用程序。
对于更复杂的操作,您需要使用Chef、Puppet或Ansible来编排多个服务器。
但是对于像您的基准测试这样简单的想法,您可以使用 AWS API 轻松地“自己动手”。使用库(用于 Python 的 Boto,用于 ruby 的 Fog。我确信有几个用于 Java)编写执行以下操作的程序:1)使用安装 NoSQL DB 的 cloud-init 脚本启动实例 2)等待让它获得一个IP。3) 使用配置您的 java 测试程序的 cloud-init 脚本启动另一个实例,并从步骤 2 中传入 IP。 4) 等待它全部运行,然后收集运行信息(或者信息可能存储在 S3 中所以你可以稍后收集它)5)通过终止实例进行清理(它有助于标记它们,这样你就可以更容易地清理)
您可以手动完成所有这些操作,但是当您发现错误时,您需要重新运行所有内容,而自动化将使这一切变得轻而易举。另外,您需要在各种实例大小上重复您的发现。
一旦一切正常,您就可以在运行实际基准测试时切换到现场实例:它们需要更长的时间才能启动,但可以节省大量资金。因此,现场实例对于开发来说很烦人,但非常适合在您不关心启动时间的情况下运行批量测试。
您可以将 EC2 视为一组可以租用时间的计算机。您可以完全控制 EC2 虚拟机,并且可以在其上安装和运行几乎任何您想要的软件,包括数据库服务器和您的 Java 应用程序。
您可能会发现实际的限制是您要花费多少时间来设置它们。你需要注册一个亚马逊账户,设置你的实例,安装一个操作系统,安装数据库服务器,安装你的 java 应用程序,等等......
请参阅http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html开始。