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的区别

原文地址:https://www.cnblogs.com/wgty/p/12810470.html