Amazon EC2实例之间的通信最佳实践是什么?

5

我正在为即将展开的项目设置Amazon EC2实例。它们全部是运行Ubuntu Server 64bit的微型实例。以下是我迄今为止所设置的内容:

  • Web服务器 -- Apache
  • 数据库服务器 -- MySQL
  • 开发服务器 -- Apache & MySQL
  • 文件服务器 -- SVN & Bacula(备份存储在S3 bucket中)

目前只有一个Web服务器,但最终会有更多。

我的第一个问题是,Amazon EC2实例之间通信的最佳、最安全方式是什么?目前我正在使用SSH,这是最好的方法吗?

根据Amazon的说法,使用弹性IP地址相互通信的实例将收取数据传输费用。然而,使用私有IP地址进行通信的实例可以免费进行此操作。不幸的是,如果实例停止并重新启动,则私有IP可能会更改。

那么我的第二个问题是,如果Amazon实例的私有IP不是静态的,你如何利用它们?

我知道实例可能不会非常频繁地停止和启动,但是如果IP地址存在于各种配置文件中,必须逐个更改它将会很麻烦。

我主要关心Web服务器,它将需要访问数据库服务器和文件服务器,后者在执行备份时将需要访问所有实例。

注意: 我以前从未使用过Bacula,并且还没有设置它,但我假设它将需要客户端的IP地址才能备份它们。

ServerFault是发布此问题的更好选择吗?

1个回答

3

这可能更适合在ServerFault上讨论,但我仍会回答。

克服内部IP地址动态性的最简单方法是在集群中运行一个私有DNS服务器。我的环境使用Windows VMs,因此我们设置了一对AD来提供DNS服务(以及集中式VM登录认证)。每台机器都是域的成员,并将其DNS指针设置为每个AD单元(主和备份),当动态内部IP更改时,它会自动向DNS服务注册 - 因此,而不是通过公共IP(例如79.125.x.x)引用其他VM,这会产生数据传输成本,或者通过内部IP(例如10.44.x.x),可以在重新启动时更改,他们使用一个持久的DNS名称(例如mydomain.dbserver01)。

我们在内部和外部数据交换中都使用加密通信 - 记住,云VM从定义上来说比公司防火墙内的任何东西都不安全,因此您应该在其安全配置方面进行更多投资。我们的政策是,云VM应配置得比我们企业内部等效的VM更安全。


使用DNS是一个有趣的想法。我理解它在本地网络上的工作原理,但我对它在云中如何工作还有点模糊。--我猜DNS必须是本地的(不在云中),这样它的IP才能是静态的。 - ks78
关于加密,你有什么建议?我同意,在云上运行的任何东西都应该尽可能地安全。 - ks78
不,DNS并非本地 - 您需要在云虚拟机上设置DNS服务(可以是专用的或与其他服务共享)。这将成为您的“始终开启”状态中心,所有其他云虚拟机都会引用它进行机器名称查找(当然还会注册自己的名称)。理想情况下,您应该有两个中心,以便如果主要中心出现故障,您可以使用次要中心来接管,同时修复第一个中心。加密:- SSL到目前为止一直表现良好。 - Eight-Bit Guru

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接