Spring Cloud Eureka高可用的服务注册中心(二)
来看看Eureka的高可用是怎么回事
集群原理图
如果只有一个注册中心(服务端),一旦挂掉,就直接GG,在分布式系统中,任何地方存在单点故障,整个系统就不是高可用的。(自己手画的难看见谅)

创建服务端2
在上一篇文章中写了最简单的单服务端,单客户端的例子。所以,在上一篇的基础上,继续新建一个服务端,起名字叫做服务端2 登录spring官网 https://start.spring.io/ 保存到本地之后,导入项目 服务器2(EurekaServerTwo)启动类添加注解
@EnableEurekaServer
修改EurekaServerTwo配置文件application.yml
server:
port: 8762
eureka:
client:
service-url:
# #注册中心路径,表示我们向这个注册中心注册服务,如果向多个注册中心注册,用“,”进行分隔
# 向端口8761注册(两个服务端互相注册)
defaultZone: http://server01:8761/eureka/
# 指示此实例是否应将其信息注册到eureka服务器以供其他服务发现,默认为false
register-with-eureka: false
instance:
# 该服务实例所在主机名
hostname: server02
server:
# 启用自我保护机制,默认为true
enable-self-preservation: false
spring:
profiles: server02
修改服务器1EurekaServer
修改EurekaServer项目的配置文件application.yml
server:
port: 8761
eureka:
client:
service-url:
# 注册中心路径,表示我们向这个注册中心注册服务,如果向多个注册中心注册,用“,”进行分隔
# 向端口8762注册(两个服务端互相注册)
defaultZone: http://server02:8762/eureka/
# 指示此实例是否应将其信息注册到eureka服务器以供其他服务发现,默认为false
register-with-eureka: false
instance:
# 该服务实例所在主机名
hostname: server01
server:
# 启用自我保护机制,默认为true
enable-self-preservation: false
spring:
profiles: server01
修改电脑hosts文件
修改host文件添加对application.yml配置文件中hostname的映射 打开电脑C:\Windows\System32\drivers\etc 找到hosts,在文件最后输入
127.0.0.1 server01
127.0.0.1 server02
注意使用管理员权限,不然没办法保存
启动查看效果
修改启动配置项 在服务器1配置
-Dspring.profiles.active=server01
在服务器2配置
-Dspring.profiles.active=server02
启动服务器1,启动服务器2,启动客户端 如果在启动中报错,先则是因为服务器1向服务器2注册没有连接上,等你服务器2启动完毕就不会报错了。 最终在浏览器查看效果 http://localhost:8761/http://localhost:8762/
停止服务器1
此时检验效果,停止服务器1,即端口号为:8761的服务器 稍微等待一会,因为有默认的失效时间。 查看http://localhost:8762 此时客户端已经消失, 这是因为客户端没有配置服务器2的注册。
修改客户端
修改EurekaClient项目的配置文件application.yml 将两个注册中心全部配置上去
spring:
application:
name: eureka-client
server:
port: 8711
eureka:
client:
service-url:
#注册中心路径,表示我们向这个注册中心注册服务,如果向多个注册中心注册,用“,”进行分隔
defaultZone: http://server01:8761/eureka/,http://server02:8762/eureka/
将server02注册进来,重新启动服务端1,服务端2,客户端,再次演示上面断掉服务端1的操作 这个时候server02就能一直显示客户端的注册
这样就算一个服务器挂掉,对整体也不会有影响了。