eureka server服务注册中心配置

eureka简介

Eureka是Netflix开发的一个Service Discovery组件,spring cloud将其整合用来做服务注册中心,Eureka包括两部分Eureka Server 和 Eureka Client

  • Eureka Server:服务注册中心,治理注册到eureka server的服务
  • Eureka Client:用来和eureka server交互,注册服务

Eureka中有下面几种概念:

  • 同步:
  • 续约:
  • 续租:
  • 自我保护:

Eureka采用了AP,保证了eureka server集群的高可用性
CAP理论指的是一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。

eureka Standalone Mode

eureka的单机模式,在pom引入spring-cloud-starter-netflix-eureka-server依赖

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

在application.yml做如下配置

eureka:
    instance:
        hostname: localhost
    client:
        #不注册自己到eureka serve
        registerWithEureka: false
        #不提取注册中心的消息
        fetchRegistry: false
    serviceUrl:
        defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

启动eureka一段时间后,如果没有服务注册,会有提示

EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.

这表明eureka进入自我保护机制,可以配置开启还是关闭。

eureka cluster

eureka的集群模式,在pom引入spring-cloud-starter-netflix-eureka-server依赖

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

搭建eureka集群时为了便于区分不同的节点,在hosts文件中做如下映射

# eureka erver
127.0.0.1		eureka-7901
127.0.0.1		eureka-7902
127.0.0.1		eureka-7903

在application.yml做如下配置

spring:
  application:
	name: eureka-cluster
---
spring:
  profiles: eureka-7901
server:
  port: 7901
eureka:
  instance:
	hostname: eureka-7901
	lease-renewal-interval-in-seconds: 30
	lease-expiration-duration-in-seconds: 90
  client:
	fetch-registry: true
	register-with-eureka: true
	service-url:
	  defaultZone: http://eureka-7902:7902/eureka/,http://eureka-7903:7903/eureka/
  server:
	enable-self-preservation: true
	eviction-interval-timer-in-ms: 6000
---
spring:
  profiles: eureka-7902
server:
  port: 7902
eureka:
  instance:
	hostname: eureka-7902
	lease-renewal-interval-in-seconds: 30
	lease-expiration-duration-in-seconds: 90
  client:
	fetch-registry: true
	register-with-eureka: true
	service-url:
	  defaultZone: http://eureka-7901:7901/eureka/,http://eureka-7903:7903/eureka/
  server:
	enable-self-preservation: true
	eviction-interval-timer-in-ms: 6000
---
spring:
  profiles: eureka-7903
server:
  port: 7903
eureka:
  instance:
	hostname: eureka-7903
	lease-renewal-interval-in-seconds: 30
	lease-expiration-duration-in-seconds: 90
  client:
	fetch-registry: true
	register-with-eureka: true
	service-url:
	  defaultZone: http://eureka-7901:7901/eureka/,http://eureka-7902:7902/eureka/
  server:
	enable-self-preservation: true
	eviction-interval-timer-in-ms: 6000

在idea中启动时,指定启动参数

注意:两个配置启动参数的地方配置一个就可以了

启动ar包可以使用命令

java -jar  eureka-server.jar  --spring.profiles.active=eureka-7901

在application.yml中register-with-eureka: true将自身注册为eureka server,在defdeaultZone中指定其余eureka server指定除自己外的所有节点,互相注册,每个节点在启动过程中会去请求连接其他节点,因此在初始启动阶段会报错,等所有节点启动稳定后,就会相互注册。

访问http://eureka-7901:7901,可以看到eureka-7901中注册了eureka-7902,eureka-7903,表明互相注册成功

猜你喜欢

转载自www.cnblogs.com/conly/p/12546027.html