Eureka集群的搭建

上次说过了在SpringCloud应用中使用Eureka注册中心,用来对服务提供者进行服务注册与发现,但同时,它也是一个“微服务”,单个应用使用空间有限,因此和zookeeper一样,它也需要搭建集群(Cluster)。

搭建Eureka集群的原理就是创建多个eureka应用(端口不同),然后将所有的注册中心的地址联合到一起。下边就以创建三个集群为例

一、将之前的创建的eureka项目复制三份

复制三份是为了不破坏原来的项目,让小伙伴们更好地学习

  • 先创建三个子Module,然后复制pom.xml中信依赖,复制application.yml,然后各自创建启动类
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
server:
port: 7001 eureka:
instance:
hostname: localhost #eureka服务端的实例名称
client:
register-with-eureka: false #false表示不向注册中心注册自己。
fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
service-url:
# 这两个变量就是上边定义过的
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址。

二、修改application.yml

这是最主要的也是最关键的一步,就是修改其中的eureka.client.service-url.defaultZone这一项目。之前是这样的

http://${eureka.instance.hostname}:${server.port}/eureka/

之前使用的是变量,就是当前文件中定义过的eureka.instance.hostname和server.port 这一个地址,现在有了集群后,就要直接写死了。修改原则如下:

  • 在任意一个eureka项目中,将上边这个地址修改为其他两个eureka项目的地址,中间用逗号隔开
  • 但是呢,这三个eureka项目的hostname还不能一样,不能全都是localhost,所以开发的时候,要在本地设置虚拟域名
  • 在windows下的C:\Windows\System32\drivers\etc\HOSTS文件最后添加如下
127.0.0.1 eureka1
127.0.0.1 eureka2
127.0.0.1 eureka3

这样,就可以将eureka项目中的hostname改为上边三个中的一个了

比如,eureka-cluster-7001这个项目修改后的application.yml如下:

server:
port: 7001 eureka:
instance:
hostname: eureka1 #eureka服务端的实例名称
client:
register-with-eureka: false #false表示不向注册中心注册自己。
fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
service-url:
# 单个eureka
# defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址。
# euraka集群
defaultZone: http://eureka2:7002/eureka/,http://eureka3:7003/eureka
  • 然后依次修改其他的两个eureka项目,最后再用浏览器打开任意一个eureka项目的地址,可以看到如下界面

  • 在随意访问三个地址,可以在任意一个项目中看到其他两个集集群

三、修改服务提供者来注册到集群

  • 之前是单个eureka项目,所以服务提供者就只有一个注册地址。现在是集群,所以要修改服务提供者的中的eureka注册地址了

我改的是demo2-providereureka8001中的配置文件,修改如下:

eureka:
client: #客户端注册进eureka服务列表内
service-url:
# 这个地址是在eureka的application.yml中定义过的
# 单个eureka项目的的注册地址
# defaultZone: http://localhost:7001/eureka
# eureka集群的注册地址
defaultZone: http://eureka1:7001/eureka,http://eureka2:7002/eureka,http://eureka3:7003/eureka

改完之后,然后启动这个提供者项目 ,就可以在eureka集群的任意一个项目中看到这个服务了

关注微信公众号“小鱼与Java”获取本项目代码和更多SpringCloud知识

