关于健康检查的一些细节问题

关于健康检查的一些细节问题

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健康检查却失败


https://img1.sycdn.imooc.com//climg/642c37020999323512130108.jpg


https://img1.sycdn.imooc.com//climg/642c374a09a7c9a515090106.jpg


https://img1.sycdn.imooc.com//climg/642c385e092efbef15940232.jpg


麻烦老师解答一下我的这些问题,谢谢老师

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
bobby 2023-04-06 18:29:26
  1. 第一点是对的

  2. 第二点不能是127.0.0.1,这个要深究原因的话你得去理解一下docker的网络, 容器中是一个隔离的网络环境,除非你的consul和服务是在同一个docker容器网络环境中,否则consul的docker和服务器的服务就是在不同的两个隔离网络中, 服务器可以直接通过127.0.0.1:consul端口来访问consul,但是consul中无法通过127.0.0.1来访问服务器,更别说访问另一个docker的服务了,建议深入理解一下docker的网络原理

  • 提问者 drper #1

    老师,配置的ip的问题我搞清楚了,确实要配置为云服务器的地址,但是通过内网穿透的这种方式来的话比较麻烦,frp映射的http远程端口就只有一个,还需要用到nginx或者二级域名才能同时注册多个http服务,grpc服务没问题,建议看到我这个问题的其他朋友还是在本地使用虚拟机搭建docker比较方便,谢谢老师的解答,后续会深入的了解一下docker。

    2023-04-06 18:36:37
  • bobby 回复 提问者 drper #2

    这些问题k8s都解决了,不是问题,自己解决当然没法, k8s的网络管理里面都没有问题,只需要根据后面的k8s章节部署即可

    2023-04-07 09:38:52
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Go开发工程师全新版
  • 参与学习       490    人
  • 解答问题       559    个

风口上的技术,薪资水平遥遥领先,现在学习正值红利期! 未来3-5年,Go语言势必成为企业高性能项目中不可替代的语言 从基础到项目实战再到重构,对转行人员友好,真正从入门到精通!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师