Niro Asked: 2010-01-07 05:12:00 +0800 CST2010-01-07 05:12:00 +0800 CST 2010-01-07 05:12:00 +0800 CST AWS EC2 - 如果服务器出现故障并重新启动,其他服务器如何连接到它? 772 假设我在 Amazon EC2 上有一个应用程序服务器和一个数据库服务器。如果db server出现故障重启,app server如何知道db server新的内部ip,并自动继续工作? amazon-ec2 2 个回答 Voted Best Answer ahanson 2010-01-07T07:29:20+08:002010-01-07T07:29:20+08:00 重新启动将保留其设置。如果您启动一个新实例,那么您将需要一些方法来管理 IP。启动脚本可能是要走的路。拉取实例元数据并更新配置文件(可能在 S3 中)或 DNS 条目。您还可以使用弹性 IP 并配置一个 cname,它将解析为 EC2 环境中的内部地址。为此,请分配一个弹性 IP 并记下公共 DNS 字符串(有一个模式,但最好检查一下)并使用它创建 cname 记录。弹性 IP cnames 的优点是您不必等待 DNS 传播。 carson 2010-03-25T05:31:52+08:002010-03-25T05:31:52+08:00 您可以通过在应用程序服务器上编写一个简单的面向外部的更新 URL,让数据库服务器告诉应用程序服务器它在哪里。您可以从数据库服务器的引导元数据中获取内部 IP 。在数据库服务器上的 rc.local 中可能有一个像这样的简单 shell 脚本(假设您使用的是 linux 实例): LOCALIP=`curl http://169.254.169.254/latest/meta-data/local-ipv4` curl http://<yourexternalappname.com>/updatedbip?ip=$LOCALIP&somesharedsecret=<password>
重新启动将保留其设置。如果您启动一个新实例,那么您将需要一些方法来管理 IP。启动脚本可能是要走的路。拉取实例元数据并更新配置文件(可能在 S3 中)或 DNS 条目。您还可以使用弹性 IP 并配置一个 cname,它将解析为 EC2 环境中的内部地址。为此,请分配一个弹性 IP 并记下公共 DNS 字符串(有一个模式,但最好检查一下)并使用它创建 cname 记录。弹性 IP cnames 的优点是您不必等待 DNS 传播。
您可以通过在应用程序服务器上编写一个简单的面向外部的更新 URL,让数据库服务器告诉应用程序服务器它在哪里。您可以从数据库服务器的引导元数据中获取内部 IP 。在数据库服务器上的 rc.local 中可能有一个像这样的简单 shell 脚本(假设您使用的是 linux 实例):