上一篇讲解了spring注册中心(eureka),但是存在一个单点故障的问题,一个注册中心远远无法满足实际的生产环境,那么我们需要多个注册中心进行集群,达到真正的高可用。今天我们实战来搭建一个Eureka集群。

一:集群环境搭建

第一步:我们新建两个注册中心工程一个叫eureka_register_service_master、另外一个叫eureka_register_service_backup

eureka_register_service_master的application.properties配置如下

1
2
3
4
5
6
7
8
    server.port=7998
    eureka.client.register-with-eureka=false
    eureka.client.fetch-registry=false
    spring.application.name=eureka-server
    eureka.instance.hostname=master
    eureka.client.serviceUrl.defaultZone=http://backup:7999/eureka/
    #这里配置的是backup的地址
    eureka_register_service_backup的application.properties配置如下

eureka_register_service_backup的application.properties配置如下

1
2
3
4
5
6
7
    server.port=7999
    eureka.client.register-with-eureka=false
    eureka.client.fetch-registry=false
    spring.application.name=eureka-server
    eureka.instance.hostname=backup
    #这里配置的是master的地址
    eureka.client.serviceUrl.defaultZone=http://master:7998/eureka/

上面的配置端口分别是

master端口是7998

backupr端口是7999

由于我用的是同一台机器所以需要绑定下host

127.0.0.1      master

127.0.0.1      backup

第二步:添加启动文件分别是ApplicationMaster.java,ApplicationBackUp.java

里面代码内容是一样的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        
        @EnableEurekaServer
    @SpringBootApplication
    public class ApplicationMaster {
        public static void main(String[] args) {
            SpringApplication.run(ApplicationMaster.class, args); 
        }
 
    }
     
     
    @EnableEurekaServer
    @SpringBootApplication
    public class ApplicationBackUp {
        public static void main(String[] args) {
            SpringApplication.run(ApplicationBackUp.class, args);
        }
 
    }  

第三步:启动

如果是jar启动需要 加参数 --spring.profiles.active=matser或者 --spring.profiles.active=backup

第一种方法是通过jar命令启动

1
2
3
         java -jar eureka_register_service_matser-1.0.0.jar --spring.profiles.active=matser
          
     java -jar eureka_register_service_backup-1.0.0.jar --spring.profiles.active=backup

第二种是通过eclipse点击右键Run As 启动

需要加入参数如下图

第四步:查看界面

分别打开http://127.0.0.1:7998/  和 http://127.0.0.1:7999/ 如下图

通过上图可以看

端口7998是matser它的registered-replicas指向了http://backup:7999/eureka/

端口7999是backup它的registered-replicas指向了http://master:7999/eureka/

注:有人会问为什么unavailable-replicas http://backup:7999/eureka/或者http://master:7999/eureka/ 那是因为我的配置吧

eureka.client.register-with-eureka设置成false 改成true就可以

二:服务端注册

设置了多个注册中心后,我们的服务配置不需要太多改动只需将biz-service-0工程的application.properties的serviceUrl修改下

1
 eureka.client.serviceUrl.defaultZone=http://master:7998/eureka/,http://backup:7999/eureka/,

当然也可以绑定一个地址,eureka.client.serviceUrl.defaultZone=http://master:7998/eureka/  这两种绑定都可以

三:集群理解

虽然上面我们以双节点作为例子,但是实际上因负载等原因,我们往往可能需要在生产环境构建多于两个的Eureka Server节点。那么对于如何配置serviceUrl来让集群中的服务进行同步,需要我们更深入的理解节点间的同步机制来做出决策。我们通过一张图来理解集群

源码地址:https://github.com/zhp8341/SpringCloudDemo

