我们正在使用 Google Cloud Platform,并运行一个 Ubuntu 实例,其中 Apache 在端口 80 上监听。
有时实例会停止响应,并且 Cloudflare 中的服务器会出现故障(但事实并非如此)。
我们需要一个解决方案,一个可以不时检查的例程,如果端口 80 停止响应则重置/重新启动实例。
也许是 Shell 脚本?也许是 Cloud Platform 内部我没有注意到的某些东西?
我已经到处搜索过了,如果重复了我很抱歉,感谢您的任何帮助。
答案1
创建一个监听端口 80 的健康检查可以完成您的工作,但仅靠健康检查是行不通的。您必须:
- 为托管实例组创建负载均衡器
- 该托管实例组应关闭自动扩缩功能,以便只有您的实例是组中唯一的实例。
- 然后,您可以将 Cloudflare 指向您在创建负载均衡器时创建的前端 IP(如果您选择静态 IP)/获取的前端 IP。
这样,每次健康检查失败时,您的实例都会重新启动。请确保配置正确的防火墙规则以使健康检查正常运行。
您可以做的另一件事是配置 Stackdriver 监控指标并编写使用 Stackdriver 监控 API 的程序,这样 Web 钩子将进一步采取一些行动,例如通知某人,甚至使用某种配置管理工具重新启动系统。
尽管 bash 也是一个不错的选择,但 GCP 控制台为您提供了一个交互式界面,可随时更改规范。如果您的用例发生变化并且您想要监控更多实例,您不必再费力重写脚本。
答案2
我会先使用 nagios 之类的监控系统,这样你就能知道发生了什么。然后让某人手动重启它,直到你看到值得自动化的模式。你可以将 nagios 连接到 PagerDuty,以确保有人收到通知。
除了内部监控之外,最好使用像 hund.io 或 pingdom 这样的外部服务来监视您的网站。