美文网首页
服务发现-Eureka集群搭建

服务发现-Eureka集群搭建

作者: bclz | 来源:发表于2019-08-07 11:38 被阅读0次

    spring-boot版本: 2.1.2.RELEASE
    spring-cloud版本 : Greenwich.SR1
    参考: https://cloud.spring.io/spring-cloud-static/Greenwich.SR2/multi/multi_spring-cloud.html

    1. 搭建Eureka工程

    可以参考本人搭建的eureka-server、config-server工程见文末[1],这里采用的是通过注册中心获取配置(注册中心可以采用git,我这里采用的是local模式,即项目配置文件在resource/config下)

    2. 在线扩容

    Eureka采用Peer to Peer架构,在线扩容非常容易,也感谢Netflix给开发者提供了如此简单的平台。

    Spring-boot2.0以上默认隐藏关键mapping,需要开启刷新配置的mapping,提供刷新配置功能,各个服务都需要加上:

    management:
      endpoints:
        web:
          exposure:
            include: refresh
    

    1.单节点

    Eureka:19955
    Client:19960

    项目初期可能只需要一台Eureka服务就足矣了,甚至可以直接采用Spring-cloud官网生成的Eureka代码就可以解决问题了,并且都不用自我注册.

    • [config-server]下resource/config/eureka-server.yml配置:
    management:
      endpoints:
        web:
          exposure:
            include: refresh
    server:
      port: 19955
    spring:
      application:
        name: eureka-server
      security:
        basic:
          enabled: true
        user:
          name: admin
          password: 123
    eureka:
      instance:
        prefer-ip-address: true
        hostname: localhost
        lease-renewal-interval-in-seconds: 10
      client:
        fetch-registry: false #是否从Eureka Server获取注册信息,单节点不需要
        register-with-eureka: false #是否注册eureka server
        service-url:
          defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@${eureka.instance.hostname}:19955/eureka/
      server:
        eviction-interval-timer-in-ms: 5000
        response-cache-auto-expiration-in-seconds: 60
        #自我保护
        enable-self-preservation: true
        #在Eureka服务器获取不到集群里对等服务器上的实例时,需要等待的时间,单位为毫秒,
        wait-time-in-ms-when-sync-empty: 0
    
    • [config-server]下resource/config/t-client.yml配置:
    server:
      port: 19960
    spring:
      application:
        name: t-client
    eureka:
      client:
        fetch-registry: true
        register-with-eureka: true
        service-url:
          defaultZone: http://admin:123@localhost:19955/eureka/
        registry-fetch-interval-seconds: 5
    
    

    2.两个节点

    Eureka:19955,Eureka:19956
    Client:19960

    项目业务扩大,服务太多,单节点不足以满足现有的服务数量,增加一个节点,两个Eureka相互注册:

    • [config-server]下resource/config/eureka-server-peer1.yml配置(只列举了部分改变的配置):
    server:
      port: 19956
    eureka.client.service-url.defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@${eureka.instance.hostname}:19955/eureka/
    
    • 单节点的[config-server]下resource/config/eureka-server.yml也需要修改注册地址(只列举了部分改变的配置):
    eureka.client.service-url.defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@${eureka.instance.hostname}:19956/eureka/
    
    • 客户端[config-server]下resource/config/t-client.yml配置,需要修改注册Eureka地址为两个Eureka(只列举了扩容相关部分配置):
    eureka.client.service-url.defaultZone: http://admin:123@${eureka.instance.hostname}:19955/eureka/,http://admin:123@${eureka.instance.hostname}:19956/eureka/
    

    接下来,
    1.启动新增加的Eureka:19956(使用idea->Edit Configureation->右上角Allow parallel run打勾-> 添加Name:spring.profiles.active,Value: peer1),重启config-server;
    2.使用postman请求 POST http://localhost:19955/actuator/refresh刷新配置,添加Basic Auth ,Eureka账号密码admin:123(也可关闭,去掉Security依赖);

    1. 同样方法刷新client:19960配置.
      动态扩容结束

    3.三个节点

    Eureka:19955,Eureka:19956,Eureka:19957
    Client:19960
    同理:启动新加的19957 Eureka服务,重启config-server,
    刷新eureka-server,eureka-peer1,t-client配置.

    后续,如果需要更大的集群可以采用region内的Zone之间Peer to Peer复制


    1. 最终配置: Eureka工程

    相关文章

      网友评论

          本文标题:服务发现-Eureka集群搭建

          本文链接:https://www.haomeiwen.com/subject/rsondctx.html