zoukankan      html  css  js  c++  java
  • SpringCloud---(3)实现Eureka的高可用

    上一篇:SpringCloud----(2)Eureka Server(服务治理)

      上一篇文章记录了搭建eureka servereureka client,单个client往单个eureka上面注册,这一篇文章介绍一下如何实现eureka的高可用。本篇文章的项目案例是在上一篇文章的基础上进行拓展
      说到高可用,第一反应就是加服务器嘛,让两个eureka server之间相互注册不就ok了,下面试一下能不能行。

    1.新建两个eureka server项目。

    在这里插入图片描述

    在项目的application启动类上面添加注解@EnableEurekaServer,搭建项目可以参考上一篇文章

    @SpringBootApplication
    @EnableEurekaServer
    public class Server2Application {
    
    	public static void main(String[] args) {
    		SpringApplication.run(Server2Application.class, args);
    	}
    }
    

    然后在配置文件中对eureka server进行相应的配置:

    #设置项目的端口
    server:
      port: 8084
    
    #设置注册eureka server 的url
    eureka:
      client:
        service-url:
          defaultZone: http://localhost:8082/eureka/
          #关闭eureka server自我保护机制(开发环境可以关闭,但是生产环境不建议关闭)
      server:
        enable-self-preservation: false
    
    

    注意在上面的配置文件中,项目的端口是8084,但是注册url的端口是8082,意思就是将端口为8084的eureka server 注册到端口为8082的eureka server上面。所以我们还需要再创建一个端口为8082的eureka server
      以上面相同的方式再创建一个项目,但是再配置文件中做如下配置:

    
    #设置项目端口
    server:
      port: 8082
    
    #设置 eureka 注册中心url
    eureka:
      client:
        service-url:
          defaultZone: http://localhost:8084/eureka/
         
        #关闭eureka server自我保护机制(开发环境可以关闭,但是生产环境不建议关闭)
      server:
        enable-self-preservation: false
    
    

    我们可以发现,在第二个项目中,他的端口为8082,但是注册的url为8084,也就是说8082和8084之间做了相互注册。

    2.新建一个eureka client项目。

    新建eureka client项目的步骤和方法参考上一篇文章,这里不再进行赘述,eureka client项目的配置文件如下:

    #设置项目的端口号
    server:
      port: 8083
    
    #设置应用的名称
    spring:	
      application:
        name: client
    
    #设置要注册的url(也就是 eureka server的url地址)
    eureka:
      client:
        service-url:
          defaultZone: http://localhost:8082/eureka/
    
    
    

    从配置文件中,我们可以知道eureka client的注册url是8082端口,那么我们在访问localhost:8082端口的时候,在eureka控制台上面应该是可以看到8083的eureka client的:
    在这里插入图片描述
    然后我们再访问一下http://localhost:8084/
    在这里插入图片描述
    发现两个eureka server的控制台中都能够看到端口为8083的eureka client,但是我们的在eureka client的配置文件中只是向8082端口的eureka server注册了,说明8082和8084两个eureka server之间互相注册了之后,在他们上面进行注册的eureka client信息会被同步。如果此时我们关闭端口为8082的服务,然后再访问一下http://localhost:8084/
    在这里插入图片描述

    发现刷新页面之后,client还是会在eureka控制台显示,这是eureka的心跳机制的原因,重启一下8084项目之后,控制台就不显示这个client了。
      既然eureka server要实现高可用,那肯定是希望server1宕机之后,client依然能够在server2上注册使用。我们可以在案例中端口为8083的client项目中的配置文件再将端口为8084的eureka server的url写上,所以8083端口项目的配置文件如下:

    #设置项目的端口号
    server:
      port: 8083
    
    #设置应用的名称
    spring:
      application:
        name: client
    
    #设置要注册的url(也就是 eureka server的url地址)
    eureka:
      client:
        service-url:
          defaultZone: http://localhost:8082/eureka/, http://localhost:8084/eureka/
    

    这样配置之后,再关闭eureka server1之后,eureka client也能再eureka server2上面正常注册。
    在这里插入图片描述

    下一篇:SpringCloud—(4)Eureka与Zookeeper的区别

  • 相关阅读:
    .net core 3.1 添加区域 area
    JMeter 网站并发测试工具使用教程
    .net core 3.1 使用ado.net
    .net core 3.1 mvc 调试的时 更改cshtml页面 刷新浏览器不更新
    .net core 3.1 autofac(webapi / mvc 通过)
    .net core3.1 rest api 无法接收 vue 中 axios 请求
    .net core 3.1 web api 允许跨域
    mysql 中文匹配
    mysql 分组排序
    mysql json处理
  • 原文地址:https://www.cnblogs.com/wgty/p/12810470.html
Copyright © 2011-2022 走看看