Eureka集群的搭建及分区管理

1、eureka服务端的几个重要配置

eureka:
  server:
    #清理间隔10s
    eviction-interval-timer-in-ms: 10000
    #关闭自我保护,默认开启状态
#    enable-self-preservation: false 
  instance:
    prefer-ip-address: true
  client:
    # false表示不向注册中心注册自己
#    register-with-eureka: false
    # false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    fetch-registry: false
    #优先选择client实例所在的zone的服务
    #如果prefer-same-zone-eureka为false,按照service-url下的list取第一个注册中心来注册,并维持心跳检测,不会再向list内的其他的注册中心注册和维持心跳,只有在第一个注册失败的情况,才会依次向其他注册中心注册,总共三次,如果三个service-url都没有注册成功,则注册失败,每隔一个心跳时间会再次尝试。
    #如果prefer-same-zone-eureka为true,先通过region取availability-zones内的第一个zone,然后通过这个Zone取service-url下的List,并向list内的第一个注册中心注册和维持心跳,不会再向List内的其他注册中心注册,只有在第一个注册失败的情况下才会依次向其他注册中心注册,总共三次,如果三个service-url都没有注册成功,则注册失败,每隔一个心跳时间会再次尝试。
    prefer-same-zone-eureka: true    

2、简单的Eureka高可用的搭建

简单的高可用即存在多个eureka服务,每个eureka服务向其他eureka注册自己

假设我有三个eureka,这三个eureka配置信息如下

服务1配置

server: 
  port: 8761

eureka:
  instance:
    hostname: eureka-server
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url: 
      defaultZone: http://admin:admin@localhost:8761/eureka/,http://admin:admin@localhost:8762/eureka/,http://admin:admin@localhost:8763/eureka/
  #启动自我保护模式
#  server:
#    enable-self-preservation: true

    
spring:
  application:
    name: eureka-server
  security:
    user:
      name: admin
      password: admin

服务2配置如下

server: 
  port: 8762

eureka:
  instance:
    hostname: eureka-server
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url: 
      defaultZone: http://admin:admin@localhost:8761/eureka/,http://admin:admin@localhost:8762/eureka/,http://admin:admin@localhost:8763/eureka/
  #启动自我保护模式
#  server:
#    enable-self-preservation: true

    
spring:
  application:
    name: eureka-server
  security:
    user:
      name: admin
      password: admin

服务3配置

server: 
  port: 8763

eureka:
  instance:
    hostname: eureka-server
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url: 
      defaultZone: http://admin:admin@localhost:8761/eureka/,http://admin:admin@localhost:8762/eureka/,http://admin:admin@localhost:8763/eureka/
  #启动自我保护模式
#  server:
#    enable-self-preservation: true

    
spring:
  application:
    name: eureka-server
  security:
    user:
      name: admin
      password: admin

3、Eureka的高级使用,分区管理

当我们搭建集群化服务时,会有一些特殊的需要,比如我有三个Eureka注册中心,三个注册中心所在的服务器分别是山东、北京、上海;当我访问北京的服务时,默认先访问本地的,当本地的服务无法访问里再访问其他地区。

基于这种需求,Eureka提供了一个分区的概念;主要通过eureka.client.region、eureka.client.availability-zones配置来实现。其中region指定分区, availability-zones指定服务的访问顺序

配置信息如下:

服务器1配置

spring: 
  profiles:
    active:
    - prod
  application:
    name: eureka-server
  security:
    user:
      name: admin
      password: admin
eureka:
  server:
    #清理间隔10s
    eviction-interval-timer-in-ms: 10000
    #关闭自我保护,默认开启状态
#    enable-self-preservation: false 
  instance:
    prefer-ip-address: true
    hostname: clique-eureka-server
  client:
    # false表示不向注册中心注册自己
#    register-with-eureka: false
    # false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    fetch-registry: false
    #优先选择client实例所在的zone的服务
    #如果prefer-same-zone-eureka为false,按照service-url下的list取第一个注册中心来注册,并维持心跳检测,不会再向list内的其他的注册中心注册和维持心跳,只有在第一个注册失败的情况,才会依次向其他注册中心注册,总共三次,如果三个service-url都没有注册成功,则注册失败,每隔一个心跳时间会再次尝试。
    #如果prefer-same-zone-eureka为true,先通过region取availability-zones内的第一个zone,然后通过这个Zone取service-url下的List,并向list内的第一个注册中心注册和维持心跳,不会再向List内的其他注册中心注册,只有在第一个注册失败的情况下才会依次向其他注册中心注册,总共三次,如果三个service-url都没有注册成功,则注册失败,每隔一个心跳时间会再次尝试。
    prefer-same-zone-eureka: true    

    
    region: party
    availability-zones: 
      party: clique,tingnan,hebei
    register-with-eureka: false
    service-url: 
      clique: http://admin:[email protected]:8761/eureka/
      tingnan: http://admin:[email protected]:8761/eureka/
      hebei: http://admin:[email protected]:8761/eureka/
