前言
对于Eureka注册中心来说,如果只有一个注册中心的话,如果注册中心崩了,那么里面的服务全部用不了,系统就会崩溃。为了避免这个问题,我们可以搭建一个注册中心的集群,几个注册中心互相关联,如果一个注册中心崩了,另外的几个注册中心还能用,服务还能用,系统就不会崩溃。
准备
我们用一台电脑模拟集群,为了直观上看起来更像集群,所以我们要做一下域名映射。
找到 hosts
文件,打开文件,添加几个语句。
我们用三个Eureka注册中心搭建集群,所以做三个域名映射。无论访问 eureka7001.com
还是另外两个,都会跳转到 127.0.0.1
即 locahost
。保存退出。
集群搭建
1、搭建三个注册中心
我们先用IDEA搭建三个Eureka注册中心,端口分别为7001、7002、7003。具体搭建方法,看我的另一篇博客。此时这三个注册中心是没有任何关系的,如图示:
我们需要做的就是,把这三个注册中心关联在一起,组成一个集群。即7001要关联7002和7003,7002要关联7001和7003,7003要关联7001和7002,如图示:
2、修改配置文件
要实现上面的操作,我们只需要修改配置文件即可。
7001配置文件修改
将 hostname
修改为我们自己的域名,即 eureka7001.com
。
关联7002和7003,将 defaultZone
修改为 http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
。
server:
port: 7001
# Eureka注册中心的配置 ,搭建集群情况下,和7002以及7003搭建集群,关联7002和7003
eureka:
server:
enable-self-preservation: true # 开启自我保护模式
instance:
hostname: eureka7001.com # Eureka服务端的实例名称,即注册中心的名称,或者主机名
client:
register-with-eureka: false # 表示是否将自己往Eureka注册中心注册,因为自己就是注册中心,所以false
fetch-registry: false # 如果fetch-registry为false,则表示自己是注册中心,否则为客户端
service-url: # 监控页面,可以在这个url中监控注册中心的服务
defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
7002注册中心和7003注册中心也是类似的,我直接贴出代码。
7002配置文件修改
server:
port: 7002
# 单机情况下看7001的yml文件
# Eureka注册中心的配置,搭建集群情况下,和7001以及7003搭建集群,关联7001和7003
eureka:
server:
enable-self-preservation: true # 开启自我保护模式
instance:
hostname: eureka7002.com # Eureka服务端的实例名称,即注册中心的名称
client:
register-with-eureka: false # 表示是否将自己往Eureka注册中心注册,因为自己就是注册中心,所以false
fetch-registry: false # 如果fetch-registry为false,则表示自己是注册中心,否则为客户端
service-url: # 监控页面,可以在这个url中监控注册中心的服务
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7003.com:7003/eureka/
7003配置文件修改
server:
port: 7003
# 单机情况下看7001的yml文件
# Eureka注册中心的配置,搭建集群情况下,和7001以及7002搭建集群,关联7001和7002
eureka:
server:
enable-self-preservation: true # 开启自我保护模式
instance:
hostname: eureka7003.com # Eureka服务端的实例名称,即注册中心的名称
client:
register-with-eureka: false # 表示是否将自己往Eureka注册中心注册,因为自己就是注册中心,所以false
fetch-registry: false # 如果fetch-registry为false,则表示自己是注册中心,否则为客户端
service-url: # 监控页面,可以在这个url中监控注册中心的服务
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/
3、启动测试
分别启动三个注册中心,访问7001管理页面,即 http://eureka7001.com:7001/
,我们可以发现,7001已经关联了7002和7003,如图:
类似的访问7002和7003的管理页面,也和这个类似。
服务提供者修改
我们已经从单一注册中心,变成了一个由三个注册中心搭建的集群,那么服务提供者应该怎么把服务注册到注册中心呢?
其实很简单,修改注册中心地址即可,打开服务提供者的配置文件,将 defaultZone
修改为 http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
,即将服务同时注册到三个注册中心。启动服务进行测试,如图:
服务已经注册到了集群中,7002和7003也类似。
总结
通过Eureka注册中心搭建集群,只需要修改配置文件即可,十分方便。如果一个节点(注册中心)突然崩了,那么另外两个节点还正常运行,能正常提供服务,不会影响到系统的运行。