zoukankan      html  css  js  c++  java
  • spring cloud 搭建注册中心Eureka(集群模式)

    集群

    注册中心这么关键的服务,如果是单点话,遇到故障就是毁灭性的。在一个分布式系统中,服务注册中心是最重要的基础部分,理应随时处于可以提供服务的状态。为了维持其可用性,使用集群是很好的解决方案。Eureka通过互相注册的方式来实现高可用的部署,所以我们只需要将Eureke Server配置其他可用的serviceUrl就能实现高可用部署。

    新建3个配置文件

    application-peer1.yml

    spring:
      application:
       name: Service     #应用名称,也是服务注册的名称
    
    server:
      port: 8000         #开启端口
    
    eureka:
      instance:
        hostname: peer1     #主机名
      client:
        serviceUrl:
          defaultZone: http://peer2:8001/eureka/,http://peer3:8002/eureka/    #与Eureka Server交互的地址,查询服务和服务注册都需要依赖这个地址
         #默认为http://localhost:8761/eureka,  多个地址用","分割
        fetch-registry: false                           #是否将自己注册到Eureka Server 默认为true
        register-with-eureka: true                     #是否从Eureka Server查询注册信息
      server:
        enable-self-preservation: false             #关闭自我保护模式
        eviction-interval-timer-in-ms: 4000         #清理服务间隔4s,默认60*10000

    application-peer2.yml

    spring:
      application:
        name: Service     #应用名称,也是服务注册的名称
    
    server:
      port: 8001         #开启端口
    
    eureka:
      instance:
        hostname: peer2     #主机名
      client:
        serviceUrl:
          defaultZone: http://peer1:8000/eureka/,http://peer3:8002/eureka/   #与Eureka Server交互的地址,查询服务和服务注册都需要依赖这个地址
          #默认为http://localhost:8761/eureka,  多个地址用","分割
        fetch-registry: false                           #是否将自己注册到Eureka Server 默认为true
        register-with-eureka: true                     #是否从Eureka Server查询注册信息
      server:
        enable-self-preservation: false             #关闭自我保护模式
        eviction-interval-timer-in-ms: 4000         #清理服务间隔4s,默认60*10000

    application-peer3.yml

    spring:
      application:
        name: Service     #应用名称,也是服务注册的名称
    
    server:
      port: 8002         #开启端口
    
    eureka:
      instance:
        hostname: peer3     #主机名
      client:
        serviceUrl:
          defaultZone: http://peer1:8000/eureka/,http://peer2:8001/eureka/    #与Eureka Server交互的地址,查询服务和服务注册都需要依赖这个地址
          #默认为http://localhost:8761/eureka,  多个地址用","分割
        fetch-registry: false                           #是否将自己注册到Eureka Server 默认为true
        register-with-eureka: true                     #是否从Eureka Server查询注册信息
      server:
        enable-self-preservation: false             #关闭自我保护模式
        eviction-interval-timer-in-ms: 4000         #清理服务间隔4s,默认60*10000

    注意:

    1.register-with-eureka 需要设置为true,或者不设置,默认为true

    2.hostname和defaultZone的域名不要设置为localhost,应设置为别名,并在操作系统的host文件中添加映射,

    127.0.0.1        peer1
    127.0.0.1        peer2
    127.0.0.1        peer3

       否则后台会出现registered-replicas为空的情况

    3.enable-self-preservation 设置为false 关闭自我保护模式,否则一个节点挂掉之后,不会在unavailable-replicas中出现

    在idea中设置3个启动方式,并分别设置启动时应用的配置文件名,springboot中约定 配置文件以application-{profiles}.xxx的方式命名

     

     3个同时启动,分别访问 localhost:8000, localhost:8001, localhost:8002 

     关闭节点peer1,一段时间后,peer1节点信息将出现在 unavailable-replicas 中,如果不关闭自我保护模式,则不会出现。

     再次启动peer1,又会恢复正常

     以jar包形式启动3个应用,

    java -jar -Dspring.profiles.active=peer1 Service.jar
    java -jar -Dspring.profiles.active=peer2 Service.jar
    java -jar -Dspring.profiles.active=peer3 Service.jar
  • 相关阅读:
    如何卸载Mysql
    netty4.1.32 pipeline的添加顺序和执行顺序
    protobuf 在win10系统如何编译jar包
    java swing 的各种布局layout
    一些大神的代码功底方面的文章
    图解ByteBuffer
    Eclipse 高亮显示选中的相同变量
    Java synchronized详解(java 线程同步)
    一篇非常全面的 《单例模式》 的讲解的文章
    java中ThreadLocalRandom类和Random类的使用
  • 原文地址:https://www.cnblogs.com/yhood/p/11558636.html
Copyright © 2011-2022 走看看