Eureka常用配置文件设置
理解
Server端、Instance端配置讲解
eureka的配置分为三类 Server Client 实例的
注意:yml文件中最好不好添加中文注释,容易报错,解决办法就是删除所有中文注释。
实例续约时间也是服务端续约时间,因为service端既是服务端,又是客户端,实力续约时间一定要小于服务端的驱逐时间区间的时间。
server:
port: 8761
spring:
application:
name: eureka-server
eureka:
server:
eviction-interval-timer-in-ms: 10000 #evication翻译驱逐,interval翻译区间,记为驱逐时间区间
renewal-percent-threshold: 0.85 #renewal翻译为续期,记为续期百分比
instance:
instance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port} #主机名:应用名:端口名
hostname: localhost
prefer-ip-address: true #以ip的形式显示具体的服务信息
lease-renewal-interval-in-seconds: 5 #服务实例续期时间间隔
Client端配置讲解
server:
port: 8080
spring:
application:
name: eureka-client-a
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka
register-with-eureka: true #可以不玩eureka-server注册
fetch-registry: true #应用是否拉取服务列表到本地
registry-fetch-interval-seconds: 10 #为了缓解服务列表的藏独问题 时间越短,脏读越少
instance:
hostname: localhost
prefer-ip-address: true
instance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port}
lease-renewal-interval-in-seconds: 10
构建高可用的Eureka-Server集群
理论
去中心化的集群
sever端既是服务端也是客户端,所以可以作为客户端注册在别的服务端里面,这样就可以拉取别的服务端的服务列表,这样两两注册,互相守望,即可实现高可用性。
搭建
创建3个Server端,修改启动名,开启服务端功能
写第一个Server端配置
server:
port: 8761
spring:
application:
name: eureka-server
eureka:
client:
service-url:
defaultZone: http://localhost:8762/eureka,http://localhost:8763/eureka
instance:
instance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port}
hostname: localhost
prefer-ip-address: true
lease-renewal-interval-in-seconds: 5
第二个配置
server:
port: 8762
spring:
application:
name: eureka-server
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka,http://localhost:8763/eureka
instance:
instance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port}
hostname: localhost
prefer-ip-address: true
lease-renewal-interval-in-seconds: 5
第三个配置
server:
port: 8763
spring:
application:
name: eureka-server
eureka:
client:
service-url:
defaultZone: http://localhost:8762/eureka,http://localhost:8761/eureka
instance:
instance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port}
hostname: localhost
prefer-ip-address: true
lease-renewal-interval-in-seconds: 5
此处出现问题,A端有3个注册信息,BC端注册信息都少于3个,不自己注册自己,目前猜测是由于服务端更新有延迟,将BC端停止后在启动即可。
- 注意,此时并不是集群,因为ip地址相同,系统会默认为副本
解决方法:修改hosts文件,骗eureka我们用了三台机器
分别改yml文件中的host以及defaultZone,例如
server:
port: 8761
spring:
application:
name: eureka-server
eureka:
client:
service-url:
defaultZone: http://peer2:8762/eureka,http://peer3:8763/eureka
fetch-registry: true
register-with-eureka: true
server:
eviction-interval-timer-in-ms: 90000
instance:
instance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port}
hostname: peer1
prefer-ip-address: true
lease-renewal-interval-in-seconds: 90
其他同样改动,然后启动
测试
使用ClientA进行测试,对Peer1服务端进行注册
修改yml文件
server:
port: 8080
spring:
application:
name: eureka-client-a
eureka:
client:
service-url:
defaultZone: http://peer1:8761/eureka
register-with-eureka: true #可以不玩eureka-server注册
fetch-registry: true #应用是否拉取服务列表到本地
registry-fetch-interval-seconds: 10 #为了缓解服务列表的藏独问题 时间越短,脏读越少
instance:
hostname: peer1
prefer-ip-address: true
instance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port}
lease-renewal-interval-in-seconds: 10
可以发现,B服务端和C服务端都出现了该应用注册信息
集群配置的终极方案
server:
port: 8761
spring:
application:
name: eureka-server
eureka:
client:
service-url:
defaultZone: http://peer3:8763/eureka,http://peer2:8762/eureka,http://peer1:8761/eureka
fetch-registry: true
register-with-eureka: true
server:
eviction-interval-timer-in-ms: 90000
instance:
instance-id: ${spring.application.name}:${server.port}
prefer-ip-address: true
lease-renewal-interval-in-seconds: 90
这样只需要改端口即可,使用IDEA复制服务端,更改端口即可快速创建多个服务端
注意是–server.port
同时更改客户端配置文件
server:
port: 8080
spring:
application:
name: eureka-client-a
eureka:
client:
service-url:
defaultZone: http://peer1:8761/eureka,http://peer2:8762/eureka,http://peer3:8763/eureka
register-with-eureka: true #可以不玩eureka-server注册
fetch-registry: true #应用是否拉取服务列表到本地
registry-fetch-interval-seconds: 10 #为了缓解服务列表的藏独问题 时间越短,脏读越少
instance:
hostname: peer1
prefer-ip-address: true
instance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port}
lease-renewal-interval-in-seconds: 10