【go】【Consul】健康检查一直失败 -> All service checks failing, 而Output却什么也没显示?

问题遇到的现象

毕设,这两天在学习用Go+【Consul】实现服务注册和发现,结果【Consul】的健康检查一直无效,甚至连Output也什么没提示,折腾两天没搞明白 T-T,Google上也没能找到类似情况

img

img

img

环境

Win10系统;
VirtualBox + Xshell的虚拟机;
虚拟机上docker;

docker run -d -p 8500:8500 -p 8300:8300 -p 8301:8301 -p 8302:8302 -p 8600:8600/udp  consul consul agent  -dev -client=0.0.0.0

img

![img](

这是我学习的链接:https://blog.csdn.net/u013536232/article/details/104235282

下面是我https://img-mid.csdnimg.cn/release/static/image/mid/ask/397517728146194.png "#left")

的代码

import (
    "fmt"
    consulapi "github.com/hashicorp/consul/api"
    "net/http"
)

const (
    consulAddress = "192.168.31.65:8500"  // 虚拟机ip
    localIp = "192.168.31.197"  // 本地ip
    localPort = 81
)

func consulRegister() {
    // 创建连接consul服务配置
    config := consulapi.DefaultConfig()
    config.Address = consulAddress
    client, err := consulapi.NewClient(config)
    if err != nil {
        fmt.Println("consul client error : ",err)
    }

    // 创建注册到consul的服务
    registration := new(consulapi.AgentServiceRegistration)
    registration.ID = "337"
    registration.Name = "service337"
    registration.Port = localPort
    registration.Tags = []string{"testService"}
    registration.Address = localIp

    // 增加consul健康检查回调函数
    check := new(consulapi.AgentServiceCheck)
    check.HTTP = fmt.Sprintf("https://%s:%d",registration.Address,registration.Port)
    check.Timeout = "5s"
    check.Interval = "5s"
    check.DeregisterCriticalServiceAfter = "30s" // 失败后自动删除
    registration.Check = check

    // 注册服务到consul
    err = client.Agent().ServiceRegister(registration)
}

func Handler(w http.ResponseWriter, r *http.Request) {
    w.Write([]byte("you are visiting healch check api"))
}

func main() {
    consulRegister()
    // 定义一个http接口
    http.HandleFunc("/",Handler)
    err := http.ListenAndServe("0.0.0.0:81",nil)
    if err != nil {
        fmt.Println("error: ", err.Error())
    }
}


尝试过的方法

在虚拟机

 ping 192.168.31.197(本地ip// 可以ping通

在win10 cmd
ping 192.168.31.65(虚拟机ip) // 可以ping通

最主要的是,这里的 Output 什么也没提示啊?

img

如果你有眉目,请在下面评论,真的感谢了,折腾很久了 T T
@djqueue

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。