今天做了一个简单的springcloud电商项目,下面是实现注册中心eureka集群(3个eureka server实例)的部分过程,代码已经测试通过。
eureka-server的application.yml:
server:
port: 8761
eureka:
instance:
hostname: localhost
instance-id: ${spring.cloud.client.ip-address}:${server.port}
prefer-ip-address: true
client:
#声明自己是个服务端
# 表示是否注册自身到eureka服务器
registerWithEureka: false
# 是否从eureka上获取注册信息
fetchRegistry: false
service-url:
defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/,http://localhost:8763/eureka/
# defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
eureka clint 的application.yml:
#指定注册中心地址
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/,http://localhost:8763/eureka/
instance:
instance-id: ${spring.cloud.client.ip-address}:${server.port}
prefer-ip-address: true
#服务的名称
spring:
application:
name: product-service
#指定从哪个配置中心读取
cloud:
config:
discovery:
service-id: CONFIG-SERVER
enabled: true
label: dev
注意,eureka server和eureka client 的defaultZone这一项要完全一致,一个字母都不要不一样,如果一个写localhost,另一个写192.168.99.5 是不行滴!!!要么都写localhost,要么都写192.168.99.5!!!
配置好后,通过idea改变port,分别启动3个eureka-server实例。
在idea改变端口,一个项目启动多个实例:
eureka server 启动完成后,接着启动各个eureka client。
最后,3个注册中心的监控台如下:
端口8761的监控台:
registered-replicas:注册的副本,可见8761有3个副本
端口8762的监控台:
端口8763的监控台:
可见3个eureka server都拿到了各个服务(eureka client)的注册信息,这样即使其中1个或2个eureka server 挂了,也不会影响各个服务的的运行,从而实现了高可用。
若童鞋们有什么疑问或建议,欢迎提出,大家一起进步~