Linux 如何使用相同的配置和安装的软件创建和运行多个ec2实例?

Linux 如何使用相同的配置和安装的软件创建和运行多个ec2实例?,linux,amazon-web-services,ssh,amazon-ec2,rstudio,Linux,Amazon Web Services,Ssh,Amazon Ec2,Rstudio,对于云计算来说是相当陌生的,所以若这个问题是明显的或愚蠢的,请容忍我。有了互联网上的大量信息,我成功地创建了一个EC2Linux实例,并在其上安装了R和Rstudio。在上面运行我的脚本,运行得非常好,但是花费了太长的16小时,而且非常昂贵,因为我需要具有高内存和vCPU的实例 在我的程序中,我基本上为不同的数据集运行相同的脚本 我的问题是,是否有任何方法可以在安装了完全相同的软件和脚本的情况下运行多个类似的ec2实例。因此,通过这种方式,我将能够在一个单独的实例上同时在每个数据集上运行脚本,时

对于云计算来说是相当陌生的,所以若这个问题是明显的或愚蠢的,请容忍我。有了互联网上的大量信息,我成功地创建了一个EC2Linux实例,并在其上安装了R和Rstudio。在上面运行我的脚本,运行得非常好,但是花费了太长的16小时,而且非常昂贵,因为我需要具有高内存和vCPU的实例

在我的程序中,我基本上为不同的数据集运行相同的脚本

我的问题是,是否有任何方法可以在安装了完全相同的软件和脚本的情况下运行多个类似的ec2实例。因此,通过这种方式,我将能够在一个单独的实例上同时在每个数据集上运行脚本,时间更短

所以我到目前为止已经尝试过了。我已经为我现有的实例创建了一个AMI映像并启动了它。但我无法SSH它,因为它有奇怪的用户名和ip地址,比如root@10.0.0.1. 我可以看到两个实例都在运行original和AMI映像实例,我可以SSH到original,但不能到另一个。我能够登录到端口8787上原始实例的RStudio

另一个问题是如何使用SSH Putty与原始实例并行地启动这个AMI映像实例。在这种情况下,如果我在浏览器RStudio中同时使用这两个选项,会导致什么问题

请帮我做这个!谢谢

问题:在一个学校项目中,我在相当大的数据上运行了几种机器学习算法,这些数据恰好需要30-35GB的内存,我的电脑无法处理。我用的是R/RStudio。所以,我求助于AWS来解决我的内存限制问题

我最初做的是:我创建了一个ec2实例,安装了R/RStudio。一切都很顺利,我可以通过浏览器在RStudio上运行我的程序。实际上,我在这个AWS实例上的一个非常小的数据集上运行了我的脚本,以了解情况。令我大吃一惊的是,即使使用这个小数据集,整个脚本也需要很长时间才能运行。很快,我意识到,我的程序中的所有这些算法都可以为同一组功能独立运行,只需在脚本中稍加调整

所以,我决定和AWS玩一点。我重新创建了程序,这样除了每个脚本中的学习算法外,所有内容都保持不变。换句话说,我想用不同的算法同时运行这些程序的副本,这样我就可以同时运行所有程序,并在更短的时间内产生结果

现在,我的目标是运行这个实例原始实例的多个副本。我应该能够在我的浏览器上为每个实例运行RStudio,例如,5个ec2实例将在浏览器的不同选项卡上同时运行5个RStudio。这样,我就可以在浏览器上为每个实例运行所有RStudio

然后,我创建了这个实例的镜像AMI,然后我从AMI创建了多个实例,但是我在从AMI创建这些新实例时遗漏了几点,这导致了我在上面的问题中提出的问题

我最初怀疑它与端口8787有关,可能无法在浏览器中为每个ec2实例运行多个RStudio。然而,这根本不是问题所在

当您从AMI创建新实例时,很少有非常重要的事情需要注意

