1.Eureka Server高可用集群
在生产环境中,通常会部署一个Eureka Server集群,提升整个系统的高可用性
1. Eureka Server可以通过
运行多个实例
并相互注册的方式实现高可用部署
2.
Eureka Server实例会彼此增量同步信息,确保所有节点数据的一致性
3.节点之间相互注册时Eureka Server的默认行为
2.编写高可用Eureka Server(双节点)
2.1 配置操作系统的hosts
Linux、Mac OS系统的文件路径为
/etc/hosts
Windows系统的文件路径为
C:\Windows\System32\drivers\etc\hosts
以Windows为例 直接在hosts文件中添加以下内容即可
2.2 创建/修改项目
创建项目microservice-discovery-eureka-ha(从之前microservice-discovery-eureka项目复制并修改其pom.xml中的ArtifactId为microservice-discovery-eureka-ha)
我是直接修改了之前单节点的Eureka Server,将其配置文件application.xml修改如下:
spring:
application:
name: microservice-discovery-eureka
---
spring:
profiles: peer1 # 指定profile=peer1
server:
port: 8761
eureka:
instance:
hostname: peer1 # 指定当profile=peer1时,主机名是peer1
client:
serviceUrl:
defaultZone: http://peer2:8762/eureka/ # 将自己注册到peer2这个Eureka上面去
---
spring:
profiles: peer2
server:
port: 8762
eureka:
instance:
hostname: peer2
client:
serviceUrl:
defaultZone: http://peer1:8761/eureka/
配置文件定义了
2
个Profile
---
将文件分为三段
第2、3段分别为profiles指定了一个值,该值表示它所在段的内容应用在哪个Profile里;
第1段没有profiles值,表示该段内容对所有Profile生效
当以
peer1
这个Profile启动应用时,配置该Eureka Server的主机名为peer1,并将其注册到http://peer2:8762/eureka/
当以
peer2
这个Profile启动应用时,配置该Eureka Server的主机名为peer2,并将其注册到http://peer1:8761/eureka/
2.3. 测试
启动Eureka Server的方式:
方法1 打包项目,命令行中启动:
1.打包项目,为jar包,在IDEA的Maven里面找到package双击即可生成 jar包。
2.在两个cmd中分别启动2个Eureka Server节点(注意jar包的路径):
通过--spring.profiles.active指定 使用哪个Profile启动
3.访问
http://localhost:8761
和
http://localhost:8762
会看到2个节点已经分别互相注册啦~
方法2 直接在IDEA启动:
1.通过修改IDEA的运行配置:
2.分别运行peer1和peer2:
3.浏览器访问即可啦~~~
2.4更精简的配置方式
修改配置文件application.yml,内容如下:
spring:
application:
name: microservice-discovery-eureka
eureka:
client:
serviceUrl:
defaultZone: http://peer2:8762/eureka/, http://peer1:8761/eureka/
---
spring:
profiles: peer1
server:
port: 8761
eureka:
instance:
hostname: peer1
---
spring:
profiles: peer2
server:
port: 8762
eureka:
instance:
hostname: peer2
3.将微服务注册到Eureka Server集群
以microservice-provider-user为例,只需要修改
eureka.client.serviceUrl.defaultZone
,配置多个地址:
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/, http://localhost:8762/eureka/
提示:
即使只配置Eureka Server集群一个节点的地址,因为集群节点间会相互同步,也可以正常注册到集群
建议配置多个节点地址,避免极端情况出现
访问
http://localhost:8761
和
http://localhost:8762
会看到microservice-provider-user已经注册到两个服务发现的节点啦~