为何选择Eureka Server集群
如果一个Eureka server发生宕机,某些微服务也出现故障的时候。Eureka Client中的缓存就无法更新,可能会影响微服务之间的调用,所以为了高可用性,我们在线上选择集群模式。本文代码以2个节点为例子。
配置系统的hosts,Windows系统的hosts文件路径是C:\Windows\System32\drivers\etc\hosts;Linux以
及Mac OS等系统路径为/etc/hosts。一行代码就行。
复制代码环节
# 单个eureka
#server:
# port: 8090
#
#eureka:
# instance:
# hostname: localhost
# client:
# registerWithEureka: false
# fetchRegistry: false
# serviceUrl:
# defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
# 集群
spring:
profiles: peer1
application:
name: eureka-scy
server:
port: 8090
eureka:
instance:
hostname: peer1
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://peer2:8091/eureka/
---
spring:
profiles: peer2
application:
name: eureka-scy
server:
port: 8091
eureka:
instance:
hostname: peer2
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://peer1:8090/eureka/
打包环节
用maven打一下包,pom文件右键Run As–>Maven install
项目启动
到jar的位置,启动jar包,上部分代码定义了两个不用的Profile,peer1启动会注册peer2,peer2启动会注册到peer1。
加一个client凑个热闹
server:
port: 8586
spring:
application:
name: api-base
eureka:
instance:
prefer-ip-address: true
client:
service-url:
defaultZone: http://peer1:8090/eureka/,http://peer2:8091/eureka/
加一个微服务,注册的eureka地址用逗号分隔就行。
成果展示
服务在两个eureka上都注册了,ds replicas相邻节点也成功。