在生产环境中通常会搭建一个集群来保证高可用。Eureka集群的搭建方法很简单:每一台Eureka只需要在配置中指定另外多个Eureka的地址就可以实现一个集群的搭建了。
假设我们有master和slaveone、slavetwo三台机器,在集群搭建的时候
将master注册到slaveone和slavetwo上面
将slaveone注册到master和slavetwo上面
将slavetwo注册到master和slaveone上面
搭建步奏如下(以两台服务器配置为例):
第一步:在Eureka服务端(注册中心)相关的代码中新增两个配置文件application-master.yml和application-slaveone.yml
其中application-master.yml配置内容如下
server:
port: 8761
#指向你的从节点Eureka
eureka:
client:
serviceUrl:
defaultZone: http://smile:111111@localhost:8762/eureka/
application-slaveone.yml配置内容如下
server:
port: 8762
#指向你的主节点Eureka
eureka:
client:
serviceUrl:
defaultZone: http://smile:111111@localhost:8761/eureka/
第二步:修改配置文件application.yml,具体修改为指定使用的配置文件,在这里默认指定任意一个,我指定master
spring:
application:
name: smile-eureka-server
security:
user:
name: smile
password: 111111
#指定不同的环境
profiles:
active: master
mvc:
throw-exception-if-no-handler-found: true
eureka:
client:
#由于该应用为注册中心,所以设置为false,代表不向注册中心注册自己
register-with-eureka: false
#由于注册中心的职责就是维护服务实例,它并不需要去检索服务,所以也设置为false
fetch-registry: false
server:
#关闭注册中心自我保护机制
enable-self-preservation: true
#注册中心清理间隔,单位为毫秒
eviction-interval-timer-in-ms: 10000
第三步:服务启动
项目打包,在服务器上默认用master启动,然后再在服务器上启动一个服务,加上--spring.profiles.active=slaveone 也就是另外一个服务启动指定使用配置文件applicaiton-slaveone.yml
这样就将master注册到了slaveone,将slaveone注册到了master,无论哪一个服务出现问题,应用都能继续使用存活的注册中心。
第四步:应用
当我们为注册中心搭建集群后,在Eureka客户端配置文件中,就需要修改eureka.client.serviceUrl.defaultZone的配置为多个节点的地址,多个地址用英文逗号隔开即可。
eureka:
client:
serviceUrl:
defaultZone: http://smile:111111@localhost:8761/eureka/,http://smile:111111@localhost:8762/eureka/