zoukankan      html  css  js  c++  java
  • 服务注册Eureka高级

    Eureka Server 高可用集群:

      Eureka Client会定时连接Eureka Server,获取注册表中的信息并缓存到本地。微服务在消费远程API时总是使用本地缓存中的数据。因此一般来说,即使Eureka Server发生宕机,也不会影响到服务之间的调用。但如果EurekaServer宕机时,某些微服务也出现了不可用的情况,Eureka Server中的缓存若不被刷新,就可能会影响到微服务的调用,甚至影响到整个应用系统的高可用。因此,在生产环境中,通常会部署一个高可用的Eureka Server集群。

      Eureka Server可以通过运行多个实例并相互注册的方式实现高可用部署,Eureka Server实例会彼此增量地同步信息,从而确保所有节点数据一致。事实上,节点之间相互注册是Eureka Server的默认行为。
      搭建 Eureka Server高可用集群:

        修改 eureka_server 工程中的yml配置文件,添加如下配置属性,然后启动

    #模拟两个eureka server
    #端口8000 9000
    #两个server需要互相注册
    
    server:
      port: 9000
    #配置eureka server
    eureka:
      client:
        register-with-eureka: true #是否将自己注册到注册中心
        fetch-registry: true #是否从eureka中获取注册信息
        service-url: #配置暴露给Eureka Client的请求地址
         defaultZone: http://localhost:8000/eureka/

        修改一下端口和服务地址再启动一个:

    #模拟两个eureka server
    #端口8000 9000
    #两个server需要互相注册
    
    server:
      port: 8000
    #配置eureka server
    eureka:
      client:
        register-with-eureka: true #是否将自己注册到注册中心
        fetch-registry: true #是否从eureka中获取注册信息
        service-url: #配置暴露给Eureka Client的请求地址
         defaultZone: http://localhost:9000/eureka/

          Dashboard每次只能启动一个,需要复制一份配置,再启动

          

           

           这种方式可能会出现端口占用问题,即使你改了配置文件,暴力且有效的办法是再复制一个启动类来启动

        访问 http://localhost:8000/ 和 http://localhost:9000/ ,会发现注册中心 EUREKA-SERVER 已经有两个节点,并且 registered-replicas (相邻集群复制节点)中已经包含对方。
          

       服务注册到Eureka Server集群:

        如果需要将微服务注册到Eureka Server集群只需要修改yml配置文件,EurekaServer的路径增加多个即可。

    #配置Eureka
    eureka:
      client:
        service-url: #EurekaServer的路径
         defaultZone: http://localhost:9000/eureka/,http://localhost:8000/eureka/
      instance:
        prefer-ip-address: true #使用ip注册

      Eureka中的常见问题:

        监控页面显示ip

          在Eureka Server的管控台中,显示的服务实例名称默认情况下是微服务定义的名称和端口。
          为了更好的对所有服务进行定位,微服务注册到Eureka Server的时候可以手动配置显示ID。

    #配置Eureka
    eureka:
      client:
        service-url: #EurekaServer的路径
         defaultZone: http://localhost:9000/eureka/,http://localhost:9000/eureka/
      instance:
        prefer-ip-address: true #使用ip注册
        instance-ip: ${spring.cloud.client.ip-address}:${server.port}

        服务节点剔除问题

          默认情况下,由于Eureka Server剔除失效服务间隔时间为90s且存在自我保护的机制。所以不能有效而迅速的剔除失效节点,这对开发或测试会造成困扰。解决方案如下:
          Eureka Server:配置关闭自我保护,设置剔除无效节点的时间间隔

    server:
      port: 9000
    #配置eureka server
    eureka:
      client:
        register-with-eureka: true #是否将自己注册到注册中心
        fetch-registry: true #是否从eureka中获取注册信息
        service-url: #配置暴露给Eureka Client的请求地址
         defaultZone: http://127.0.0.1:8000/eureka/
      server:
        enable-self-preservation: false #关闭自我保护
        eviction-interval-timer-in-ms: 4000 #剔除时间间隔,单位毫秒

          Eureka Client:配置开启健康检查,并设置续约时间

    #配置Eureka
    eureka:
      client:
        healthcheck: true #开启健康检查(依赖spring-boot-actuator)
        service-url: #EurekaServer的路径
         defaultZone: http://localhost:9000/eureka/,http://localhost:8000/eureka/
      instance:
        prefer-ip-address: true #使用ip注册
        instance-id: ${spring.cloud.client.ip-address}:${server.port}
        lease-expiration-duration-in-seconds: 10 #eureka client发送心跳给server端后,续约到期时间(默认90秒)
        lease-renewal-interval-in-seconds: 5 #发送心跳续约间隔(默认30秒)
  • 相关阅读:
    spring详解(五)——事物管理
    spring详解(四)——JDBC
    spring详解(三)——AOP
    Spring详解(二)
    Spring详解(一)
    springMVC(九)——restful风格和异常处理
    Linux 文件权限
    如何使用Git从GitHub上下载项目
    Spring(1)
    SpringMvc(4)
  • 原文地址:https://www.cnblogs.com/roadlandscape/p/12491702.html
Copyright © 2011-2022 走看看