zoukankan      html  css  js  c++  java
  • SpringCloud系列四:实现Eureka Server的高可用并将应用注册到Eureka Sever集群上

    1. 回顾

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

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

    2. 构建一个双节点的Eureka Server集群

      > 复制项目microservice-discovery-eureka,将ArtifactId修改为microservice-discovery-eureka-ha01

      > 复制项目microservice-discovery-eureka,将ArtifactId修改为microservice-discovery-eureka-ha02

      > 修改hosts文件,在windows平台下,进入目录:C:WindowsSystem32driversetc,然后用管理员权限打开hosts文件,添加一条记录

    127.0.0.1 peer1 peer2

      > 修改microservice-discovery-eureka-ha01的配置文件application.yml

    server:
      port: 8762
    eureka:
      instance:
        hostname: peer1
      client:
        service-url:
          defaultZone: http://peer2:8763/eureka # 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。
    spring:
      application:
        name: microservice-discovery-eureka-ha

      > 修改microservice-discovery-eureka-ha02的配置文件application.yml

    server:
      port: 8763
    eureka:
      instance:
        hostname: peer2
      client:
        service-url:
          defaultZone: http://peer1:8762/eureka # 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。
    spring:
      application:
        name: microservice-discovery-eureka-ha

      > 两个项目的spring.application.name必须相同,eureka.instance.hostname必须不同,否则都会失败。(至少我测试的是这样

      > 启动两个项目,访问:http://peer1:8762/http://peer2:8763/ ,此时registered-replicas(已注册分片)都有另一个系统的url地址,并且都在available-replicase(可用分片)中

    3. 将微服务注册到Eureka Server集群上 

      > 修改microservice-provider-user中的配置文件application.yml,将eureka.client.service-url.defaultZone改为http://peer1:8762/eureka/

    eureka:
      client:
        service-url:
          defaultZone: http://peer1:8762/eureka/

      > 修改microservice-consumer-movie中的配置文件application.yml,将eureka.client.service-url.defaultZone改为http://peer1:8762/eureka/,http://peer2:8763/eureka/

    eureka:
      client:
        service-url:
          defaultZone: http://peer1:8762/eureka/,http://peer2:8763/eureka

      > 先启动Eureka Server集群,再启动这两个微服务。访问:http://peer1:8762/ http://peer2:8763/。发现这两个微服务都注册在了集群里。

        说明即使微服务只配置Eureka Server集群中的某个节点,也能正常注册到Eureka Server集群,因为多个Eureka Server之间的数据会相互同步。

        不过为适应某些极端场景,建议在客户端配置多个Eureka Server节点。

    4.  总结

      前面几篇博客讲的Eureka Server都是允许匿名访问的。

      下一篇博客将讲解为Eureka Server添加用户认证。敬请期待~~~

    5. 参考

      周立 --- 《Spring Cloud与Docker微服务架构与实战》

  • 相关阅读:
    jwplayer播放器停止 单页内多个jwplayer对象停止问题
    jquery.smint.js 页面菜单浮动之谷歌浏览器异常
    jquery获取不到append出来的新元素的解决办法
    Received an invalid response. Origin 'null' is therefore not allowed access
    Java中转UTC时间字符串(含有T Z)为local时间
    OSS 图片处理流程
    java8中的map 和reduce
    MySQL的语句执行顺序
    数据库死锁解决办法
    mysql查询用if控制显示列
  • 原文地址:https://www.cnblogs.com/jinjiyese153/p/8611342.html
Copyright © 2011-2022 走看看