Spring-cloud之Eureka服务搭建、集群

eureka是什么?

eureka是Netfix的子模块之一也是核心模块,eureka有2个组件,一个eurekaServer(独立的一个微服务),这个服务主要是用来定位服务以实现中间层服务器的负载平衡和故障转移。另外一个是是eurekaClient(我们自己的微服务),是用来与server进行交互的,使服务之间的交互变的非常简单,只需要通过服务标识符即可在server中拿到想要的微服务。

角色关系图:

如何使用?

在spring-cloud项目里面加入依赖:

eureka客户端(需要注册的服务pom中添加):  

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency>

eureka服务端(eureka独立服务pom中添加):

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency>

eureka服务端项目里面加入以下配置:

server:
  port: 3000
eureka:
  server:
     enable-self-preservation: false  #关闭自我保护机制
     eviction-interval-timer-in-ms: 4000 #设置清理间隔(单位:毫秒 默认是60*1000)
  instance:
     hostname: localhost
  client:
     registerWithEureka: false #不把自己作为一个客户端注册到自己身上
    fetchRegistry: false  #不需要从服务端获取注册信息(因为在这里自己就是服务端,而且已经禁用自己注册了)
  serviceUrl:
     defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka

然后在spring-boot启动项目上 加入注解:@EnableEurekaServer 就可以启动项目了

@EnableEurekaServer
@SpringBootApplication
public class AppEureka {
  public static void main(String[] args) {
    SpringApplication.run(AppEureka.class);
 }
}

 启动即可看到注册中心页面。

eureka客户端配置:

server:
  port: 6000
eureka:
  client:
    serviceUrl:
       defaultZone: http://localhost:3000/eureka/  #eureka服务端提供的注册地址 参考服务端配置的这个路径
  instance:
     instance-id: power-1 #此实例注册到eureka服务端的唯一的实例ID
     prefer-ip-address: true #是否显示IP地址
     leaseRenewalIntervalInSeconds: 10 #eureka客户需要多长时间发送心跳给eureka服务器,表明它仍然活着,默认为30 秒 (与下面配置的单位都是秒)
     leaseExpirationDurationInSeconds: 30 #Eureka服务器在接收到实例的最后一次发出的心跳后,需要等待多久才可以将此实例删除,默认为90秒
spring:
  application:
    name: server-power #此实例注册到eureka服务端的name

接下来就可以在微服务项目的启动类中添加@EnableEurekaClient即可启动,正常即可看到如下页面

这里我们能看见 名字叫server-power的(图中将其大写了) id为 power-1的服务 注册到我们的Eureka上面来了至此,一个简单的eureka已经搭建好了。

eureka集群

eureka集群原理

服务启动后向Eureka注册,Eureka Server会将注册信息向其他Eureka Server进行同步,当服务消费者要调用服务提供者,则向服务注册中心获取服务提供者地址,然后会将服务提供者地址缓存在本地,下次再调用时,则直接从本地缓存中取,完成一次调用。

eureka集群配置

现在我们配置3个Eureka Server,端口分别是 3000,30001,30002

3个Eureka Server之间的关系分别是相互注册的关系,如下图

可能看着有点抽象,我们来看看具体配置

server:
  port: 3000
eureka:
  server:
     enable-self-preservation: false
     eviction-interval-timer-in-ms: 4000
  instance:
     hostname: eureka3000.com
  client:
    registerWithEureka: false
    fetchRegistry: false
   serviceUrl:
     defaultZone: http://eureka3001.com:3001/eureka,http://eureka3002.com:3002/eureka

这里需要注意的是这个配置

  defaultZone: http://eureka3001.com:3001/eureka,http://eureka3002.com:3002/eureka

可以这样理解:

  eureka3000 配置 eureka3001和eureka3002

  eureka3001 配置 eureka3000和eureka3002

  eureka3002 配置 eureka3000和eureka3001

这里 方便理解集群 我们做了一个域名的映射(条件不是特别支持我使用三台笔记本来测试。。。) 至于域名怎么映射的话 这里简单提一下吧 修改你的hosts文件(win10的目录在C:\Windows\System32\drivers\etc 其他系统的话自行百度一下把)附上我的hosts文件:

127.0.0.1 eureka3000.com
127.0.0.1 eureka3001.com
127.0.0.1 eureka3002.com

我们回到主题, 我们发现 集群配置与单体不同的点在于 原来是把服务注册到自己身上,而现在是注册到其它服务身上
至于为什么不注册自己了呢?,回到最上面我们说过,eureka的server会把自己的注册信息与其他的server同步,所以这里我们不需要注册到自己身上,因为另外两台服务器会配置本台服务器。(这里可能有点绕,可以参考一下刚刚那张集群环境的图,或者自己动手配置一下,另外两台eureka的配置与这个是差不多的,就不发出来了,只要注意是注册到其他的服务上面就好了)

当三台eureka配置好之后,全部启动一下就可以看见效果了:

服务端配置好集群后接下来需要配置客户端:

客户端的配置就简单了,只需要将之前单体的eureka server配置中的注册地址配置三个地址即可。

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

改为:defaultZone: http://localhost:3000/eureka/,http://eureka3001.com:3001/eureka,http://eureka3002.com:3002/eureka

这里需要注意的是这里配置三个地址并不代表当前客户端需要在Eureka Server注册三次,这里只需要注册一次就可以了,但是为什么要写三个地址呢。因为这样就可以做到高可用的配置:打个比方有3台服务器。但是突然宕机了一台, 但是其他2台还健在,依然可以注册我们的服务,换句话来讲, 只要有一台服务还建在,那么就可以注册服务。

