5.4Eureka高可用集群配置

在高并发的情况下一个注册中心难以满足,因此一般需要集群配置多台。

我们再新建两个module  microservice-eureka-server-2002,  microservice-eureka-server-2003,然后配置,最终的配置结果结构如图:

  

具体步骤:

第一步:每个模块的pom.xml添加如下依赖:

 <dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
<!-- 修改后立即生效,热部署 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
</dependencies>

第二步:2002  2003的主启动类EurekaServerApplication_2002,EurekaServerApplication_2003复制EurekaServerApplication_2001的修改名称;

第三步:前面单机的时候 eureka注册中心实例名称 是localhost,现在是集群,不能三个实例都是localhost,这里复杂的办法是搞三个虚拟机,麻烦,这里有简单办法,直接配置本机hosts,来实现本机域名映射;

找到 C:\Windows\System32\drivers\etc  打开hosts,加配置

127.0.0.1  eureka2001.wfd360.com

127.0.0.1  eureka2002.wfd360.com

127.0.0.1  eureka2003.wfd360.com

注意:在修改hosts文件时,建议先拷贝出来,修改好后再替换原来的hosts文件。

第四步:修改三个项目的application.yml文件,主要是修改 hostname和defaultZone,

2001 的 application.yml文件

 server:
port: 2001
context-path: / eureka:
instance:
#hostname: localhost #eureka注册中心实例名称 (单机版)
hostname: eureka2001.wfd360.com # 集群
client:
register-with-eureka: false #false 由于该应用为注册中心,所以设置为false,代表不向注册中心注册自己。
fetch-registry: false #false 由于注册中心的职责就是维护服务实例,它并不需要去检索服务,所以也设置为false
service-url:
#defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #(单机)设置与Eureka注册中心交互的地址,查询服务和注册服务用到
defaultZone: http://eureka2002.wfd360.com:2002/eureka/,http://eureka2003.wfd360.com:2003/eureka/ # 集群

2002 的 application.yml文件

 server:
port: 2002
context-path: / eureka:
instance:
#hostname: localhost #eureka注册中心实例名称 (单机版)
hostname: eureka2002.wfd360.com # 集群
client:
register-with-eureka: false #false 由于该应用为注册中心,所以设置为false,代表不向注册中心注册自己。
fetch-registry: false #false 由于注册中心的职责就是维护服务实例,它并不需要去检索服务,所以也设置为false
service-url:
#defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #(单机)设置与Eureka注册中心交互的地址,查询服务和注册服务用到
defaultZone: http://eureka2001.wfd360.com:2001/eureka/,http://eureka2003.wfd360.com:2003/eureka/ # 集群

2003 的 application.yml文件

 server:
port: 2003
context-path: / eureka:
instance:
#hostname: localhost #eureka注册中心实例名称 (单机版)
hostname: eureka2003.wfd360.com # 集群
client:
register-with-eureka: false #false 由于该应用为注册中心,所以设置为false,代表不向注册中心注册自己。
fetch-registry: false #false 由于注册中心的职责就是维护服务实例,它并不需要去检索服务,所以也设置为false
service-url:
#defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #(单机)设置与Eureka注册中心交互的地址,查询服务和注册服务用到
defaultZone: http://eureka2001.wfd360.com:2001/eureka/,http://eureka2002.wfd360.com:2002/eureka/ # 集群

第五步:修改服务提供者项目的application.yml,主要修改eureka.client.service-url.defaultZone,修改后的文件如下

 server:
port: 1001
context-path: / # 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/db_station
username: root
password: admin
jpa:
hibernate:
ddl-auto: update
show-sql: true
thymeleaf:
cache: false
# eureka 注册中心配置
eureka:
instance:
hostname: localhost #eureka客户端主机实例名称
appname: microservice-ticket #客户端服务名
instance-id: microservice-ticket:1001 #客户端实例名称
prefer-ip-address: true #显示IP
client:
service-url:
#defaultZone: http://localhost:2001/eureka #(单机eureka)把服务注册到eureka注册中心,要和前面服务注册中心(microservice-eureka-server-2001)的defaultZone暴露地址一致
defaultZone: http://eureka2001.wfd360.com:2001/eureka/,http://eureka2002.wfd360.com:2002/eureka/,http://eureka2003.wfd360.com:2003/eureka/ # 集群 # 服务提供者联系信息
info:
version: v2
负责人: 姿势帝 - 博客园
微 信: 851298348

第六步:测试

启动三个注册中心,以及服务提供者项目;

然后浏览器地址栏输入:http://eureka2001.wfd360.com:2001/

或者  http://eureka2002.wfd360.com:2002/

或者 http://eureka2003.wfd360.com:2003/

界面如下,则集群成功

  

这里本质是三个服务注册中心都有我们服务提供者的信息,等后面讲到服务发现和服务调用,我们通过一些策略(默认轮询),会去找对应的服务注册中心;通过集群,能减轻每个服务注册中心的压力;

值得注意的是,有时候会出现如下情况,这是  Eureka自我保护机制

当我们长时间为访问服务以及变更服务实例名称的时候,就会出现这个红色警告;

默认情况,如果服务注册中心再一段时间内没有接收到某个微服务实例的心跳,服务注册中心会注销该实例(默认90秒)。

