Eclipse(STS) 初次搭建Spring Cloud项目之Eureka高可用配置(二)

一、 什么是高可用

高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。

二、 Eureka如何实现高可用

完成第一个注册中心项目,环境无需改变,本文高可用是模拟操作,所以我们的操作是启动两个注册中心项目,通过修改配置文件达到同样的效果。

首先修改hosts文件,在文件下面添加以下两行代码

C:\Windows\System32\drivers\etc路径下,hosts文件

修改Server端代码

打开cloud-demo-eureka-server项目,在src/main/resource下创建application-server-1.yml和application-server-2.yml

注意yml文件当中hosthome节点的修改

application-server-1.yml内容如下

server:
 port: 8761 # 你的端口
spring:
  security:
    user:
      name: admin
      password: admin
  application:
    name: service-registry
eureka:
 instance:
   hostname: server1 # 你的地址
 client:
   registerWithEureka: true
   fetchRegistry: true # fetchRegistry表示是否从eureka服务器获取注册信息
   serviceUrl:
     #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
     defaultZone: http://admin:admin@server2:8762/eureka/
复制代码

application-server-2.yml内容如下

server:
 port: 8762 # 你的端口
spring:
  security:
    user:
      name: admin
      password: admin
  application:
    name: service-registry
eureka:
 instance:
   hostname: server2 # 你的地址
 client:
   registerWithEureka: true
   fetchRegistry: true # fetchRegistry表示是否从eureka服务器获取注册信息
   serviceUrl:
      #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
      defaultZone: http://admin:admin@server1:8761/eureka/
复制代码

注意观察:defaultZone:http://admin:admin@server1:8761/eureka/ 这里的配置为两个注册中心server端互相注册。registerWithEureka和fetchRegistry两个属性要设置为true

原application.yml改为如下内容:(启动两次修改此配置文件即可,server-1,和server-2分别启动一次)

spring:
  profiles:
    active:
    - server-1
复制代码

修改完成启动项目

启动第一个项目肯定会报错,因为互相注册导致无法找到另一个服务,不用惊慌,把两个服务全部启动。访问http://localhost:8761或http://localhost:8762 ,DS Replicas显示为另一个服务

这里可以发现SERVICE-REGISTRY这个服务已经启动了两个了。下面我修改客户端cloud-demo-eureka-client代码

修改客户端代码

打开cloud-demo-eureka-client项目,打开src/main/resource/application.yml,修改内容,将两个注册中心地址都填写在defaultZone节点中,并启动服务,如下图显示内容,则启动成功。

spring:
  application:
    name: service-eureka-client #服务名称
server:
  port: 8800 #端口
eureka:
  client:
    service-url:
      defaultZone: http://admin:admin@server1:8761/eureka/,http://admin:admin@server2:8762/eureka/
复制代码

下面我们关闭server1的eureka-server,之后访问http://localhost:8762

下面我们再次开启server1的eureka-server服务,访问http://localhost:8762

可以发现我们的模拟高可用已经实现了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值