Eureka Server 高可用集群
在上一个章节,实现了单节点的Eureka Server的服务注册与服务发现功能。Eureka Client会定时连接Eureka Server,获取注册表中的信息并缓存到本地。微服务在消费远程API时总是使用本地缓存中的数据。因此一般来说,即使Eureka Server发生宕机,也不会影响到服务之间的调用。但如果EurekaServer宕机时,某些微服务也出现了不可用的情况,Eureka Server中的缓存若不被刷新,就可能会影响到微服务的调用,甚至影响到整个应用系统的高可用。因此,在生成环境中,通常会部署一个高可用的Eureka Server集群。
Eureka Server可以通过运行多个实例并相互注册的方式实现高可用部署,Eureka Server实例会彼此增量地同步信息,从而确保所有节点数据一致。事实上,节点之间相互注册是Eureka Server的默认行为。
搭建 Eureka Server高可用集群
(1)修改本机host属性
由于是在个人计算机中进行测试很难模拟多主机的情况,Eureka配置server集群时需要执行host地址。
所以需要修改个人电脑中host地址
127.0.0.1 eureka1
127.0.0.1 eureka2
(2)修改 shop_eureka_server 工程中的yml配置文件,添加如下配置属性
#指定应用名称 spring: application: name: shop-eureka-server --- #执行peer1的配置信息 spring: profiles: eureka1 server: port: 8761 eureka: instance: hostname: eureka1 client: service-url: defaultZone: http://eureka2:8762/eureka --- #执行peer2的配置信息 spring: profiles: eureka2 server: port: 8762 eureka: instance: hostname: eureka2 client: service-url: defaultZone: http://eureka1:8761/eureka
在配置文件中通过连字符(---)将文件分为三个部分,第一部分为应用名称,第二部分和第三部分是根据不同的profifiles选项动态添加,可以在IDEA启动时进行激活配置
使用IDEA启动历次EurekaServerApplicaion分别激活eureka1和eureka2配置。访问http://eureka1:8761和http://eureka1:8762/。会发现注册中心 SHOP-EUREKA-SERVER 已经有两个节点,并且registered-replicas (相邻集群复制节点)中已经包含对方。
服务注册到Eureka Server集群
如果需要将微服务注册到Eureka Server集群只需要修改yml配置文件即可
eureka: client: serviceUrl: defaultZone: http://eureka1:8761/eureka/,http://eureka1:8761/eureka/
以商品微服务为例,修改defaultZone配置添加多个Eureka Server的地址