spring cloud (八) 服务注册中心 eureka 高可用集群配置搭建server端以及client端

目录

 

为啥用eureka集群

分布式和集群有啥区别?

搭建eureka集群

创建server端项目

pom文件配置

配置application.yml

还要注意:配置hosts文件  位置  C:\Windows\System32\drivers\etc

启动类上添加@EnableEurekaServer 注解

配置两个server,分别启动

client客户端

pom文件

配置application.yml

 启动类

启动项目


为啥用eureka集群

Eureka,作为spring cloud的服务发现与注册中心,在整个的微服务体系中,处于核心位置。单一的eureka服务,显然不能满足高可用的实际生产环境,这就要求我们配置一个能够应对各种突发情况,具有较强容灾能力的eureka服务。

分布式和集群有啥区别?

所以分布式的每一个节点,完成的是不同的业务,一个节点挂了,那么这个业务功能就无法访问了,甚至可能会影响到其他业务。而集群是一个比较有组织的架构,正因为有组织性,一个服务节点挂了,其他服务节点可以顶上来,从而保证了服务的健壮性。你中有我,我中有你,手拉手肩并肩,一起保证服务的健壮性。

搭建eureka集群

创建server端项目

spring cloud (八) 服务注册中心 eureka 高可用集群配置搭建server端以及client端_第1张图片

pom文件配置

注意:要写 dependencyManagement    spring-cloud-starter-eureka-server server端需要加server



	4.0.0
	
		org.springframework.boot
		spring-boot-starter-parent
		1.5.13.RELEASE
		 
	
	com.lgh
	eurekapeer1
	0.0.1-SNAPSHOT
	eurekapeer1
	Demo project for Spring Boot

	
		
			
				org.springframework.cloud
				spring-cloud-dependencies
				Dalston.SR5
				pom
				import
			
		
	

	
		1.8
		Greenwich.SR1
	

	
		
			org.springframework.cloud
			spring-cloud-starter
		
		
			org.springframework.cloud
			spring-cloud-starter-eureka-server
		
		
			org.springframework.boot
			spring-boot-starter-test
			test
		
	

	
		
			
				org.springframework.boot
				spring-boot-maven-plugin
			
		
	


配置application.yml

spring:
  application:
    name: eureka
  profiles:
    active: server1

配置application-server1.yml和application-server2.yml

给这两个配置文件两个不同的接口。

instance.hostname是唯一标识。

互相给他们两个对方的url      

application-server1.yml

server:
  port: 8001
eureka:
  instance:
    hostname: server1
  client:
    # 这里是集群,则不需要配置这两个
    # 表示是否注册自身到eureka服务器
    # register-with-eureka: false
    # 是否从eureka上获取注册信息
    # fetch-registry: false
    service-url:
      defaultZone: http://server2:8002/eureka/

application-server2.yml

server:
  port: 8002
eureka:
  instance:
    hostname: server2
  client:
    service-url:
      defaultZone: http://server1:8001/eureka/

还要注意:配置hosts文件  位置  C:\Windows\System32\drivers\etc

spring cloud (八) 服务注册中心 eureka 高可用集群配置搭建server端以及client端_第2张图片
 

127.0.0.1        server1
127.0.0.1        server2 

spring cloud (八) 服务注册中心 eureka 高可用集群配置搭建server端以及client端_第3张图片

启动类上添加@EnableEurekaServer 注解

spring cloud (八) 服务注册中心 eureka 高可用集群配置搭建server端以及client端_第4张图片

启动服务

配置两个server,分别启动

spring cloud (八) 服务注册中心 eureka 高可用集群配置搭建server端以及client端_第5张图片

spring cloud (八) 服务注册中心 eureka 高可用集群配置搭建server端以及client端_第6张图片

spring cloud (八) 服务注册中心 eureka 高可用集群配置搭建server端以及client端_第7张图片

然后分别启动这两个服务就可以了。当启动第一个服务的时候,因为第二个服务没有启动,所以,会一直报错。但不影响。虽然报错,项目依然正常启动,然后启动第二个项目。

注:EUREKA_CLIENT 是我写的的一个客户端client项目,client项目停掉后,并不会消失

spring cloud (八) 服务注册中心 eureka 高可用集群配置搭建server端以及client端_第8张图片

spring cloud (八) 服务注册中心 eureka 高可用集群配置搭建server端以及client端_第9张图片

这时两个注册中心就都有互相的地址了。

解释一下上面的红色的问题

这是Eureka的自我保护模式。如果在Eureka Server的首页看到以下这段提示,则说明Eureka已经进入了保护模式。

保护模式主要用于一组客户端和Eureka Server之间存在网络分区场景下的保护。一旦进入保护模式,Eureka Server将会尝试保护其服务注册表中的信息,不再删除服务注册表中的数据(也就是不会注销任何微服务)。

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  AMIs n/a(2)

因为我们没有为这两个注册中心进行命名,所以系统默认了名称,所以会出现两个。

当我们给两个配置文件各自给一个名字。

server 1

spring:
  application:
    name: spring-cloud-eureka1

server2

spring:
  application:
    name: spring-cloud-eureka2

spring cloud (八) 服务注册中心 eureka 高可用集群配置搭建server端以及client端_第10张图片

spring cloud (八) 服务注册中心 eureka 高可用集群配置搭建server端以及client端_第11张图片

这样我们也可以更明显的看出来没有配置

# 表示是否注册自身到eureka服务器
# register-with-eureka: false
# 是否从eureka上获取注册信息
# fetch-registry: false

的结果是,会将自己当成客户端进行注册。

以上就是server端的搭建配置

client客户端

搭建项目

spring cloud (八) 服务注册中心 eureka 高可用集群配置搭建server端以及client端_第12张图片

pom文件

和上面的一样,就是把eureka-server去掉server


		1.8
	
	
		
			
				org.springframework.cloud
				spring-cloud-dependencies
				Dalston.SR5
				pom
				import
			
		
	
	
		
			org.springframework.boot
			spring-boot-starter
		
		
			org.springframework.cloud
			spring-cloud-starter-eureka
		
		
			org.springframework.boot
			spring-boot-starter-test
			test
		
	

配置application.yml

这里只需要配置一个server1 8001就可以了。然后启动后会发现,server2也能发现这个客户端项目

spring:
  application:
    name: eureka_client
eureka:
  client:
    service-url:
      defaultZone:  http://server1:8001/eureka

 启动类

添加注解@EnableEurekaClient

spring cloud (八) 服务注册中心 eureka 高可用集群配置搭建server端以及client端_第13张图片

启动项目

刷新server1和server2管理界面。会发现两个注册中心都能发现,client项目

spring cloud (八) 服务注册中心 eureka 高可用集群配置搭建server端以及client端_第14张图片

spring cloud (八) 服务注册中心 eureka 高可用集群配置搭建server端以及client端_第15张图片

 这样的话,无论那一个server停掉宕机,都不会造成多大的影响。当我们停掉server1时,server2同样还能发现client客户端。

你可能感兴趣的:(spring,cloud,eureka集群,spring,cloud)