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

我已经为即将到来的项目设置了Amazon EC2实例。 他们都是微型实例,运行Ubuntu Server 64bit。 这是我迄今为止设置的:

  • Web服务器 – Apache
  • 数据库服务器 – MySQL
  • 开发服务器 – Apache和MySQL
  • 文件服务器 – SVN&Bacula(备份完成到S3桶)

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

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

根据亚马逊,使用其弹性IP地址进行通信的实例将收取数据传输费用。 但是,使用其私有IP地址进行通信的实例可以免费进行。 不幸的是,如果实例停止并重新启动,则显示私有IP更改。

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

我知道这些实例很可能不会被停止并开始非常频繁的使用,但是如果IP地址在不同的configuration文件中,那么通过全部的configuration文件进行修改将是一件痛苦的事情。

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

注意:我以前从未使用过Bacula,也没有安装它,但是我假设它需要客户端的IP地址来备份它们。

查看Eric Hammond的文章,解释如何在EC2中使用弹性IP地址。 此方法不会产生任何带宽费用,因为从EC2内parsing弹性IP地址(通过名称)返回私有IP地址。

http://alestic.com/2009/06/ec2-elastic-ip-internal

对于更多的select,我有一个文章审查几个备选scheme:

http://shlomoswidler.com/2010/06/track-changes-to-your-dynamic-cloud-services-automatically.html

将您的EC2实例部署到AWS虚拟私有云(VPC)中。 当您configuration您的VPC时,您将分配CIDR给VPC中的所有EC2实例,并且内部IP将是静态的。

  • 最安全的通信方式

SSH是在不同服务器之间传输数据的一个非常好的方法,但是如果你正在寻找永久连接(比如数据库),你可以使用任何types的encryption隧道软件,比如stunnel

  • 非静态私有IP

由于无法拥有静态私有IP,所以可以使用某种types的自动服务器部署,可以使用mcollective,capistrano或func等多种工具将您的新实例注册到中央指定服务器,并生成多个操作基于此的机器