问题

  使用的是springcloud系列框架,注册中心开始使用的是eureka,后来要把服务进行监控,于是又多加了一个注册中心consul,把服务另外注册一份到consul注册中心上用于监控,如下是线上的网关服务问题的日志截图,一直在不断地刷Connect time out,连接超时的地址是网关服务器地址连接consul注册中心的地址连接超时,导致的结果是,接口调不通(按理来说不会出现这个问题,因为使用的是把服务注册了两份,一份在eureka,一份在consul,consul只是用于监控,eureka用于服务间调用,但是就是华丽丽地出现了)

 postman上调用接口报错如下:

解决

在确定consul所在的服务器是启动着的时候,重启了网关服务,如果网关服务是集群的话,一定要都全部重启一下,否则会出现接口时好时坏的情况

学习博客

consul重启导致服务必须跟着重启解决方案_索隆的博客-CSDN博客

过程

开始线上的数据展示不出来的时候,发现接口没有经过转发,但是所有的前台的接口是都要经过网关服务的,就以为是不是网关服务挂了,但是 ps -ef | grep gatewayService 发现服务启动着,后来看connect超时的时候,就看见了consul的的连接超时,但是让运维同事帮忙看了eureka各个服务是不是启动着,确定启动着,后来运维同事又帮忙在gateway网关服务所在的服务器上telnet consul服务器地址 , consul服务器端口(telnet 172.xx.x.x 8005),发现也能ping通,证明也能连通,但是除了网关服务其他经过consul监控的服务都没有问题,恰巧看见了日志上的报错,后来又在网上搜,发现上边的博客,说的是consul和eureka虽然在和服务启动即向注册中心主动发起请求注册在注册中心上这点相同,但是在维护可用的服务列表上,consul是主动向微服务发送健康检查请求的,因为是主动,如果因为网络问题,consul向微服务发送的健康检查请求发不通,那么consul就会把服务剔除,即使后来网络正常,consul也不会再主动发健康检查,那么此时consul里就没有了这个服务了,如果想要再把微服务注册到consul上只能重启微服务,如果是网关服务被剔除了,那么用来做转发的网关服务,此时就不能再进行转发,看到这了之后,我就想起来要不要把网关服务重启下,后来让我们公司的运维同事帮忙重启了网关服务,但是我们公司的运维同事只重启了一个网关服务,但是后来我另外一个帮忙看问题的开发同事跟我说,这个网关服务应该是集群,所以就接口时好时坏,然后就一直几乎看这个问题到下班,最后把另外一个网关服务重启了下才可以,到现在我也不太明白,明明eureka注册中心和consul注册中心分开的,为什么consul注册中心会影响到eureka注册中心的使用,不知道是我哪的配置写得有问题还是咋了,另外,遇到接口时好时坏的情况,一定要考虑是不是集群的问题,上一次我就遇见过一次这种问题了、

思考步骤

1.确定consul服务是否启动着,使用ps -ef | grep 服务名或者直接让运维帮忙看下

2.确定网关服务(微服务所在的服务器)是否能ping通consul服务(服务器地址+端口)【因为我的同事说确认是否consul服务所在的服务器是否设置了防火墙,另外就是确定是否对网关服务设置了白名单】,命令:在网关服务(微服务所在的服务器上)使用 telnet consul服务器地址 端口,以下是ping通的接口

3.确定是何种问题,在网上直接搜

 

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