1、在Eureka中不能看到具体服务的实例信息;
问题点:服务注册到 Eureka 之后,可以看到在 “Status” 显示的服务信息不明确(不知道具体的服务名等信息),如下图所示:
解决方法:
在服务的application.yml配置文件中,增加 instance-id 的信息,如下图所示:
eureka:
client: # 客户端注册进eureka内
service-url:
defaultZone: http://eureka7001.com:7001/eureka/
instance:
instance-id: microservicecloud-provider-dept-8001
重启 Eureka 和 服务,然后打开:http://localhost:7001,可以看到如下所示的页面,“Status”中显示的是 instance-id 中定义的名字;
2、将鼠标放在“Status"中,页面的左下角显示链接的地址不明确(未显示IP)
解决方法:
将服务的 instance 下的 prefer-ip-address 设置为 true; (访问路径可以显示IP),如下所示:
重启服务,接着打开eureka的页面,鼠标放在”Status“上,如下所示(显示IP)
3、打开Eureka页面,点击注册的服务的“Status”的超链接之后报错
解决方法:
(1)修改注册服务(microservicecloud-provider-dept-8001) 的pom.xml文件,增加如下依赖:
<!-- actuator监控信息完善 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
(2)总的父工程(microservicecloud)修改pom.xml文件,添加构建build信息
<build>
<finalName>microservicecloud</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<delimiters>
<delimit>$</delimit>
</delimiters>
</configuration>
</plugin>
</plugins>
</build>
(3)打开注册服务(microservicecloud-provider-dept-8001) 的application.yml文件,增加如下信息:
info:
app.name: yufeng-microservicecloud
company.name: www.yufeng.com
build.artifactId: $project.artifactId$
build.version: $project.version$
重启注册的服务,点击之后得到如下信息
4、Eureka的自我保护机制:
默认情况下,若EurekaServer 在一定时间内没接收到某个微服务实例的心跳,Eureka将会注销该实例(默认90秒);
当网络故障发生时,微服务和Eureka服务是无法正常通信的,以上行为可能就变得很危险(实际上微服务本身是健康的,此时不应该注销这个服务);
Eureka通过“自我保护模式”来解决这个问题:当EurekaServer节点在短时间间内丢失过多客户端时(可能是网络故障),那么这个节点就会进入自我保护模式。一旦进入自我保护模式,EurekaServer就会保护服务注册表中的信息,不再删除服务注册表中的数据(即不会注销任何微服务)。当网络故障恢复后,该EurekaServer节点会自动退出自我保护模式。
Eureka的自我保护机制:某个时刻一个微服务不可用了,Eureka不会立刻清理,依旧会对该服务的信息进行保存;
在配置文件中使用 eureka.server.enable-self-preservation = false ,禁用自我保护模式