我有一个在基于 Amazon EC2 Linux 的实例上运行的网站,并映射到常规域名 (x.com)。该站点与第二个 EC2 实例上的数据库对话。
我需要关闭这个实例并增加它背后的计算能力……如果我这样做,需要多长时间,然后当我再次启动机器时,我的网站会重新上线吗?IP 地址、DNS 信息等都将被保留,以便域名继续工作,并且仍然能够与数据库对话吗?
仅供参考,这是我目前在 AWS EC2 信息面板中看到的 Web 服务器的内容(确切的 IP 地址略有变化,但你明白了):
Public DNS: ec2-54-1-1-1.us-west-1.compute.amazonaws.com
Private DNS: ip-10-1-1-1.us-west-1.compute.internal
Private IPs: 10.1.1.1
停止和启动 EBS 启动实例与简单地重启实例非常相似,但有一些例外,最值得注意的是:
该实例被分配了一个新的内部 IP 地址。
该实例被分配了一个新的公共 IP 地址。
如果该实例不在 VPC 中,则任何弹性 IP 地址都将与该实例解除关联。
临时存储(通常在 /mnt 下)的所有数据都丢失了
还有一些我在本文中描述的计费和可用性影响:
VPC 实例的行为略有不同,包括通过停止/启动保持弹性 IP 地址。
如果您将一个实例用作数据库服务器并且您希望使用内部 IP 地址连接到它(更便宜、更快)并且您不想在停止/启动后重新配置数据库客户端,那么您可以分配实例的弹性 IP 地址并使用外部弹性 IP DNS 名称。在您将弹性 IP 地址重新关联到重新启动的实例后,这将解析为当前的内部 IP 地址,并且您的客户端将从他们中断的地方继续。
我在本文中详细介绍了这种方法:
正如您所预料的那样,停止/启动是更改为您的实例供电的硬件的一种简单方法。我在这篇文章中写了这个以及一些说明和警告:
对于您的特定情况,我建议为实例分配一个弹性 IP 地址,并将您的 DNS 更改为使用 CNAME 指向外部 DNS 名称的弹性 IP 地址。您可以在停止/启动后立即执行此操作,或者您可以提前执行此操作以确保在停止/启动之前一切正常。
所以,看起来你没有使用弹性 IP,正如我从你的信息中看到的那样。
我相信您必须在 DNS 中使用 CNAME 来指向此实例。如果您重新启动机器,则此
ec2-54-1-1-1.us-west-1.compute.amazonaws.com
DNS 名称将更改并且您的站点将停止工作。就内部 IP 而言,它也会发生变化,除非您使用的是 VPC,而您并未使用 VPC。
所以,如果我是你,我会非常小心地重新启动这台机器。
就时间而言,不会超过几分钟。
此外,如果您在数据库实例上运行任何 iptables,它只允许此内部 IP 连接到数据库,那么它也不会工作,因为您的内部 IP 会发生变化。
所以,如果你想重启这个实例,请慎重考虑。
您的内部 IP/主机名将更改,您的弹性 IP 将分离(除非您在 VPC 中)。
重启实例后重新附加弹性 IP。我经常这样做以更改实例大小,而您只看到几分钟的停机时间。
验证 Apache 和任何其他服务是否已设置为启动(
chkconfig
如果您运行的是 amazon linux ami)。据我所知,停止系统更改其类型并重新启动它应该不会超过 5-10 分钟(不用说它是 EBS 支持的系统)。要在系统恢复后启动服务,请确保您已启用所有服务以在重新启动时启动(例如我的 ubuntu 12.04 上的 puppet 我在 /etc/default/puppet 中启用了它)。记下 IP(我很久以前就这样做了,所以记不清楚了),最多你的 IP 可以从系统中分离出来,但它仍然会存在于你的帐户中,所以进入弹性 IP 部分并再次将它与重新启动系统,你会没事的。
如前所述,如果您有一个弹性 IP,它将重新附加到实例,因此您的 DNS 设置不需要更改。但是,无论如何,您的私有 IP 都会发生变化。这可能意味着您需要更新 mysql 中的 GRANT 设置。因为你不只是
GRANT ALL PRIVILEGES ON *.* to 'somedude'@'%'
……对吧?;)