Spring Cloud 学习笔记二:搭建微服务工程之使用 Eureka 集群搭建实现高可用服务注册中心

目录

使用 Eureka 集群搭建实现高可用服务注册中心

搭建步骤


使用 Eureka 集群搭建实现高可用服务注册中心

前面我们搭建的注册中心只适合本地开发使用,在生产环境中必须搭建一个集群来保证高可用。Eureka 的集群搭建方法很简单:每一台 Eureka 只需要在配置中指定另外多个 Eureka 的地址就可以实现一个集群的搭建了。

下面我们以 2 个节点为例来说明搭建方式。假设我们有 master 和 slave1 两台机器,需要做的就是:

  • 将 master 注册到 slave1 上面。

  • 将 slave1 注册到 master 上面。

如果是 3 台机器,以此类推:

  • 将 master 注册到 slave1 和 slave2 上面。

  • 将 slave1 注册到 master 和 slave2 上面。

  • 将 slave2 注册到 master 和 slave1 上面。

搭建步骤

前面单机的时候 Eureka 注册中心实例名称 是 localhost ,现在是集群,不能三个实例都是 localhost,这里复杂的办法是搞三个虚拟机,简单办法,直接配置本机 hosts,来实现本机域名映射,找到 C:\Windows\System32\drivers\etc (如果你使用的是 osx、Linux 系统。可以找到/etc/hosts文件)打开 hosts,加配置:

127.0.0.1  eureka-master.com
127.0.0.1  eureka-slave1.com
#127.0.0.1  eureka-slave2.com

 创建一个新的 module 模块 blog-eureka-server-cluster,配置跟 blog-eureka-server 一样。

首先,我们需要增加 2 个属性文件,在不同的环境下启动不同的实例。

增加 application-master.properties

eureka:
  client:
    service-url:
      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@eureka-slave1.com:8762/eureka/     
  instance:
    hostname: eureka-master.com
server:
  port: 8761

增加 application-slave1.yml

eureka:
  client:
    service-url:
      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@eureka-master.com:8761/eureka/   
  instance:
    hostname: eureka-slave1.com
server:
  port: 8762

application.yml 中添加下面的配置:

spring:
  profiles:
    active: master
  application:
    name: blog-eureka-server-cluster # app名称
  security:
    user:
      name: admin
      password: admin
eureka:
  client:
  	# 由于注册中心的职责就是维护服务实例,它并不需要去检索服务,所以也设置为 false
    fetch-registry: false
    # 由于该应用为注册中心,所以设置为false,代表不向注册中心注册自己
    register-with-eureka: false

在 A 机器上默认用 master 启动,然后在 B 机器上加上 --spring.profiles.active=slave1 启动即可。 这样就将 master 注册到了 slave1 中,将 slaveone 注册到了 master 中,无论谁出现问题,应用都能继续使用存活的注册中心。

之前在客户端中我们通过配置 eureka.client.service-url.defaultZone 来指定对应的注册中心,当我们的注册中心有多个节点后,就需要修改 eureka.client.service-url.defaultZone 的配置为多个节点的地址,多个地址用英文逗号隔开即可:

eureka.client.service-url.defaultZone=http://admin:admin@eureka-master.com:8761/eureka/,http://admin:admin@eureka-slave1.com:8762/eureka/

其实客户端配置任意一个节点即可,Eureka 会同步每个节点的实例信息。

可能你会看到:It seems to be a socket read timeout exception, it will retry later. if it continues to happen and some eureka node occupied all the cpu time, you should set property 'eureka.server.peer-node-read-timeout-ms' to a bigger value.

eureka.server.peer-node-read-timeout-ms 集群节点之间读取超时时间默认200ms,设置大一点值即可。

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

stary1993

你的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值