如果端口 80 停止响应,则创建 Gcloud 维护以重新启动实例

如果端口 80 停止响应,则创建 Gcloud 维护以重新启动实例

我们正在使用 Google Cloud Platform,并运行一个 Ubuntu 实例,其中 Apache 在端口 80 上监听。

有时实例会停止响应,并且 Cloudflare 中的服务器会出现故障(但事实并非如此)。

我们需要一个解决方案,一个可以不时检查的例程,如果端口 80 停止响应则重置/重新启动实例。

也许是 Shell 脚本?也许是 Cloud Platform 内部我没有注意到的某些东西?

我已经到处搜索过了,如果重复了我很抱歉,感谢您的任何帮助。

答案1

创建一个监听端口 80 的健康检查可以完成您的工作,但仅靠健康检查是行不通的。您必须:

  1. 为托管实例组创建负载均衡器
  2. 该托管实例组应关闭自动扩缩功能,以便只有您的实例是组中唯一的实例。
  3. 然后,您可以将 Cloudflare 指向您在创建负载均衡器时创建的前端 IP(如果您选择静态 IP)/获取的前端 IP。

这样,每次健康检查失败时,您的实例都会重新启动。请确保配置正确的防火墙规则以使健康检查正常运行。

您可以做的另一件事是配置 Stackdriver 监控指标并编写使用 Stackdriver 监控 API 的程序,这样 Web 钩子将进一步采取一些行动,例如通知某人,甚至使用某种配置管理工具重新启动系统。

尽管 bash 也是一个不错的选择,但 GCP 控制台为您提供了一个交互式界面,可随时更改规范。如果您的用例发生变化并且您想要监控更多实例,您不必再费力重写脚本。

答案2

我会先使用 nagios 之类的监控系统,这样你就能知道发生了什么。然后让某人手动重启它,直到你看到值得自动化的模式。你可以将 nagios 连接到 PagerDuty,以确保有人收到通知。

除了内部监控之外,最好使用像 hund.io 或 pingdom 这样的外部服务来监视您的网站。

答案3

要定期监控实例的运行状况,您可以创建运行状况检查,该检查将在特定端口上发送定期探测以检查虚拟机的运行状况。如果实例运行状况不佳,运行状况检查将不会重新启动实例。要重新创建运行状况不佳的实例,您可以创建一个托管实例组并将您的实例放入该组中并创建运行状况检查。查找托管实例组的文档这里 托管实例组带有一项称为自动修复的功能,可以重新创建不健康的实例。您可以查看文档这里

相关内容