【微服务架构】SpringCloud之Eureka(注册中心集群篇)(三)的更多相关文章

  1. springCloud系列教程01:Eureka 注册中心集群搭建

    springCloud系列教程包含如下内容: springCloud系列教程01:Eureka 注册中心集群搭建 springCloud系列教程02:ConfigServer 配置中心server搭建 ...

  2. 一个线上问题的思考:Eureka注册中心集群如何实现客户端请求负载及故障转移?

    前言 先抛一个问题给我聪明的读者,如果你们使用微服务SpringCloud-Netflix进行业务开发,那么线上注册中心肯定也是用了集群部署,问题来了: 你了解Eureka注册中心集群如何实现客户端请 ...

  3. SpringCloud Eureka(注册中心集群)

    多个注册中心,其实用不同的配置对应 不同的端口号注册就行了. 注册中心自己也是个服务,看看之前的单个注册中心是怎么样的呢? server: port: 8888 # 服务端口eureka: insta ...

  4. eureka注册中心集群

    注册中心集群: 思想:让一个eureka注册中心 注册到 另一个eureka注册中心上去即A注册到B,B注册到A 注册中心配置: 1:端口号不同2:应用名称相同3:相互注册

  5. Spring Cloud Eureka 注册中心集群搭建,Greenwich 最新版!

    Spring Cloud 的注册中心可以由 Eureka.Consul.Zookeeper.ETCD 等来实现,这里推荐使用 Spring Cloud Eureka 来实现注册中心,它基于 Netfl ...

  6. SpringCloud微服务小白入门之Eureka注册中心和服务中心搭建示例

    一.注册中心配置文件 代码复制区域: spring: application: name: spring-cloud-server server: port: 7000 eureka: instanc ...

  7. SpringCloud之Eureka(注册中心集群篇)

    一:集群环境搭建 第一步:我们新建两个注册中心工程一个叫eureka_register_service_master,另一个叫eureka_register_service_backup eureka ...

  8. SpringCloud之Eureka(注册中心集群篇)(三)

    一:集群环境搭建 第一步:我们新建两个注册中心工程一个叫eureka_register_service_master.另外一个叫eureka_register_service_backup eurek ...

  9. 2、eureka注册中心集群

    1. Eureka作为spring cloud的服务发现与注册中心,在整个的微服务体系中,处于核心位置.单机模式下的eureka服务,显然不能满足高可用的实际生产环境,这就要求配置一个能够应对各种突发 ...

随机推荐

  1. Spring AOP详解及简单应用

    Spring AOP详解   一.前言 在以前的项目中,很少去关注spring aop的具体实现与理论,只是简单了解了一下什么是aop具体怎么用,看到了一篇博文写得还不错,就转载来学习一下,博文地址: ...

  2. 部署ASP.net MVC程序到IIS

    转:http://www.cnblogs.com/piyeyong/archive/2012/08/15/2640004.html 在网上找到一个table,列举了不同的操作系统对应的IIS版本以及配 ...

  3. 「小程序JAVA实战」开发用户redis-session(40)

    转自:https://idig8.com/2018/09/05/xiaochengxujavashizhankaifayonghuredis-session39/ 接下来我们需要在我们的项目里面配置下 ...

  4. 使用Vagrant创建多节点虚拟机集群

    摘要: 在前一篇博客中,我介绍了使用Vagrant快速创建虚拟机,但是所创建的只是单个虚拟机.这篇博客将介绍使用Vagrant创建多节点虚拟机集群,可以作为Hadoop,Spark以及Storm等分布 ...

  5. C# event 事件学习

    C# event 事件学习 运行环境:Window7 64bit,.NetFramework4.61,C# 6.0: 编者:乌龙哈里 2017-02-26 章节: 简单事件编写 模拟 WPF 控件传递 ...

  6. js添加对象数组

    json 数组也是数组  var jsonstr="[{'name':'a','value':1},{'name':'b','value':2}]"; var jsonarray  ...

  7. (转) iphone开发资源汇总

    如何用Facebook graphic api上传视频: http://developers.facebook.com/blog/post/532/ Keychain保存数据封装: https://g ...

  8. [iOS]使用autolayout的时候会有明明设置和父视图左右间距为0但却还有空隙问题

    有时候设置左右与父视图间距为0但却还有空隙,relative to margin 作怪,到关系里面,把这个取消掉.如关系里面的 firstitem 如果显示 xxView.trailling.marg ...

  9. java访问共享文件夹

    由于工作需要读取局域网中一台机器的共享目录中的文件,需要jcifs-1.1.11.jar的支持,使用SMB协议,以下是实现了远程读取文件的功能: package junit; import jcifs ...

  10. Android开发实战之拥有Material Design风格的折叠布局

    关于折叠布局,也许你并不陌生,最新版的陌陌,或者一些其他的社交APP都有一个折叠布局.折叠布局,让我们的APP更加具有交互性,同时也更加美观,先来展示一下效果图: 这是我个人做的一个APP主界面,可以 ...