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

How to create and run multiple ec2 instances with same configurations and software installed?

对云计算还很陌生,如果问题很明显或很愚蠢,请耐心等待。借助 Internet 上提供的大量信息,我能够成功创建一个 ec2 linux 实例并在其上安装 R 和 Rstudio。 运行 我的脚本运行得非常好,但花费的时间太长(16 小时)而且非常昂贵,因为我需要具有高内存和 vCPU 的实例。

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

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

到目前为止我已经尝试过了。我已经创建了现有实例的 AMI 映像并启动了它。但我无法通过 SSH 连接它,因为它的用户名和 IP 地址很奇怪,类似于 "root@10.0.0.1"。我可以看到两个实例都是 运行ning(原始实例和 AMI 映像实例),我可以通过 SSH 连接到原始实例,但不能连接到另一个实例。我能够在端口 8787 上登录 RStudio 以获取原始实例。

另一个问题是如何使用 SSH (Putty) 与原始实例并行启动此 AMI 映像实例。如果我在浏览器(本例中为 RStudio)中同时使用它们会导致什么问题?

请帮我解决这个问题!谢谢!

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

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

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

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

然后,我创建了这个实例的映像 (AMI),然后我从 AMI 创建了多个实例,但是 我在从 AMI 创建这些新实例时遗漏了一些点,这导致了我的问题在上面的问题中被问到.

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

从 AMI 创建新实例时,几乎没有什么非常重要的事情需要注意。

错误: 在从此 AMI 创建新实例时,我 没有 select 正确地处理了两件重要的事情,即 VPC和安全组。

正确的方法是:

VPC -- 在 "Configuration Instance Details" 页面上:

一个。单击 "Network" 下拉菜单和 select 为原始实例创建的 VPC。 (原始实例是用于创建 AMI(映像)的实例)

b。单击 "Auto-assign Public IP" 下拉菜单和 select 启用

安全组 -- 在 "Configure Security Group" 页面上:

一个。对于 "Assign a security group" 选项,勾选 "Select an existing security group" 选项

b。如果列表中有多个安全组,那么 select 为原始实例创建的安全组(或者创建一个新的安全组并确保它具有相同类型的入站和出站端口访问权限)

设置好后,正如 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 服务器,如下所示:

  1. 使用 PuTTY 的 SSH

  2. 成为root:sudo su

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

  4. 使用此命令启动 RServer:rstudio-server start

现在返回浏览器,打开另一个选项卡并使用您的 ec2 实例地址和端口号 (http://ec2-33-444-22-111.us-west-1.compute.amazonaws.com:8787)。现在您也应该获得此实例的 RStudio 登录页面。

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

  1. 成为root:sudo su

  2. 转到这条路径:cd /etc/rc.d

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

    /usr/lib/rstudio-server/bin/rstudio-server start

  4. 保存所做的更改。

  5. 关闭 SSH 连接

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

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