基于 healthcheck,自动恢复 DDNS 动态 IP 指定错误
场景描述:
我的一台云主机,因为配置比较差,所有只在上面搭了一个 nginx 做 proxy_pass 将访问请求转发到我自己的主机上面。因为自己的主机没有固定 IP,只能用域名做的 DDNS。用了一段时间发现,如果我原有指定的 DDNS 动态 IP 变更后,云主机会因为 IP 变更,无法正常转发。虽然只需要自己重启一下 nginx 的服务问题就解决了。但是每次 IP 变更后,就需要重启一下 nginx。而且你也不知道什么时候动态 IP 变更了。做为资深运维人员,这种问题当然得自动解决啦。所以这篇文章就是我解决这个问题的方法。
配置 Health check
容器启动之后,初始状态会为 starting (启动中)。Docker Engine 会等待 interval 时间,开始执行健康检查命令,并周期性执行。如果单次检查返回值非 0 或者运行需要比指定 timeout 时间还长,则本次检查被认为失败。如果健康检查连续失败超过了 retries 重试次数,状态就会变为 unhealthy (不健康)。