Eureka的高可用
前言
Eureka服务是一个单点服务,在生产环境就会出现单点故障,为了确保Eureka服务的高可用,我需要搭建Eureka服务的集群。搭建Eureka集群非常简单,只要启动多个Eureka Server服务并且让这些Server端之间彼此进行注册即可实现。
第一步,修改eureka server端的application.yml文件:
端口8888:
eureka:
client:
###是否将自己注册到Eureka服务中,集群的时候为true
register-with-eureka: true
fetch-registry: true
server:
enable-self-preservation: false
spring:
application:
###起名为eureka
name: eureka
第二步,修改配置文件,再建一个Eureka server工程,启动两个工程(两个工程的name属性一样)测试:
端口8889:
server:
port: 8889
eureka:
server:
enable-self-preservation: false
eviction-interval-timer-in-ms: 2000
instance:
hostname: localhost
client:
###是否将自己注册到Eureka服务中,因为该应用本身就是注册中心,不需要再注册自己(集群的时候为true)
register-with-eureka: true
###是否从Eureka中获取注册信息,因为自己为注册中心,不会在该应用中的检索服务信息
fetch-registry: true
###客户端调用地址
serviceUrl:
defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@${eureka.instance.hostname}:${server.port}/eureka/
spring:
application:
name: eureka
security:
basic:
enable: true
#开启基于HTTP basic的认证
user:
#配置用户的账号信息
name: oy
password: 123456
其他的配置就和之前的一样
测试结果:
第三步,将client端服务注册到Eureka高可用集群:
服务注册到Eureka集群时,可以指定多个,也可以指定一个Eureka服务(因为Eureka服务集群间彼此互联)。
eureka:
client:
service-url:
defaultZone: http://oy:123456@127.0.0.1:8888/eureka/,http://oy:123456@127.0.0.1:8889/eureka/
重启启动,测试:可以通过停止其中一个Eureka server服务进行测试,结果会发现集群是高可用。
即:启动2个Eureka服务端(注册中心),1个商品服务(product),1个订单服务(order)。停掉其中一个Eureka服务端后,访问另外一个Eureka服务端页面可以看到item服务立马切换到此注册中心,订单服务照样可以访问商品服务,浏览器输入http://localhost:8081/order/create还能获取到商品数据(因为商品服务同时注册到了2个注册中心)。