由于正式环境,经常会有网络故障(如果想模拟该现象,可以先开启服务提供者,再关闭服务提供者,最后再访问注册中心),网络延迟问题发生,服务和注册中心无法正常通信,此时服务是正常的,不应该注销该服务,

Eureka这时候,就通过“自我保护模式”来解决问题,当短时间和服务失去通信时,保留服务信息,当恢复网络和通信时候,退出“自我保护模式”;

通过“自我保护模式”,使Eureka集群更加的健壮和稳定;

到这里eureka的服务端基本搞定,代码可以在github上下载,版本V4

SpringCloud-day04-Eureka高可用集群配置的更多相关文章

  1. SpringCloud之Eureka高可用集群环境搭建

    注册中心集群 在微服务中,注册中心非常核心,可以实现服务治理,如果一旦注册出现故障的时候,可能会导致整个微服务无法访问,在这时候就需要对注册中心实现高可用集群模式. Eureka集群相当简单:相互注册 ...

  2. Eureka注册中心高可用集群配置

    Eureka高可用集群配置 当注册中心扛不住高并发的时候,这时候 要用集群来扛: 我们再新建两个module  microservice-eureka-server-2002  microservic ...

  3. spring cloud 服务注册中心eureka高可用集群搭建

    spring cloud 服务注册中心eureka高可用集群搭建 一,准备工作 eureka可以类比zookeeper,本文用三台机器搭建集群,也就是说要启动三个eureka注册中心 1 本文三台eu ...

  4. MongoDB高可用集群配置的方案

    >>高可用集群的解决方案 高可用性即HA(High Availability)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性. ...

  5. MongoDB高可用集群配置方案

    原文链接:https://www.jianshu.com/p/e7e70ca7c7e5 高可用性即HA(High Availability)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非 ...

  6. Hadoop入门学习笔记-第三天(Yarn高可用集群配置及计算案例)

    什么是mapreduce 首先让我们来重温一下 hadoop 的四大组件:HDFS:分布式存储系统MapReduce:分布式计算系统YARN: hadoop 的资源调度系统Common: 以上三大组件 ...

  7. SpringCloud全家桶学习之服务注册与发现及Eureka高可用集群搭建(二)

    一.Eureka服务注册与发现 (1)Eureka是什么? Eureka是NetFlix的一个子模块,也是核心模块之一.Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故 ...

  8. SpringCloud(四):服务注册中心Eureka Eureka高可用集群搭建 Eureka自我保护机制

    第四章:服务注册中心 Eureka 4-1. Eureka 注册中心高可用集群概述在微服务架构的这种分布式系统中,我们要充分考虑各个微服务组件的高可用性 问题,不能有单点故障,由于注册中心 eurek ...

  9. RHCS高可用集群配置(luci+ricci+fence)

    一.什么是RHCS    RHCS是Red Hat Cluster Suite的缩写,也就是红帽集群套件,RHCS是一个能够提供高可用性.高可靠性.负载均衡.存储共享且经济廉价的集群工具集合,它将集群 ...

随机推荐

  1. JS将/Date(1446704778000)/转换成str

    JS将/Date(1446704778000)/转换成str:var dateStr = eval(ele.add_time.replace(/\/Date\((\d+)\)\//gi, " ...

  2. ActiveMq报错Channel was inactive for too (>30000)long

    生成环境的activemq 隔一到两周,就报错: 查看 activeme的日志: 2018-12-04 11:59:44,744 | WARN  | Transport Connection to: ...

  3. primo驱动启动顺序

    primo驱动启动顺序HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\ServiceGroupOrderSystem ReservedEMSWdfLoa ...

  4. [UE4]Event Tick

    一.每一帧都会触发Event Tick事件,“Delta Seconds”参数表示当前帧说花费的时间 二.因为各种原因(比如卡帧等),每一帧所花费的时间并不是相同的

  5. axublogcms1.1.0 Getshell

    axublogcms1.1.0 Getshell 代码执行漏洞 现在最新版是1.1.0   今天重新审计了下 axublogcms1.0.6 ,发现一处计较鸡肋的漏洞,因为并不是只有1.0.6版本存在 ...

  6. python 字符串转16进制函数

    需要用python处理16进制的文本,比如像下面这个文本 40 80 C0 40 80 C0 40 80 C0 40 80 C0 40 BF CC 40 80 C0 40 80 C0 40 80 C0 ...

  7. Shiro与基本web环境整合登陆验证实例

    1. 用maven导入Shiro依赖包 <dependency> <groupId>org.apache.shiro</groupId> <artifactI ...

  8. 洛谷题解 CF777A 【Shell Game】

    同步题解 题目翻译(可能有童鞋没读懂题面上的翻译) 给你三张牌0,1,2. 最初选一张,然后依次进行n次交换,交换规则为:中间一张和左边的一张,中间一张和右边一张,中间一张和左边一张...... 最后 ...

  9. 如何获取微信小店小程序的AppID

    2017年11月16日,微信有一个重磅的宣布:为了帮商家在微信内快速开店,方便商家和用户之间沟通,所有认证公众号,可快速创建微信小店小程序.这个改变是否能给微信小店带来新的生机?还需要时间的考验.微信 ...

  10. postgis创建空间数据库,导入shp数据

    使用向数据库中导入数据