server: 
  port: 8761    

服务器2配置

spring: 
  profiles:
    active:
    - prod
  application:
    name: eureka-server
  security:
    user:
      name: admin
      password: admin
eureka:
  server:
    #清理间隔10s
    eviction-interval-timer-in-ms: 10000
    #关闭自我保护,默认开启状态
#    enable-self-preservation: false 
  instance:
    prefer-ip-address: true
    hostname: clique-eureka-server
  client:
    # false表示不向注册中心注册自己
#    register-with-eureka: false
    # false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    fetch-registry: false
    #优先选择client实例所在的zone的服务
    #如果prefer-same-zone-eureka为false,按照service-url下的list取第一个注册中心来注册,并维持心跳检测,不会再向list内的其他的注册中心注册和维持心跳,只有在第一个注册失败的情况,才会依次向其他注册中心注册,总共三次,如果三个service-url都没有注册成功,则注册失败,每隔一个心跳时间会再次尝试。
    #如果prefer-same-zone-eureka为true,先通过region取availability-zones内的第一个zone,然后通过这个Zone取service-url下的List,并向list内的第一个注册中心注册和维持心跳,不会再向List内的其他注册中心注册,只有在第一个注册失败的情况下才会依次向其他注册中心注册,总共三次,如果三个service-url都没有注册成功,则注册失败,每隔一个心跳时间会再次尝试。
    prefer-same-zone-eureka: true    

    
    region: party
    availability-zones: 
      party: tingnan,clique,hebei
    register-with-eureka: false
    service-url: 
      clique: http://admin:[email protected]:8761/eureka/
      tingnan: http://admin:[email protected]:8761/eureka/
      hebei: http://admin:[email protected]:8761/eureka/
server: 
  port: 8761    

服务器3配置

spring: 
  profiles:
    active:
    - prod
  application:
    name: eureka-server
  security:
    user:
      name: admin
      password: admin
eureka:
  server:
    #清理间隔10s
    eviction-interval-timer-in-ms: 10000
    #关闭自我保护,默认开启状态
#    enable-self-preservation: false 
  instance:
    prefer-ip-address: true
    hostname: clique-eureka-server
  client:
    # false表示不向注册中心注册自己
#    register-with-eureka: false
    # false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    fetch-registry: false
    #优先选择client实例所在的zone的服务
    #如果prefer-same-zone-eureka为false,按照service-url下的list取第一个注册中心来注册,并维持心跳检测,不会再向list内的其他的注册中心注册和维持心跳,只有在第一个注册失败的情况,才会依次向其他注册中心注册,总共三次,如果三个service-url都没有注册成功,则注册失败,每隔一个心跳时间会再次尝试。
    #如果prefer-same-zone-eureka为true,先通过region取availability-zones内的第一个zone,然后通过这个Zone取service-url下的List,并向list内的第一个注册中心注册和维持心跳,不会再向List内的其他注册中心注册,只有在第一个注册失败的情况下才会依次向其他注册中心注册,总共三次,如果三个service-url都没有注册成功,则注册失败,每隔一个心跳时间会再次尝试。
    prefer-same-zone-eureka: true    

    
    region: party
    availability-zones: 
      party: hebei,tingnan,clique
    register-with-eureka: false
    service-url: 
      clique: http://admin:[email protected]:8761/eureka/
      tingnan: http://admin:[email protected]:8761/eureka/
      hebei: http://admin:[email protected]:8761/eureka/
server: 
  port: 8761    

注:三个Eureka中配置中只有availability-zones配置的访问顺序有区别

当eureka注册中心配置完成后,我们需要配置各微服务默认访问哪个Eureka中的服务;配置信息如下:

      
eureka: 
  instance:
    metadata-map:
      zone: clique
  client: 
    service-url:
      defaultZone: http://admin:[email protected]:8761/eureka/      

我这个微服务中只注册到了10.112.2.5服务器,同时通过eureka.instance.metadata-map.zone指定了默认访问哪个分区。即这个微服务访问其他服务时,默认是访问注册到clique这个分区中的服务,只有当这个分别中的服务不可用时才会访问其他分区中的服务

你可能感兴趣的:(JAVA,eureka,高可用,java,eureka,高可用)