【问题标题】:How do i get started with Amazon Web Services for this scenario?在这种情况下,我如何开始使用 Amazon Web Services?
【发布时间】:2014-06-25 15:03:04
【问题描述】:

我习惯于拥有可以通过 ssh 使用的远程服务器,但我正在考虑将 Amazon Web Services 用于一个新项目,以便以更低的成本为我提供更好的性能和弹性,但我很难理解如何使用它。

这就是我想做的:

第一次:

  • 创建 Postgres 数据库
  • 连接到亚马逊服务器
  • 下载代码到服务器

每月一次:

  • 将大数据文件下载到服务器
  • 运行代码(用 python 编写)以加载数据库数据
  • 运行代码(用 Java 编写)以根据数据库中的数据创建 Lucene 搜索索引文件

连续:

  • 在 servlet 容器中运行 Java 代码,这将使用 lucense 搜索索引文件,但不需要访问数据库。

注意:从技术上讲,我可以在本地创建数据库填充,问题是生成的 lucene 索引文件大约为 5GB,而且我没有足够好的 Internet 连接 将该大小的文件上传到亚马逊。

到目前为止,我所做的只是创建一个 Postgres 数据库,但我不明白如何连接到它或获得与我的服务器的 ssh/telnet 连接(我请求了直接连接,但这似乎是不同的服务)。

目前更新

仅供参考:

  • 所以我使用 RDS 创建了一个 Postgres 数据库
  • 我使用 EC2 创建了一个 Ubuntu linux 安装
  • 我使用 ssh 连接到 linux 安装
  • 我安装了所需的软件(使用 apt-get)
  • 我将数据文件下载到我的 linux 安装中

我认为根据安装应该能够从我的 EC2 实例甚至从我的本地计算机连接到我的 Postgres 数据库但是在这两种情况下它都会超时

* 更新 2 **

可能与安全有关,但我终其一生都无法理解我对安全组的意义,以及为什么他们不能让 EC2 实例默认与我的数据库通信。

我检查过 RDS 和 EC2 都具有相同的 vpc id,并且两者都在同一个可用区中。 Postgres 正在使用端口 5432(不是 3306),但还不能访问它。因此,以我的工作 EC2 实例为起点,我是否应该在创建数据库之前创建一个新的安全组,如果是,我需要在其中输入什么值,以便我可以在我的 ec2 ssh 会话中使用 psql 访问数据库 - 就是这样现在所有阻碍我的事情以及我需要做的所有事情

* 更新 3 *

最后我可以访问我的数据库,我的数据库有三个安全组(我认为另外两个是在我创建一个新的 EC2 实例时创建的)我删除了其中两个,并在其余的入站选项卡上设置了规则到

  • 所有流量
  • 端口 0-65535
  • 所有协议
  • IP地址0.0.0.0/0

(出站标签已经有相同的规则)并且有效!

我意识到这不是最安全的设置,但至少是它的进步。

我假设只允许从我的 EC2 实例访问我可以更改入站规则的 IPAddress,但我不知道如何计算 ipaddress 的 CIDR?

我的新问题是我的数据文件已成功下载到我的 EC2 实例,但我无法解压缩它,因为我没有足够的磁盘空间。我假设我必须使用 S3 我已经创建了一个存储桶,但是我如何让它在我的 EC2 实例中作为磁盘空间可见,这样我就可以

  • 将我的数据文件移到其中
  • 将数据文件解压到其中
  • 针对解压缩的数据文件运行我的代码以加载数据库

(请注意,数据文件是 Xml 格式,必须使用自定义代码进行处理才能将其放入数据库,它不能直接使用某些通用工具加载到数据库中)

更新 4

S3 对我来说是错误的解决方案,我可以使用 EBS,它基本上是磁盘存储,不是作为服务访问,而是通过单击 EC2 控制台中的卷。确保在与实例相同的可用区中创建卷,每个位置可能有多个,例如我的 EC2 实例是在 eu-west-1a 中创建的,但我第一次创建卷时是在 eu-west- 1b,因此无法使用。

然后将卷附加到实例

但我无法从 linux 命令行看到音量,似乎还有其他要求。

更新 5

好的,必须格式化磁盘并将其安装在 linux 中才能正常工作 我现在有用于将数据上传到数据库的代码,但它的运行速度非常慢,比我家里的廉价本地服务器慢得多。我猜是因为数据一次加载一条记录,瓶颈不是微数据库而是我的微实例,看起来我需要用更昂贵的实例重做

更新 6

更新到大型 Computative 实例仍然很慢。我现在认为问题是服务器和数据库之间的网络延迟可能需要将 postgres 服务器直接安装到我的实例上以删除该部分。

【问题讨论】:

  • 好吧,首先,我告诉你亚马逊网络服务很棒。但是祝你好运,它是相当复杂的
  • 这个问题是题外话,你最好在Server Fault提问。
  • @Austin100 我认为开发人员(堆栈溢出)比系统管理员(服务器故障)更感兴趣这个问题

标签: java python amazon-web-services amazon-ec2


【解决方案1】:

第一次:

创建一个 Postgres 数据库 - 根据大小(小或大),可能需要 RDS 或 Redshift 连接到亚马逊服务器 - EC2 将代码下载到服务器 - 将您的程序上传到 S3 存储桶 每月一次:

将大数据文件下载到服务器-将数据移动到S3,如果使用redshift数据可以直接从s3加载到redshift

运行代码(用python编写)以加载数据库数据 运行代码(用 Java 编写)从数据库中的数据创建一个 Lucene 搜索索引文件 - 可能想用这个来查看 EMR 连续:

在 servlet 容器中运行 Java 代码,这将使用 lucense 搜索索引文件,但不需要访问数据库 - 如果您有 java WAR 文件,则可以使用 Elasticbean stalk 托管它

为了连接到您的数据库,您必须确保安全组允许此连接,并且对于 ec2,您必须确保端口 22 对您的 IP 开放以连接到它。听起来 RDS 的安全组没有开放 3306 端口。

【讨论】:

  • 请对问题发表评论,我会给出答案。
  • 谢谢,我已经添加了更多信息,我当前的问题是连接到 db,您能否详细说明如何配置正确的安全组。
  • 我现在遇到了 S3 和 EC2 的问题,请您帮忙
  • 似乎我应该使用 EBS 增加实例可用的磁盘空间,但 EBS 未在 Amazon 控制台中列出?
  • 查看控制台的 EC2 部分。在左侧弹性块存储卷。可能无法调整大小,可能需要重新装一个更大的
猜你喜欢
  • 2017-06-21
  • 1970-01-01
  • 2011-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
相关资源
最近更新 更多