SpringCloud学习之—Eureka集群搭建的更多相关文章

  1. SpringCloud学习之eureka集群配置

    一.集群方案及部署思路: 如果是单节点的注册中心,是无法保证系统稳定性的,当然现在项目部署架构不可能是单节点的. 集群节点的部署思路:通过运行多个实例并请求他们相互注册,来完成注册中心的高可用性(结伴 ...

  2. springcloud费话之Eureka集群

    目录: springcloud费话之Eureka基础 springcloud费话之Eureka集群 springcloud费话之Eureka服务访问(restTemplate) springcloud ...

  3. 微服务架构:Eureka集群搭建

    版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! 服务注册.发现是微服务架构的关键原理之一,由于微服务架构是由一系列职责单一的细粒度服务构成的网状结构,服务之间通过轻量机制进行通信,这就必 ...

  4. Eureka集群搭建

    服务注册.发现是微服务架构的关键原理之一,由于微服务架构是由一系列职责单一的细粒度服务构成的网状结构,服务之间通过轻量机制进行通信,这就必然引入一个服务注册发现的问题,也就是说服务提供方要注册报告服务 ...

  5. kafka学习(三)-kafka集群搭建

    kafka集群搭建 下面简单的介绍一下kafka的集群搭建,单个kafka的安装更简单,下面以集群搭建为例子. 我们设置并部署有三个节点的 kafka 集合体,必须在每个节点上遵循下面的步骤来启动 k ...

  6. kafka学习(二)-zookeeper集群搭建

    zookeeper概念 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名 服务等.Zookeeper是h ...

  7. 【转载】MQTT的学习之Mosquitto集群搭建

    本文出自:http://www.cnblogs.com/yinyi521/p/6087215.html 文章钢要: 1.进行双服务器搭建 2.进行多服务器搭建 一.Mosquitto的分布式集群部署 ...

  8. Spring Cloud Eureka 集群搭建 - 以及发现一个 “直觉BUG”

    首先解释一下标题所说的“直觉BUG”,这个是我自己的定义.就是我们直觉上认为这是一个BUG,是一个错误,而实际并没有出错. 比如下图: 虽然出现报错信息,但是,整个程序并没有出错.至于原因,图片上的文 ...

  9. redis 学习笔记-cluster集群搭建

    一.下载最新版redis 编译 目前最新版是3.0.7,下载地址:http://www.redis.io/download 编译很简单,一个make命令即可,不清楚的同学,可参考我之前的笔记: red ...

随机推荐

  1. 迈向Angular 2

    目录 序言 XV第1章 Angular 2快速上手 1Web的进化——新框架时代 2ECMAScript的进化 2Web Component 3WebWorker 4从AngularJS 1.x中学到 ...

  2. Maven的学习之路1

    对于下列这段Maven的命令行有不懂之处,在zgmzyr的博客上得到了解释.非常感谢这位博友,写在自己的随笔上以便查看和修改. 1. 创建项目 $ mvn archetype:generate -Dg ...

  3. 如何用Git.io来生成自定义后缀名的短网址

    如何用Git.io来生成自定义后缀名的短网址 git.io是Github的官方短网址,它是用来缩短Github上项目的网址. 效果:Git.io/wacsh将会跳转到https://xhemj.git ...

  4. 终于知道为什么linux文件系统权限是124了

    哈哈,恍然大悟,出自pythonweb开发实战这一本书135页,有兴趣的朋友可以去了解下!

  5. Ecplise中指定tomcat里Web项目发布文件

    有时候发布项目时,我们会看到Ecplise会自动把一些并不是我们想需要的文件也发布到服务器上,可以通过以下方式解决: Properties->Deployment Assembly

  6. vue的v-if和v-show的区别

    引言 vue这两条指令,在面试vue经常会被问道它们的区别,今天我也好好查看了以下文档,做做笔记. 相同点 它们都用于条件渲染,都可以隐藏和显示DOM元素. v-if 通过判断条件成立与否,适当的销毁 ...

  7. python中map()和dict()的用法

    map()用法 map()是python的内置函数,会根据提供的函数对指定序列做映射. 语法: map(func, iter, ...) 其中func为一个功能函数,iter表示可迭代参数序列.map ...

  8. 基于 H5 和 webGL 的 3d 智慧城市

    前言 中共中央.国务院在今年12月印发了<长江三角洲区域一体化发展规划纲要>(下文简称<纲要>),并发出通知,要求各地区各部门结合实际认真贯彻落实. <纲要>强调, ...

  9. 06讲案例篇:系统的CPU使用率很高,但为啥却找不到高CPU的应用

    小结 碰到常规问题无法解释的 CPU 使用率情况时,首先要想到有可能是短时应用导致的问题,比如有可能是下面这两种情况. 第一,应用里直接调用了其他二进制程序,这些程序通常运行时间比较短,通过 top ...

  10. VS2013下OpenCV2.48配置

    VS2013+OpenCV2.48配置 一.下载OpenCV OpenCV下载地址http://opencv.org/ SDK下载链接在页面右侧 根据平台选择相应的SDK下载.在Windows开发下开 ...