Eureka Server 高可用集群
在上一个章节,实现了单节点的Eureka Server的服务注册与服务发现功能。Eureka Client会定时连接 Eureka Server,获取注册表中的信息并缓存到本地。微服务在消费远程API时总是使用本地缓存中的数 据。因此一般来说,即使Eureka Server发生宕机,也不会影响到服务之间的调用。但如果Eureka Server宕机时,某些微服务也出现了不可用的情况,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
在配置文件中通过连字符(---)将文件分为三个部分,第一部分为应用名称,第二部分和第三部 分是根据不同的profiles选项动态添加,可以在IDEA启动时进行激活配置
使用IDEA启动历次EurekaServerApplicaion分别激活eureka1和eureka2配置。访问http://eureka1:87 61和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的地址