SpringCloud实战四:Spring Cloud Eureka 高可用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhuyu19911016520/article/details/84899636

  高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指:通过设计减少系统不能提供服务的时间。
  假设系统一直能够提供服务,我们说系统的可用性是100%,如果系统每运行100个时间单位,会有1个时间单位无法提供服务,我们说系统的可用性是99%,很多公司的高可用目标是4个9,也就是99.99%,这就意味着,系统的年停机时间为8.76个小时。
  举个高可用的栗子,Redis的高可用方案,从最开始的主从模式到sentinel模式,sentinel是一个独立的进程,监控redis master-slave集群,发现master宕机后能进行自动切换,从而达到高可用。
  回到正题, eureka 注册中心怎么高可用?答案是:对等复制,即 Peer to Peer 模式,副本之间不分主从,任何副本都可以接收写操作,然后每个副本之间相互进行数据更新。

1.代码实践,创建一个 eureka-server-ha 高可用注册中心服务端,客户端只要向多个服务端注册即可,大部分代码和 eureka-server 一样,配置文件不一样了,需要多个配置文件结合,启动 eureka-server-ha 项目时,指定使用那个配置文件。
  • 假设为了达到高可用,我们需要启动3个 eureka-server 节点,3个节点的实例名分别是 peer1、peer2、peer3,它们之间相互注册,如:peer1向peer2、peer3注册,peer2向peer1、peer3注册,peer3向peer1、peer2注册来达到高可用

  • 创建一个 bootstrap.properties,在启动项目时,它里面的配置会优先加载,它里面配置security的帐号密码

  • peer1 使用10025端口,对应application-peer1.properties

  • peer2 使用10026端口,对应application-peer2.properties

  • peer3 使用10027端口,对应application-peer3.properties
    在这里插入图片描述

  • windwos 下 peer 需要修改 C:\Windows\System32\drivers\etc\hosts 文件,在里面添加peer1-3的映射
    127.0.0.1 peer1
    127.0.0.1 peer2
    127.0.0.1 peer3

这里分别贴出各配置文件代码:

#bootstrap.properties 配置登录的用户名和密码
spring.security.user.name=zy
spring.security.user.password=zy123

# application-peer1.properties
server.port=10025
spring.application.name=eureka-server-ha
spring.profiles.active=peer1
eureka.instance.hostname=peer1
eureka.client.registerWithEureka=true
# peer1 向 peer2、peer3注册
eureka.client.serviceUrl.defaultZone=http://zy:zy123@peer2:10026/eureka/,http://zy:zy123@peer3:10027/eureka/

#application-peer2.properties
server.port=10026
spring.application.name=eureka-server-ha
spring.profiles.active=peer2
eureka.instance.hostname=peer2
eureka.client.registerWithEureka=true
# peer2 向 peer1、peer3注册
eureka.client.serviceUrl.defaultZone=http://zy:zy123@peer1:10025/eureka/,http://zy:zy123@peer3:10027/eureka/

#application-peer3.properties
server.port=10027
spring.application.name=eureka-server-ha
spring.profiles.active=peer3
eureka.instance.hostname=peer3
eureka.client.registerWithEureka=true
# peer3 向 peer1、peer2注册
eureka.client.serviceUrl.defaultZone=http://zy:zy123@peer1:10025/eureka/,http://zy:zy123@peer2:10026/eureka/

然后通过IDEA的maven工具,双击 package 把项目打包成jar文件,再通过 java -jar xxx.jar 命令启动
在这里插入图片描述

cd 打包目录,否则会找不到jar,cmd启动命令如下:

java -jar eureka-server-ha-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1
java -jar eureka-server-ha-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2
java -jar eureka-server-ha-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer3

在这里插入图片描述

2.eureka-client 只需修改注册中心的地址即可,配置如下:
server.port=9600
spring.application.name=eureka-client
eureka.instance.prefer-ip-address=true
#eureka 注册中心高可用配置
eureka.client.serviceUrl.defaultZone=http://zy:zy123@peer1:10025/eureka/,http://zy:zy123@peer2:10026/eureka/,http://zy:zy123@peer3:10027/eureka/

然后启动 eureka-client

因启动了3个 eureka-server节点 ,因此可以访问3个注册中心:http://localhost:10025/http://localhost:10026/http://localhost:10027/,进入后,可以看到 DS Replicas 区域有另外2个注册中心,Instances 区域有 eureka-server-ha,后面显示有3个端口,最下面有个available-replicas
在这里插入图片描述

OK,注册中心的高可用已经完成,3个节点,挂掉一个并没有影响,还有2个节点能提供服务

猜你喜欢

转载自blog.csdn.net/zhuyu19911016520/article/details/84899636