单节点请看:​​http://jameskaron.iteye.com/admin/blogs/2423742​

 

多节点就是多个注册中心互相注册.

多节点例子:(因为在本地测试,可以在hosts里面先添加peer1& peer2都未127.0.0.1)

1.分别配置application-peer1.yaml:

server:
port: 1111
eureka:
instance:
hostname: peer1
client:
service-url:
defaultZone: http://peer2:1112/demo/eureka/
register-with-eureka: true
fetch-registry: true

spring:
application:
name: eureka-server

 *注意:不要和application.yaml的全局配置冲突了,把全局的port和单节点的不自我注册注释掉.

 

配置application-peer2.properties:

 

spring.application.name=eureka-server
server.port=1112

eureka.instance.hostname=peer2
eureka.client.service-url.defaultZone=http://peer1:1111/demo/eureka/
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true

 

2.启动:

分别在控制台启动:

java -jar demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1
java -jar demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2

 当启动第一台服务器的时候,因为第二台还没启动,所以会报没找到default zone的错误.先不理,当第二台成功启动后自动会找到.

*注意有时候会出现spring cloud unavailable-replicas,那是因为注册中心并没有互相注册成功.一般是忘记了取消单节点的不自我注册.


 

这样就实现了高可用的注册中心,启动client,会同时注册在peer1 和peer2中,即使peer1关闭,client仍在注册中心中peer2中,仍可以被peer2中的其他服务访问.