SpringCloud注册中心高可用搭建

Spring Cloud的注册中心可以由Eureka、Consul、Zookeeper、ETCD等来实现,这里推荐使用Spring Cloud Eureka来实现注册中心,它基于Netfilix的Eureka做了二次封装,完成分布式服务中服务治理的功能,微服务系统中的服务注册与发现都通过这个注册中心来进行管理。

引入Eureka Server依赖

之前的文章基础上加入Spring Cloud的依赖,现在再加入注册中心Eureka Server的依赖。

1<dependencies> 2 <dependency> 3 <groupId>org.springframework.cloud</groupId> 4 <artifactId>spring-cloud-starter-eureka-server</artifactId> 5 </dependency> 6</dependencies>

添加启动类,开启Eureka Server功能

在包根目录下加入启动类:

1@EnableEurekaServer 2@SpringBootApplication 3public class RegisterApplication { 4 5 public static void main(String[] args) { 6 new SpringApplicationBuilder(RegisterApplication.class).bannerMode(Banner.Mode.LOG) 7 .run(args); 8 } 9}

@EnableEurekaServer注解即开启注册中心服务器的功能。

添加Eureka配置

在application.yml中加入如下配置:

1spring: 2 application: 3 name: register-center 4 profiles: 5 active: register-center1 6 7eureka: 8 instance: 9 prefer-ip-address: true 10 instance-id: ${spring.cloud.client.ipAddress}:${server.port} 11 lease-expiration-duration-in-seconds: ${lease-expiration-duration-in-seconds} 12 lease-renewal-interval-in-seconds: ${lease-renewal-interval-in-seconds} 13 server: 14 enable-self-preservation: ${enable-self-preservation} 15 eviction-interval-timer-in-ms: ${eviction-interval-timer-in-ms} 16 client: 17 register-with-eureka: true 18 fetch-registry: true 19 serviceUrl: 20 defaultZone: ${register-center.urls} 21 22--- 23spring: 24 profiles: register-center1 25 26server: 27 port: ${register-center1.server.port} 28 29--- 30spring: 31 profiles: register-center2 32 33server: 34 port: ${register-center2.server.port}

这里做了两台注册中心的高可用配置register-center1,register-center2,也可以做多台,既然是高可用,每个注册中心都向别的注册中心注册自己。

Maven filter配置

${}里面的配置由maven resource filter来打包进行控制,不同的环境使用不同的配置文件。

如filter-dev.properties的配置参考如下:

1#url 2register-center1.server.ip=192.168.1.22 3register-center2.server.ip=192.168.1.23 4register-center.urls=http://${register-center1.server.ip}:${register-center1.server.port}/eureka/,http://${register-center2.server.ip}:${register-center2.server.port}/eureka/ 5 6#port 7register-center1.server.port=7001 8register-center2.server.port=7002 9 10#config 11enable-self-preservation=false 12eviction-interval-timer-in-ms=5000 13lease-expiration-duration-in-seconds=20 14lease-renewal-interval-in-seconds=6

Spring Cloud配置详解

Spring Boot的配置参考Spring Boot系列文章,这里只对Spring Cloud用到的配置解释。

spring.application.name:配置应用名称,在注册中心中显示的服务注册名称。

spring.cloud.client.ipAddress:获取客户端的IP地址。

eureka.instance.prefer-ip-address:配置为true为喜欢IP,即连接注册中心使用IP地址形式,也可以使用HOSTNAME,但生产环境不推荐。

eureka.instance.instance-id:配置在注册中心注册的唯一实例ID。

eureka.instance.lease-expiration-duration-in-seconds:指示eureka服务器在接收到最后一个心跳之后等待的时间(秒),然后才能从此视图中删除此实例,并禁止此实例的流量。将此值设置得太长可能意味着流量可以路由到实例,即使实例不存在。设置此值太小可能意味着,由于临时网络故障,实例可能会被取消流量。此值将设置为至少高于lease-renewal-interval-in-seconds中指定的值。

eureka.instance.lease-renewal-interval-in-seconds:指示eureka客户端需要向eureka服务器发送心跳以指示它仍然存在的频率(以秒为单位)。如果在lease-expiration-duration-in-seconds中指定的时间段内未收到心跳线,则eureka服务器将从其视图中删除该实例,因此不允许此实例的流量。请注意,如果该实例实现HealthCheckCallback,然后决定使其本身不可用,则该实例仍然可能无法访问流量。

eureka.server.enable-self-preservation:配置注册中心是否开启服务的自我保护功能。

eureka.server.eviction-interval-timer-in-ms:配置注册中心清理无效节点的时间间隔,默认60000毫秒,即60秒。

eureka.client.register-with-eureka:配置为true指示此实例将其信息注册到eureka服务器以供其他人发现。在某些情况下,您不希望发现实例,而您只想发现其他实例配置为false。

eureka.client.fetch-registry:指示该客户端是否应从eureka服务器获取eureka注册表信息。。

eureka.client.serviceUrl.defaultZone:Eureka服务器地址。

启动注册中心

这样一个两个注册心的Eureka Server就搭好了,启动的时候使用不同的Profile来指定不同的端口。

1spring-boot:run -Drun.profiles=register-center1 -P dev 2spring-boot:run -Drun.profiles=register-center2 -P dev

推荐:Spring Boot & Cloud 最强技术教程

扫描关注我们的微信公众号,干货每天更新。

image

点赞
收藏

评论区

加载中...

相关推荐

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

Spring Cloud Eureka源代码解析(1)Eureka启动,原生启动与SpringCloudEureka启动异同

Eureka作为服务注册中心对整个微服务架构起着最核心的整合作用,因此对Eureka还是有很大的必要进行深入研究。Eureka1.x版本是纯基于servlet的应用。为了与springcloud结合使用,除了本身eureka代码,还有个粘合模块springcloudnetflixeurekaserver。在我们启动EurekaServer实例

springcloud中微服务的优雅停机(已验证)

 大部分项目部署中,为了方便,可能都直接使用kill9服务的pid来停掉服务。但是由于Eureka采用心跳的机制来上下线服务,会导致服务消费者调用此已经kill的服务提供者然后出错。可以采用以下方式来解决:核心是先调用方法主动通知Eureka注册中心服务下线,然后再停掉服务。本文会介绍几种eureka注册中心服务下线的方式最不可取

SpringCloud(一)之微服务核心组件Eureka(注册中心)的介绍和使用

一Eureka服务治理体系1.1服务治理服务治理是微服务架构中最为核心和基础的模块,它主要用来实现各个微服务实例的自动化注册和发现。SpringCloudEureka是SpringCloudNetflix微服务套件中的一部分,它基于NetflixEureka做了二次封装。主要负责完成微服务架构中的服务治理功能。Eur

Spring Cloud系列教程(六):服务注册与发现Consul(Finchley版本)

一、前言在微服务领域,服务注册与发现是其中很重要的一个模块,主要用于服务治理问题;在分布式Dubbo中常用的服务发现与注册中心是Zookeeper,Cosul与其类似,在SpringCloud刚占领市场的时候,SpringCloud微服务框架默认使用的注册中心组建是Eureka,总所周知,Eureka已经开始闭源了,

SpringCloud常用组件

springcloud中有五大核心组件Eureka、Ribbon、Feign、Hystrix、Zuul,简单记录如下。Eureka是微服务架构中的注册中心,专门负责服务的注册与发现。EurekaClient组件专门负责将服务的信息注册到EurekaServer中,而EurekaServer是一个注册中心,里面有一个注册表,保存了各服务所在