Eureka高可用

作者: 二月_春风 | 来源:发表于2018-08-23 23:19 被阅读33次

    在微服务中我们要考虑到发生故障的情况,所以说对服务注册中心也要进行高可用部署。

    官方对于Eureka 高可用的描述:
    Eureka can be made even more resilient and available by running multiple instances and asking them to register with each other. In fact, this is the default behaviour, so all you need to do to make it work is add a valid serviceUrl to a peer, e.g.

    就是通过多个eureka实例进行互相注册,然后修改每个实例的serviceUrl即可。Eureka Server的高可用实际上就是将自己作为服务向其他服务注册中心注册自己,这样就可以形成一组互相注册的服务注册中心,以实现服务清单的互相同步,达到高可用的效果。

    之前的有配置:

    eureka:
      client:
        register-with-eureka: false
        fetch-registry: false
    

    让服务注册中心不注册自己。

    创建application-peer1.yml文件

    eureka:
      instance:
        hostname: peer1
      client:
        register-with-eureka: true # 当然这个默认就是true,表示向eureka注册自己
        fetch-registry: true # 这个的意思是从eureka server拉取注册表,集群中从相邻的eureka server拉取注册表
        service-url:
          defaultZone: http://peer2:8762/eureka/
          
    
    server:
      port: 8761
    spring:
      application:
        name: eureka-server
    

    向peer2注册自己。

    创建application-peer2.yml文件,配置

    eureka:
      instance:
        hostname: peer2
      client:
        register-with-eureka: true # 当然这个默认就是true,表示向eureka注册自己
        fetch-registry: true # 这个的意思是从eureka server拉取注册表,集群中从相邻的eureka server拉取注册表
        service-url:
          defaultZone: http://peer1:8761/eureka/
    
    server:
      port: 8762
    spring:
      application:
        name: eureka-server
    

    向peer1注册自己

    当然二个application.ymldefaultZone也可以设置成http://peer1:8761/eureka,http://peer2:8762/eureka/

    修改vim /etc/hosts文件配置映射

    127.0.0.1       peer1
    127.0.0.1       peer2
    

    通过spring.profiles.active属性来启动不同的环境,当然生产上肯定就是二台不同的服务了,这边只是在单机上模拟Eureka Server的高可用。
    启动的时候指定不一样的配置文件,

    java -jar eureka-server-1.0-SNAPSHOT.jar --spring.profiles.active=peer1
    java -jar eureka-server-1.0-SNAPSHOT.jar --spring.profiles.active=peer2
    

    访问http://localhost:8761/

    8671

    访问http://localhost:8762/

    8762

    服务提供者消费者配置也要做一些修改,这边以服务提供者为例,其实严格意义上一个服务可以做服务提供者也可以做服务消费者

    server:
      port: 8088
    spring:
      application:
        name: ServiceA
    eureka:
      instance:
        hostname: localhost
      client:
        serviceUrl:
          defaultZone: http://peer1:8761/eureka,http://peer2:8762/eureka/
    

    此时如果断开peer1,则AService也会向peer2上注册。所以依然能够访问到AService服务,从而实现服务注册中心的高可用。

    image.png

    Service Discovery: Eureka Server # Peer Awareness

    相关文章

      网友评论

        本文标题:Eureka高可用

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