原文地址:https://www.cnblogs.com/tongxuping/p/12293508.html

时间: 2024-08-30 13:54:49

Spring-cloud之Eureka服务搭建、集群的相关文章

Spring Cloud第八篇 | Hystrix集群监控Turbine

? 本文是Spring Cloud专栏的第八篇文章,了解前七篇文章内容有助于更好的理解本文: Spring Cloud第一篇 | Spring Cloud前言及其常用组件介绍概览 Spring Cloud第二篇 | 使用并认识Eureka注册中心 Spring Cloud第三篇 | 搭建高可用Eureka注册中心 Spring Cloud第四篇 | 客户端负载均衡Ribbon Spring Cloud第五篇 | 服务熔断Hystrix Spring Cloud第六篇 | Hystrix仪表盘监控

SpringCloud02 Eureka知识点、Eureka服务端和客户端的创建、Eureka服务端集群、Eureka客户端向集群的Eureka服务端注册

1 Eureka知识点 按照功能划分: Eureka由Eureka服务端和Eureka客户端组成 按照角色划分: Eureka由Eureka Server.Service Provider.Service Consumer组成 Eureka Server:提供服务注册和发现(即:服务注册中心) Service Provider:服务提供方(即:为其他微服务提供数据资源的服务),将自身的服务信息注册到 Eureka Server 中去供 Service Consumer 使用 Service Co

springCloud eureka服务治理集群增加安全认证

做为SpringCloud Netflix服务套件中的一部分,springCloud eureka基于Netflix Eureka做了二次封装,默认提供WEB管理页面及服务治理. 为了确保在生产环境中的,eureka注册服务的元数据及WEB管理的信息安全,可以结合spring security增加安全认证. 步骤如下: 第一步,在eureka server端,开启安全认证配置,设置访问用户名和密码. 首先,增加spring security依赖包, <dependency> <group

初始化Spring Cloud建立Eureka服务注册中心

1.新建项目 https://gitee.com/frankawp/vishnu  新建一个git项目 打开git bash git clone https://gitee.com/frankawp/vishnu git remote add vishnu https://gitee.com/frankawp/vishnu touch test git add . git commit -m initial git push origin master 初始化git完毕 刷新https://gi

springcloud系列(一) eureka注册中心集群搭建 服务消费方调用提供方

说明 eureka server为集群方式,有三个节点.服务消费者调服务提供者现在是使用了InstanceInfo的 homePageUrl("http://192.168.10.1:8001/") 代码在这里 https://gitee.com/lddxfs/microservice-parent 原文地址:https://www.cnblogs.com/LDDXFS/p/9955613.html

基于Spring Cloud的微服务构建学习-3 服务治理:Spring Cloud Eureka

基于Spring Cloud的微服务构建学习-3 服务治理:Spring Cloud Eureka 什么是服务治理 服务治理可以说是微服务架构中最为核心和基础的模块,它主要用来实现各个微服务实例的自动化注册与发现. 为什么需要服务治理模块 在最初构建微服务系统的时候可能服务并不多,我们可以通过做一些静态配置来完成服务调用 此时看着一切都还正常. 随着项目逐渐接近尾声,维护人员需要维护的服务越来越多,越来越复杂,最终形成大量的配置文件,维护将会变得越来越困难.此时,微服务应用实例自动化管理框架变得

搜索服务Solr集群搭建 使用ZooKeeper作为代理层

上篇文章搭建了zookeeper集群 那好,今天就可以搭建solr搜服服务的集群了,这个和redis 集群不同,是需要zk管理的,作为一个代理层 安装四个tomcat,修改其端口号不能冲突.8080~8083 如果是正式环境下,则分别使用4台linux作为节点 修改server.xml文件修改端口号,总共3个 以上步骤,在tomcat03,tomcat04上重复执行,但是3个端口一定要注意不能重复 向tomcat下部署solr 把单机版的solr工程复制到tomcat下即可 solr在别的机子上

基于Docker的Consul服务发现集群搭建

原文:基于Docker的Consul服务发现集群搭建 在去年的.NET Core微服务系列文章中,初步学习了一下Consul服务发现,总结了两篇文章.本次基于Docker部署的方式,以一个Demo示例来搭建一个Consul的示例集群,最后给出一个HA的架构示范,也会更加贴近于实际应用环境. 一.示例整体架构 此示例会由一个API Gateway, 一个Consul Client以及三个Consul Server组成,有关Consul的Client和Server这两种模式的Agent的背景知识,请

Spring Cloud Consul 实现服务注册和发现

Spring Cloud 是一个基于 Spring Boot 实现的云应用开发工具,它为基于 JVM 的云应用开发中涉及的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁.决策竞选.分布式会话和集群状态管理等操作提供了一种简单的开发方式.通过 Spring Boot 风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂.易部署和易维护的分布式系统开发工具包. Spring Cloud 包含了多个子项目(针对分布式系统中涉及的多个不同开源产品),比如:Sprin

基于Spring Cloud的微服务落地

请点击此处输入图片描述 微服务架构模式的核心在于如何识别服务的边界,设计出合理的微服务.但如果要将微服务架构运用到生产项目上,并且能够发挥该架构模式的重要作用,则需要微服务框架的支持. 在Java生态圈,目前使用较多的微服务框架就是集成了包括Netfilix OSS以及Spring的Spring Cloud.它包括: Spring Cloud Config:配置管理工具,支持使用Git存储配置内容,可以实现应用配置的外部化存储,支持客户端配置信息刷新.加密/解密配置内容等. Spring Clo