假设我在Amazon EC2上有一个应用程序服务器和一个数据库服务器。 如果数据库服务器发生故障并重新启动,应用服务器如何知道数据库服务器的新内部IP,并自动继续使用它?
重启将保持它的设置。 如果你提出一个新的实例,那么你需要一些方法来pipe理IP。 启动脚本可能是要走的路。 拉取实例元数据并更新configuration文件(可能在S3中)或DNS条目。 您也可以使用弹性IP并configuration一个将parsing为EC2环境内部地址的cname。 要做到这一点,分配一个弹性IP,并注意公共DNSstring(有一个模式,但它是很好的检查),并创build与它的cnamelogging。 弹性IP cname的优点是您不必等待DNS传播。
您可以让DB服务器通过在应用程序服务器上编写一个简单的面向外部的更新URL来告诉应用程序服务器它在哪里。 您可以从DB服务器的启动元数据中获取内部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>