亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

領事健康檢查(所有服務檢查失?。?/h1>

領事健康檢查(所有服務檢查失?。?/h1>
斯蒂芬大帝 2022-10-10 19:10:14
我已閱讀與此問題相關的類似問題。它以沮喪告終。我用 docker 安裝了領事。我運行以下命令。docker run --name consul -d -p 8500:8500 consul,然后我測試了使用postman PUT方法注冊服務是否有效,但沒有啟用健康檢查,服務在consul web UI中成功注冊到consul?,F在一切都按預期工作。我有一個用 go 編寫的本地 GRPC 服務。本地服務地址為127.0.0.1:8880。領事服務器的地址是127.0.0.1:8500。然后將服務注冊到 consul,但健康檢查不起作用,獲取All service failing. 然后我嘗試了以下操作:使用本地 IP 地址192.168.0.152:8500作為 consul 服務器192.168.0.152:8880的地址和 gprc 服務的地址。不工作。使用本地 IP 地址192.168.0.152:8500作為 consul 服務器127.0.0.1:8880的地址和 gprc 服務的地址。不工作。檢查 HTTP 服務是否有效。有一個用 GIN 編寫的本地 Web 服務。端口為 1010。AgentServiceCheck 如下。上面的方法試過了。不工作。check := &api.AgentServiceCheck{      HTTP:                           "http://127.0.0.1:1010/health",      Timeout:                        "5s",      Interval:                       "5s",      DeregisterCriticalServiceAfter: "15s",   }運行consul members得到Node          Address         Status  Type    Build   Protocol  DC   Segmentaae2e6ac1ff8  127.0.0.1:8301  alive   server  1.10.3  2         dc1  <all>更新:在以下配置中更改"127.0.0.1:8880/health"為后,它令人驚訝地工作。"127.0.0.1:8880"不知道為什么。。check := &api.AgentServiceCheck{      GRPC:                           "127.0.0.1:8880",      Timeout:                        "5s",      Interval:                       "5s",      DeregisterCriticalServiceAfter: "10s",   }將 grpc 服務注冊到 consul 服務器并啟用健康檢查的代碼如下:func main() {   IP := flag.String("IP", "127.0.0.1", "IP address")   Port := flag.Int("Port", 8880, "Port")   flag.Parse()   // initialize logger, configuation file and database   initialize.InitLogger()   initialize.InitConfig()   initialize.InitDB()   zap.S().Info(global.ServerConfig)   zap.S().Info("IP: ", *IP)   zap.S().Info("Port: ", *Port)     server := grpc.NewServer()   proto.RegisterUserServer(server, &handler.UserServer{})   l, err := net.Listen("tcp", fmt.Sprintf("%s:%d", *IP, *Port))   if err != nil {      panic("failed to listen" + err.Error())   }   // register health check   grpc_health_v1.RegisterHealthServer(server, health.NewServer())   cfg := api.DefaultConfig()     }
查看完整描述

2 回答

?
墨色風雨

TA貢獻1853條經驗 獲得超6個贊

根據 Consul API ( https://www.consul.io/api-docs/agent/check#grpcGRPC ) 的文檔,您正在使用的字段似乎

支持標準的 gRPC 健康檢查協議。

因此,您只需在此處定義 gRPC 端點,協議將處理健康檢查。

HTTP您可以通過在代理服務檢查配置中定義字段來選擇退出以使用 HTTP 端點進行健康檢查。您可以在文檔中找到更多信息(https://www.consul.io/api-docs/agent/check#http


查看完整回答
反對 回復 2022-10-10
?
絕地無雙

TA貢獻1946條經驗 獲得超4個贊

關于“正確”的代碼有幾個問題:


consul的地址等于grpc服務?不是cfg.Address領事Addr嗎?

// get cfg.address from configuration file, in which host is 127.0.0.1 port 8880

   cfg.Address = fmt.Sprintf("%s:%d", global.ServerConfig.ConsulInfo.Host,

      global.ServerConfig.ConsulInfo.Port)

   client, err := api.NewClient(cfg)

為什么正確的代碼顯示GRPC:"127.0.0.1:8880/health",結論是“在以下配置中將“127.0.0.1:8880/health”更改為“127.0.0.1:8880”后,它出奇地有效。不知道為什么......”。這是不一致的?。。?!


查看完整回答
反對 回復 2022-10-10
  • 2 回答
  • 0 關注
  • 112 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號