跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • Consul GRPC 健康检查失败问题
未分類
2020 年 11 月 23 日

Consul GRPC 健康检查失败问题

Consul GRPC 健康检查失败问题

資深大佬 : wunonglin 4

Consul 注册的信息

reg := api.AgentServiceRegistration{  ID:      strconv.FormatInt(time.Now().UnixNano(), 10),  Name:    name,  Address: listen,  Port:    port,  Check:   &api.AgentServiceCheck{   GRPC:     fmt.Sprintf("%v:%v/%v", listen, port, name),   Interval: "5s",   Notes:    "Consul check service health status.",   DeregisterCriticalServiceAfter: "10s",  }, } 

我按照 https://www.consul.io/docs/discovery/checks 里的 grpc 检查里,写了个 proto

syntax = "proto3";  package grpc_health_v1; option go_package = ".;grpc_health_v1";  message HealthCheckRequest {     string service = 1; }  message HealthCheckResponse {     enum ServingStatus {         UNKNOWN = 0;         SERVING = 1;         NOT_SERVING = 2;         SERVICE_UNKNOWN = 3;  // Used only by the Watch method.     }     ServingStatus status = 1; }  service Health {     rpc Check(HealthCheckRequest) returns (HealthCheckResponse);      rpc Watch(HealthCheckRequest) returns (stream HealthCheckResponse); }  

我用 BloomRPC 和自己写的 client 都能正常访问这个 Check 方法,但是注册上了 Consul 却显示失败

大佬有話說 (7)

  • 資深大佬 : axex

    grpc 的 health check 是不需要你实现的,grpc 的库中有 google.golang.org/grpc/health/grpc_health_v1,你直接 import 然后 RegisterHealthServer(grpcServer, health.NewServer())就行了

  • 主 資深大佬 : wunonglin

    @axex #1
    我现在改了下代码引入了,但是&api.AgentServiceCheck 里的 GRPC 是要怎么填,

    是 ip:port 还是 ip:port/service_name 还是 ip:port//grpc_health_v1.Health ?我都试了都不行

  • 資深大佬 : axex

    @wunonglin ip:port 就行了,如果不行的检查一下 ip,看看 consul 能否正常访问

  • 主 資深大佬 : wunonglin

    @axex #3

    grpc: addrConn.createTransport failed to connect to {127.0.0.1:8080 0 <nil>}. Err :connection error: desc = “transport: Error while dialing dial tcp 127.0.0.1:8080: connect: connection refused”. Reconnecting…

    提示这个,但是我自己写了一个 client 测试的话是可以连接上来的

  • 資深大佬 : axex

    @wunonglin consul 和 grpc server 在同一台机器上面?不是的话 consul 是无法访问的,最好改成内网 ip 或者改用 ttl 检查

  • 主 資深大佬 : wunonglin

    @axex #5

    OK 了,我 tm 人傻了,consul 是在 docker 上的,然后我填的 check 地址是 127,,我在本地部署了个 consul 可以了 Consul GRPC 健康检查失败问题

  • 主 資深大佬 : wunonglin

    @axex #5 consul 他这文档有坑吧,也没说直接引用官方的 func,还以为要自己写,搜了网上的教程,压根没人提过,我硬是研究了 2 天,浪费一个美好的周末

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具