错误:当从这个AMI创建新实例时,我没有正确选择两个重要的东西,即VPC和安全组

正确的方法是:

VPC-在配置实例详细信息页面上:

a。单击网络下拉列表并选择为原始实例创建的VPC。原始实例是用于创建AMI映像的实例

b。单击自动分配公共IP下拉列表并选择启用

安全组-在“配置安全组”页面上:

a。对于“指定安全组”选项,请勾选“选择现有安全组选项”

b。如果列表中有多个安全组,请选择为原始实例创建的安全组或创建新的安全组,并确保其具有相同类型的入站和出站端口访问

一旦我设置了这个,正如Marc B在评论中提到的,每个实例都有自己的IP地址,并且还分配了一个本地子网地址

实例的IP地址看起来像:ec2-33-444-22-111.us-west-1.compute.amazonaws.com

子网看起来像:127.0.0.35

现在,在了解了这一点之后,我从我的AMI中重新创建了5个实例。现在,我有5个RStudio实例。所有这些都运行得非常好,因为我能够用SSH连接到它们中的每一个

现在我想我应该能够在浏览器的不同选项卡中使用这些实例,并在其中运行脚本。但我想 无法登录到“我的浏览器”选项卡中的所有RStudio实例。其中只有一个可以正常工作,其他的浏览器不能正常工作。然而,我能够从PuTTY用SSH连接到所有这些文件中。我也可以从Linux SSH运行脚本,但我想使用RStudio运行它们

在花了大量的时间之后,我发现了一个问题,除了第一个实例之外,linux中的每个ec2实例都需要手动启动RStudio服务器

除了在浏览器上正常工作的一个ec2实例外,我还执行了以下操作来手动启动RStudio服务器,如下所示:

SSH使用腻子

成为根:sudo su

转到我的Linux实例上安装RStudio的路径:cd/usr/lib/RStudio server/bin

使用以下命令启动RServer:rstudio server start

现在回到浏览器,打开另一个选项卡并使用ec2实例地址和端口号。现在,您也应该获得这个实例的RStudio登录页面

现在,通过一个类似的过程,我必须为所有其他实例手动运行RStudio服务器,以便能够通过浏览器访问它们。然后我想,如果有办法在每次Linux启动时启动RStudio服务器。然后想出了一个解决办法。为此,我对Linux的一个配置文件进行了如下更改:

成为根:sudo su

转到以下路径:cd/etc/rc.d

vi打开文件rc.local并添加以下命令:

/usr/lib/rstudio服务器/bin/rstudio服务器启动

保存所做的更改

关闭SSH连接

然后,我回到AWS控制台,停止这个实例并创建它的AMI映像。现在,上述更改将对我从该AMI创建的每个实例生效,即,一旦实例启动,RStudio服务器将立即启动,并可通过浏览器访问


现在,我可以使用浏览器的不同选项卡使用多个RStudio实例。确保您在浏览器中使用了正确的实例地址。所有端口号保持不变,即8787

您只需找出从AMI启动的实例不起作用的原因。您应该能够创建一个实例的AMI,然后根据需要从该AMI启动任意多个新实例,并且每个实例本质上都应该是原始实例的副本。关于你的最后一段,你提到的这些事情都不是问题,你只是在运行不同的服务器,这些服务器碰巧安装了相同的软件。@标记B,这样新的实例映像将具有与原始映像不同的公共IP。由于新实例的描述字段中的公共DNS和公共IP字段为空,我想知道这是否是问题所在。当然,每个实例每个服务器都有不同的IP地址。我不知道你说的是什么意思。这对你来说是不是有什么问题?从AMI创建新实例的问题真的不清楚,而且你似乎混淆了基本上是备份或快照的Amazon机器映像和运行服务器的AWS EC2实例。谢谢@Mark B:我刚刚学到了我的错误,我对我在学习AWS时的一些疏忽感到有点尴尬。我会用答案编辑我的帖子,你也可以把它作为答案发布。