Eureka Server 高可用环境需要部署两个Eureka server,它们互相向对方注册。如果在本机启动两个Eureka需要注意两个Eureka Server的端口要设置不一样,这里我们部署一个Eureka Server工程,将端口可配置,制作两个Eureka Server启动脚本,启动不同的端口,如下图:
1、在实际使用时Eureka Server至少部署两台服务器,实现高可用。
2、两台Eureka Server互相注册。
3、微服务需要连接两台Eureka Server注册,当其中一台Eureka死掉也不会影响服务的注册与发现。
4、微服务会定时向Eureka server发送心跳,报告自己的状态。
5、微服务从注册中心获取服务地址以RESTful方式发起远程调用。
我们先修改一下本地hosts 文件,修改一下端口映射
hosts 文件位置 C:\Windows\System32\drivers\etc
添加端口映射
127.0.0.1 eureka01
127.0.0.1 eureka02
application.yml 配置如下
1、 端口配置
server:
port: ${PORT:50101} #服务端口
${port:50101}的意思是 从 环境变量中获取 port数据,如果没有,那么端口就设置成 50101
2、Eureka服务端的交互地址可配置
eureka:
client:
register-with-eureka: true #注册服务,是否将自己注册到Eureka服务中
fetch-registry: false #服务发现,是否从Eureka中获取注册信息
service-url: #Eureka客户端与Eureka服务端的交互地址,高可用状态配置对方的地址,单机状态配置自己(如果不配置默认本机)
defaultZone: ${EUREKA_SERVER:http://eureka02:50102/eureka/} #本机
${EUREKA_SERVER:http://127.0.0.1:50102/eureka/} 的意思跟端口的其实是一样的,从环境变量中获取Eureka,如果没有 交互地址就设置成 http://127.0.0.1:50102/eureka/
3、配置hostname
Eureka 组成高可用,两个Eureka互相向对方注册,这里需要通过域名或主机名访问,这里我们设置两个Eureka服务的主机名分别为 eureka01、eureka02。
instance:
hostname: ${EUREKA_DOMAIN:eureka01}
4、完整配置文件
server:
port: ${PORT:50101} #服务端口
spring:
application:
name: xxx-govern-center #指定服务名
eureka:
client:
register-with-eureka: true #注册服务,是否将自己注册到Eureka服务中
fetch-registry: false #服务发现,是否从Eureka中获取注册信息
service-url: #Eureka客户端与Eureka服务端的交互地址,高可用状态配置对方的地址,单机状态配置自己(如果不配置默认本机)
defaultZone: ${EUREKA_SERVER:http://eureka02:50102/eureka/} #本机
server:
enable-self-preservation: false #是否开启自我保护模式,微服务因网络问题断开但是是活的,仍在注册中心中注册
eviction-interval-timer-in-ms: 60000 #服务注册表清理间隔(单位毫秒,默认是60*1000)
instance:
hostname: ${EUREKA_DOMAIN:eureka01}
lease-renewal-interval-in-seconds: 30 # 心跳时间
lease-expiration-duration-in-seconds: 90 #到期时间
然后配置一下 Spring Boot 启动时的环境变量
-D 就是配置环境变量的命令
eureka01的完整命令如下
-DPORT=50101 -DEUREKA_SERVER=http://eureka02:50102/eureka/ -DEUREKA_DOMAIN=eureka01
eureka02的完整命令如下
-DPORT=50102 -DEUREKA_SERVER=http://eureka01:50101/eureka/ -DEUREKA_DOMAIN=eureka02
运行两个启动脚本,分别浏览:
http://localhost:50101/ 或 http://eureka01:50101/
http://localhost:50102/ 或 http://eureka02:50102/
大功告成。