我工作的公司构建并托管了一个供客户使用的web应用程序,我对创建某种外部监控页面(类似于trust.salesforce.com)很感兴趣,用户可以转到该页面查看我们的服务器/应用程序的当前状态。我知道有很多不同的“监控”服务,但我想自己创建服务,拥有完全的控制和定制。显然,服务必须托管在与应用本身不同的位置和数据中心。我担心的一件事是,如果我只是在不同的位置选择了一台不同的主机,如果该主机由于任何原因(电源故障、服务器故障,甚至ISP故障)而宕机,监控软件就会宕机。出于这个原因,我正在考虑在亚马逊EC2实例上托管监控应用程序。使用其弹性IP功能,如果由于某种原因,运行实例的数据中心或点发生故障,我只需使用相同的数据(但在不同的位置)创建一个副本实例,一切仍将正常工作。
这听起来像是一个可行的计划吗?为了更高的安全性,我考虑在不同的位置创建两个实例,并从这两个实例进行监控。如果一个实例出现故障,另一个实例仍将正常运行。显然,一个实例必须充当监控页面的实际web主机。如果一个实例检测到另一个实例由于某种原因发生故障,是否可以通过编程方式将弹性IP切换到自身?
我知道这个问题涉及很多不同的事情,我只是在寻找关于其中任何一个的反馈……
如果你已经读到这一步,感谢你花时间阅读这篇文章!
发布于 2010-01-14 05:18:00
你所说的是一个复杂问题的复杂解决方案。我认为你使用像亚马逊的EC2这样的东西来减少你的监控应用程序宕机的机会是正确的。此外,你也可以自己开发它,但是有很多免费的监控解决方案,比如Nagios,它们可以做你所要求的一切,并且具有高度的可扩展性,所以你可以花时间让它看起来和感觉上都像你想要的那样,同时把更复杂的部分留给经过测试和测试的软件。对你来说最糟糕的事情是你的软件中有一个bug,当它实际关闭时,它会显示为up。根据您正在讨论的内容,我认为这将是一个巨大的问题。
发布于 2010-01-25 21:38:37
与其使用仅分配给一个实例的弹性ip,不如考虑使用弹性负载均衡器http://aws.amazon.com/elasticloadbalancing/,然后它可以路由到任何可用区中的实例。通过这种方式,如果实例由于某种原因变得不可用,AWS可以管理将实例移入/移出池,并且您不必花费时间来“移动”弹性IP。然后,很容易将您的监控cname分配给ELB主机名。
我认为RandomBen在您的实例上使用Nagios的想法很好,因为这样您就不必在Nagios中重新创建所有功能。然后,您将花费开发时间来设置系统,并根据您的需要定制外观。
此外,如果您可以使用MySQL,那么您应该考虑使用RDS,尽管如果您在一个区域之外的服务器访问另一个区域中的RDS,您将需要支付传输费用。
https://stackoverflow.com/questions/2060271
复制相似问题