云监控正常运行时间检查允许用户向资源发送请求以查看其是否响应。
由于检查是在 Google Cloud 基础架构之外进行的,因此需要外部 IP。
有没有办法对没有公共 IP 的站点(http 请求)实施正常运行时间检查?
答案1
总结:是的,通过使用具有外部 IP 的堡垒主机,可以查询到达内部站点,并使用代理(NGINX,SquidProxy 等)将您的健康检查请求从外部服务传递到您的内部站点。
你需要:
- 同一台计算机上有外部 IP 的虚拟机私有云平台你的私人虚拟机管理系统(没有公网 IP 的)。
- VM 与外部 IP 之间的通信(以下称为探测虚拟机) 以及托管您的内部网站的虚拟机。
- (可选,但强烈推荐)您的网站应该有一个健康检查网页。如果网站和系统正常,该页面应返回 200,最好有身份验证保护。
流程:
- 在您的内部网站所在的同一 VPC 内创建一个虚拟机。您可以创建基本 Linux 虚拟机运行您首选的 Linux 发行版。您的虚拟机的大小可以是n1-标准-1或 e2-标准-2大小实际上取决于您要监控的站点数量。您可能需要根据需要调整 VM 的大小。
- 允许你的探测虚拟机以及托管您站点的内部 vm。建议您仅允许内部站点使用的端口。
- 限制所有到你的流量探测虚拟机以避免任何类型的数据泄露。使用Google 云防火墙来实现这一点。(注意:不要忘记将你的 IP 的 22 端口列入白名单,这样你就可以管理你的探测虚拟机)
- 允许 HTTP(端口 80)流量到您的探测虚拟机到云监控 ips。
- 安装NGINX 开源在你的探测虚拟机。
如果您想跳过安装过程,您可以选择使用NGINX PLUS并使用安装谷歌云市场
您还可以使用NGINX Docker 容器来完成这项任务。
关于如何配置 nginx 的一些技巧和窍门
当你按照 NGINX 的说明安装 NGINX 时,你将在安装完成后获得一个可以正常运行的 NGINX。但你可能需要进行额外的配置才能实现目标。
- 修改该文件
/etc/nginx/conf.d/default.conf
以对任何不包含有效 HOST 标头的请求回答 404:
server {
listen 80 default;
location / {
return 404;
}
}
/etc/nginx/conf.d/
在目录下为您想要监控的每个站点创建一个配置文件。即/etc/nginx/conf.d/finance-sites.conf
。不要忘记 .conf 结尾。为每个要监控的站点设置一个虚假主机,并且不要忘记在云监控。
每次更改配置时,请不要忘记检查语法
nginx -t
并重新加载配置。nginx -s reload