SpringCloud-Netflix学习笔记05——Eureka模拟实现简单集群

前言

  对于Eureka注册中心来说,如果只有一个注册中心的话,如果注册中心崩了,那么里面的服务全部用不了,系统就会崩溃。为了避免这个问题,我们可以搭建一个注册中心的集群,几个注册中心互相关联,如果一个注册中心崩了,另外的几个注册中心还能用,服务还能用,系统就不会崩溃。

准备

  我们用一台电脑模拟集群,为了直观上看起来更像集群,所以我们要做一下域名映射。

  找到 hosts 文件,打开文件,添加几个语句。

在这里插入图片描述

  我们用三个Eureka注册中心搭建集群,所以做三个域名映射。无论访问 eureka7001.com 还是另外两个,都会跳转到 127.0.0.1locahost 。保存退出。

在这里插入图片描述

集群搭建

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注册中心搭建集群,只需要修改配置文件即可,十分方便。如果一个节点(注册中心)突然崩了,那么另外两个节点还正常运行,能正常提供服务,不会影响到系统的运行。

posted @ 2023-01-14 12:02  爱吃雪糕的小布丁  阅读(2)  评论(0编辑  收藏  举报  来源