微服务之SpringCloud实战(三):SpringCloud Eureka高可用

高可用Eurekanode

  高可用我就再也不过多解释了,Eureka Server的设计一开始就考虑了高可用的问题,在Eureka的服务治理设计中,全部的节点便是服务提供方也是消费方,注册中心也不例外,上一章中我已经将注册中心EUREKA-SERVER注册到注册中心,很直观,是否还记得单节点中咱们设置过下面这样的配置信息,让注册中心注册本身。spring

eureka:
  client:
    registerWithEureka: true   
    fetchRegistry: true

EurekaServer的高可用实际就是把本身当作服务向注册中心注册本身,这就造成了一组互相注册的服务注册中心,以实现服务列表的同步,达到高可用,上代码:安全

这里我搭建两套EurekaServer,使用不一样的端口,以下是注册中心的配置网络

仔细观察下面配置我新增长了一个节点,这里说明一下,eureka.client.serviceUrl.defaultZone这个配置是相互指定的,意思就是node1的IP指向node2,node2的IP指向node1,这样就会实现相互注册及高可用,我这里是本地启动两个,因此ip是同样的app

 
 
#公共配置信息
server:
port: 9901

spring:
application:
name: eureka-server
profiles:
active: node1

eureka:
instance:
prefer-ip-address: true
instance-id: ${spring.cloud.client.ipAddress}:${server.port}
server:
enableSelfPreservation: true #关闭保护机制,以确保注册中心能够将不可用的实例剔除.(注意:自我保护模式是一种应对网络异常的安全保护措施,使用自我保护模式,可让Eureka集群更加的健壮、稳定)
evictionIntervalTimerInMs: 5000 #eureka server清理无效节点的时间间隔,默认60000毫秒,即60秒
client:
registerWithEureka: true
fetchRegistry: true

#用---分割不一样的环境对应的配置信息(YML以"---"做为文档分割符,以"..."做为结束标志)
---
spring:
profiles: node1

eureka:
client:
serviceUrl:
defaultZone: http://10.200.108.50:9902/eureka/
---
spring:
profiles: node2

eureka:
client:
serviceUrl:
defaultZone: http://10.200.108.50:9901/eureka/

···
 

 

#公共配置信息
server:
  port: 9902

spring:
  application:
    name: eureka-server
  profiles:  
    active: node2

eureka:
  instance:
    prefer-ip-address: true
    instance-id: ${spring.cloud.client.ipAddress}:${server.port} 
  server:
    enableSelfPreservation: true                #关闭保护机制,以确保注册中心能够将不可用的实例剔除.(注意:自我保护模式是一种应对网络异常的安全保护措施,使用自我保护模式,可让Eureka集群更加的健壮、稳定)
    evictionIntervalTimerInMs: 5000            #eureka server清理无效节点的时间间隔,默认60000毫秒,即60秒
  client:
    registerWithEureka: true
    fetchRegistry: true
     
#用---分割不一样的环境对应的配置信息(YML以"---"做为文档分割符,以"..."做为结束标志)
---
spring:
  profiles: node1
  
eureka:
  client:
    serviceUrl:
      defaultZone: http://10.200.108.50:9902/eureka/
---
spring:
  profiles: node2
  
eureka:
  client:
    serviceUrl:
      defaultZone: http://10.200.108.50:9901/eureka/
      
···

 

 两个注册中心启动后会访问第一个或第二个都会出现以下界面:fetch

 

深刻了解一下:spa

  在实际开发中,服务注册中心不仅仅只有2个节点,而是会有两个以上的节点存在。但从上面的例子当中,咱们能够知道Eureka Server的同步遵循着一个很是简单的原则:只要能够链接集群中任意一台注册中心,就能够进行信息传播与同步。因此,若是存在多个节点,咱们只须要将节点之间两两链接起来,造成通路,那么他们之间的全部服务均可以共享。设计

咱们的服务只须要向集群中的任意一个注册中心中注册,便可被全部注册中心所共享,任意一个注册中心崩溃,都不会影响这个服务被调用。3d

这样就实现了注册中心集群的高可用。code

相关文章
相关标签/搜索