关于健康检查的一些细节问题
来源:1-4 go集成consul
drper
2023-04-04 22:51:25
check.HTTP = fmt.Sprintf("http://%s:%d/v1/base/health", addr, port)
①这个心跳检查地址,是consul定时发送请求到health接口然后根据请求返回的状态码来判断请求是否存活吗
②我是在云服务器的docker搭建的consul,如果第一个问题的答案是我说的这种情况,那用户服务的ip和这个心跳地址的ip是不是都应该配置为本地的127.0.0.1或者是本地的主机ip,因为用户服务是在本地,health接口也是在本地。
在视频中有特意说到,如果使用容器部署consul,健康检查地址的ip要填写虚拟机的ip,这个是为什么呢,我的health健康检查接口在本地,为什么要填写虚拟机的ip
③下图是我使用的云服务器通过内网穿透请求的本地health接口模拟健康检查,请求是成功的,如果健康检查是consul请求health接口,可为什么我自己请求成功,consul健康检查却失败
麻烦老师解答一下我的这些问题,谢谢老师
1回答
bobby
2023-04-06
第一点是对的
第二点不能是127.0.0.1,这个要深究原因的话你得去理解一下docker的网络, 容器中是一个隔离的网络环境,除非你的consul和服务是在同一个docker容器网络环境中,否则consul的docker和服务器的服务就是在不同的两个隔离网络中, 服务器可以直接通过127.0.0.1:consul端口来访问consul,但是consul中无法通过127.0.0.1来访问服务器,更别说访问另一个docker的服务了,建议深入理解一下docker的网络原理
相似问题
回答 1
回答 1