一:集群环境搭建
第一步:我们新建两个注册中心工程一个叫eureka_register_service_master、另外一个叫eureka_register_service_backup
eureka_register_service_master的application.properties配置
server.port=7998
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
spring.application.name=eureka-server
eureka.instance.hostname=master
eureka.client.serviceUrl.defaultZone=http://backup:7999/eureka/
eureka_register_service_backup的application.properties配置如下
server.port=7999 eureka.client.register-with-eureka=false eureka.client.fetch-registry=false spring.application.name=eureka-server eureka.instance.hostname=backup #这里配置的是master的地址 eureka.client.serviceUrl.defaultZone=http://master:7998/eureka/
上面的配置端口分别是
master端口是7998
backupr端口是7999
由于我用的是同一台机器所以需要绑定下host
127.0.0.1 master
127.0.0.1 backup
第二步:添加启动文件分别是ApplicationMaster.java,ApplicationBackUp.java
里面代码内容是一样的
@EnableEurekaServer @SpringBootApplication public class ApplicationMaster { public static void main(String[] args) { SpringApplication.run(ApplicationMaster.class, args); } } @EnableEurekaServer @SpringBootApplication public class ApplicationBackUp { public static void main(String[] args) { SpringApplication.run(ApplicationBackUp.class, args); } }
二:服务端注册
设置了多个注册中心后,我们的服务配置不需要太多改动只需将工程的application.properties的serviceUrl修改下
eureka.client.serviceUrl.defaultZone=http://master:7998/eureka/,http://backup:7999/eureka/,
当然也可以绑定一个地址,eureka.client.serviceUrl.defaultZone=http://master:7998/eureka/ 这两种绑定都可以,绑定一个时,也会注册到两个eureka上。但是如果只写一个时,假如http://master:7998/eureka/这个挂掉了,另一个eureka的结点信息会消失。
分别打开http://127.0.0.1:7998/ 和 http://127.0.0.1:7999/ 如下图
通过上图可以看
端口7998是matser它的registered-replicas指向了http://backup:7999/eureka/
端口7999是backup它的registered-replicas指向了http://master:7999/eureka/
如何配置serviceUrl来让集群中的服务进行同步
Eureka Server的同步遵循着一个非常简单的原则:只要有一条边将节点连接,就可以进行信息传播与同步
场景一
假设我们有3个注册中心,我们将peer1、peer2、peer3各自都将serviceUrl指向另外两个节点。换言之,peer1、peer2、peer3是两两互相注册的。启动三个服务注册中心,并将compute-service的serviceUrl指向peer1并启动,可以获得如下图所示的集群效果。
访问http://localhost:1112/
,可以看到3个注册中心组成了集群,compute-service服务通过peer1同步给了与之互相注册的peer2和peer3
总结:
- 两两注册的方式可以实现集群中节点完全对等的效果,实现最高可用性集群,任何一台注册中心故障都不会影响服务的注册与发现