上一篇:SpringCloud----(2)Eureka Server(服务治理)
上一篇文章记录了搭建eureka server
和eureka 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
上面正常注册。