zoukankan      html  css  js  c++  java
  • SpringCloud项目之Eureka高可用集群

    创建一个Eureka高可用集群:

    编写这个集群非常简单,只需修改单实例Eureka Server的配置即可:先搭建一个Eureka server,然后更改application.yml配置如下:

    spring:
      application:
        name: EurekaServer  # 指定注册到eureka server上的服务名称
    ---
    #yml文件中支持使用三个短横线分割文档块  不同的文档块表示不同的配置
    spring:
      profiles: peer1
    server:
      port: 8761
    eureka:
      instance:
        hostname: peer1 #指定当profile=peer1时,主机名是peer1
      client:
        serviceUrl:
          defaultZone: http://peer2:8762/eureka  # 将自己注册到peer2这个Eureka上面去 指定eureka server通信地址
    
    ---
    spring:
      profiles: peer2
    server:
      port: 8762
    eureka:
      instance:
        hostname: peer2
      client:
        serviceUrl:
          defaultZone: http://peer1:8761/eureka/
    

      

    其中的---代码不同的文档块,与写成两份yml配置文件功能相同。

    为系统配置主机名:

    • 如果两个Eureka Server实例在同一台机器上启动,那么配置hosts的这一步不能少。原因:Eureka Server对端口是不敏感的,这意味着,如果直接用IP的形式(例如地址写成http://127.0.0.1:8761/eureka/)相互注册,Eureka Server误认为两个Eureka Server实例是一个实例——这会造成Eureka Server首页显示不正常等一系列问题!!
    • vim /etc/hosts
      # 添加如下内容
      127.0.0.1 peer1 peer2

      对于Windows系统,则修改C:windowssystem32driversetchosts文件

              Eureka Server对端口是不敏感的,这意味着,如果直接用IP的形式(例如地址写成http://127.0.0.1:8761/eureka/)相互注册,Eureka Server误认为两个Eureka Server实例是一个实例——这会造成Eureka Server首页显示不正常等一系列问题!!

    启动Eureka Server服务

    IDEA 点击下图所示图标,点击Edit Configurations,添加多个应用,通过设置--spring.profiles.active=?来表示读取哪一份配置文件:

     两个应用,peer1 读取配置是peer1的,peer2读取配置是peer2的:

    分别启动两个应用:

     在浏览器输入http://localhost:8762/ 与 http://localhost:8761/

    可见两个应用都启动成功:

    集群已经创建好了,那么怎么将应用注册集群上呢?

    将应用注册到Eureka Server集群上

    创建一个Eureka Client服务,只须修改eureka.client.serviceUrl.defaultZone,配置上面的多个Eureka Server地址,就可以将其注册到Eureka Server集群了。

    eureka:
      client:
        serviceUrl:
          defaultZone: http://peer1:8761/eureka/,http://peer2:8762/eureka/
    

    微服务即使只配置Eureka Server集群中的某个节点,也能正常注册到Eureka Server集群,因为多个Eureka Server之间的数据会相互同步,正常情况下,这种方式与配置多个Server节点的效果是一样的。但是需要注意的是,如果所有的client 都是只通过一个Server进行注册,如果注册的那台server挂掉了,那么后续的client就无法再注册上来,重启Client后也无法再注册到eureka上来。容易造成单点故障。

    到此Eureka的高可用集群就完成了。

    下面再解释一下Eureka Server 与Eureka Client:

    Eureka 包含server和client两个基本组件,以下摘自Netflix的描述 
    引用
    
    Eureka 提供两种组件,
    一是基于REST形式,用来提供负载均衡和中间层服务故障转移的Eureka server;
    二是一个基于Java的客户端,可以用来更好的server交互,Eureka client包含一个內建的基于round-robin(轮询)的负载均衡策略。

    对于我们的微服务应用,除了Eureka之外的都可配置eureka client属性,也就是说它们都是eureka client。

  • 相关阅读:
    【BZOJ4826】【HNOI2017】影魔(扫描线,单调栈)
    【BZOJ4540】【HNOI2016】序列(莫队)
    【NOIP2017】列队(Splay)
    ZJOI2018酱油记
    【BZOJ4828】【HNOI2017】大佬(动态规划)
    【NOIP2017】宝藏(状态压缩,动态规划)
    【HDU4336】Card Collector (动态规划,数学期望)
    【HDU4652】Dice(数学期望,动态规划)
    【BZOJ4945】【NOI2017】游戏(搜索,2-sat)
    【BZOJ3714】Kuglarz(最小生成树)
  • 原文地址:https://www.cnblogs.com/yunyunde/p/11195296.html
Copyright © 2011-2022 走看看