SpringCould-eureka
eureka
eureka是一个服务注册和发现模块
新建springboot工程,作为eureka服务注册中心,勾选如下选项
- Cloud Discovery->Eureka Server
在
Application
类上添加注解@EnableEurekaServer
声明注册中心在
Application.yml
配置文件添加内容:1
2
3
4
5
6
7
8server:
port: 8091
eureka:
instance:
hostname: 127.0.0.1 #指定该Eureka实例的主机名,本地默认127.0.0.1,部署docker时再试验
client:
register-with-eureka: false #Eureka默认也会作为客户端尝试注册,因此需禁用注册行为
fetch-registry: false访问http://127.0.0.1:8091可以进入管理页面查看注册了那些服务
重复第一步,作为eureka客户端
在
Application
类上添加注解@EnableEurekaClient
声明客户端在
Application.yml
配置文件添加内容:1
2
3
4
5
6
7
8
9server:
port: 8092
spring:
application:
name: eureka-client
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:8091/eureka/ #注意要加eureka,不然找不到再进入eureka服务注册中心就可以看到Application名为
eureka-client
的客户端
eureka高可用(未实践)
1 | #多节点固定模式,文件名application-peer1.yml |
启动:
java -jar app.jar --spring.profiles.active=peer1
java -jar app.jar --spring.profiles.active=peer2
注意:
- 高可用启动,application.name一定要一致
- 一定要指定端口号
- 不能禁用自我注册,注意配置文件加载顺序及覆盖顺序
健康检查
1 | compile('org.springframework.cloud:spring-cloud-starter-netflix-eureka-server') |
常用链接
1 | $ curl localhost:8080/actuator/health |
dockerfile
1 | HEALTHCHECK --interval=5m --timeout=3s \ |
问题:
1 | EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE. |
原因据说是
注册中心不是高可用的原因
出处:https://www.cnblogs.com/xiaojf/p/7919088.html
额外
1. 修改eureka client的注册ip,在本地有多个网卡时,默认注册的那个ip可能无法访问,解决指定本地服务ip
1 | eureka: |