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

1、 什么是高可用

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

2、 Eureka如何实现高可用

完成第一个注册中心项目,环境无需改变,本文高可用是模拟操做,因此咱们的操做是启动两个注册中心项目,经过修改配置文件达到一样的效果。bash

首先修改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节点中,并启动服务,以下图显示内容,则启动成功。app

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:8762fetch

能够发现咱们的模拟高可用已经实现了

相关文章
相关标签/搜索