Spring Cloud Eureka服务注册中心 多节点搭建(学习总结)

一、前言:

本文主要搭建Spring Cloud Eureka服务注册中心(多节点), 本文基于SpringBoot 1.5.2,Spring Cloud Camden.SR6版本编写,版本不一致可能会有差异。下面就学习总结记录一下:

二、搭建Eureka-Server

首先,引入相应的依赖pom.xml:



	4.0.0

	com.springcloud.wsh
	springcloud_hign_availability_eureka_server
	0.0.1-SNAPSHOT
	jar

	springcloud_hign_availability_eureka_server
	Spring Cloud Eureka高可用

	
		org.springframework.boot
		spring-boot-starter-parent
		1.5.2.RELEASE
		 
	

	
		UTF-8
		UTF-8
		1.8
		Camden.SR6
	

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

	
		
			
				org.springframework.cloud
				spring-cloud-dependencies
				${spring-cloud.version}
				pom
				import
			
		
	

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



三、启动类加上@EnableEurekaServer注解,开启Eureka服务发现的功能:

/** 
 * @Description:  高可用Eureka服务注册中心
 * @Author: WeiShiHuai  
 * @Date: 2018/9/7 11:45
 * Eureka Server的高可用实际上就是将自己做为服务向其他服务注册中心注册自己
 * 只要有一条边将节点连接,就可以进行信息传播与同步。可以采用两两注册的方式实现集群中节点完全对等的效果,实现最高可用性集群,任何一台注册中心故障都不会影响服务的注册与发现
*/
@SpringBootApplication
@EnableEurekaServer
public class SpringcloudHignAvailabilityEurekaServerApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringcloudHignAvailabilityEurekaServerApplication.class, args);
	}
}

四、新建三个配置文件

application-availability1.yml:

server:
  port: 3333  #服务端口号
eureka:
  client:
    service-url:
      #相互注册,组成一个集群,实现高可用
      defaultZone: http://availability2:4444/eureka/,http://availability3:5555/eureka/
  instance:
    #主机名
    hostname: availability1
spring:
  application:
    #服务名称
    name: eureka-availability-server

application-availability2.yml:

server:
  port: 4444  #服务端口号
eureka:
  client:
    service-url:
      #相互注册,组成一个集群,实现高可用
      defaultZone: http://availability1:3333/eureka/,http://availability3:5555/eureka/
  instance:
    #主机名
    hostname: availability2
spring:
  application:
    #服务名称
    name: eureka-availability-server

application-availability3.yml:

server:
  port: 5555  #服务端口号
eureka:
  client:
    service-url:
      #相互注册,组成一个集群,实现高可用
      defaultZone: http://availability1:3333/eureka/,http://availability2:4444/eureka/
  instance:
    #主机名
    hostname: availability3
spring:
  application:
    #服务名称
    name: eureka-availability-server

五、在C:\Windows\System32\drivers\etc\hosts文件中添加如下:

127.0.0.1 availability1
127.0.0.1 availability2
127.0.0.1 availability3

六、搭建服务提供者Eureka-Client:

首先引入pom.xml依赖:



	4.0.0

	com.springcloud.wsh
	springcloud_hign_availability_eureka_client
	0.0.1-SNAPSHOT
	jar

	springcloud_hign_availability_eureka_client
	Spring Cloud Eureka高可用 客户端

	
		org.springframework.boot
		spring-boot-starter-parent
		1.5.2.RELEASE
		 
	

	
		UTF-8
		UTF-8
		1.8
		Camden.SR6
	

	
		
			org.springframework.boot
			spring-boot-starter-web
		
		
			org.springframework.cloud
			spring-cloud-starter-eureka
		

		
			org.springframework.boot
			spring-boot-starter-test
			test
		
	

	
		
			
				org.springframework.cloud
				spring-cloud-dependencies
				${spring-cloud.version}
				pom
				import
			
		
	

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



七、启动类加上@EnableDiscoveryClient注解,注册成为Eureka的一个服务提供者。

/** 
 * @Description:  高可用Eureka-服务提供者
 * @Author: WeiShiHuai  
 * @Date: 2018/9/7 14:01
*/
@SpringBootApplication
//注册成为Eureka客户端
@EnableDiscoveryClient
public class SpringcloudHignAvailabilityEurekaClientApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringcloudHignAvailabilityEurekaClientApplication.class, args);
	}
}

八、编写application.yml配置文件:

server:
  port: 6666  #服务端口号
eureka:
  client:
    service-url:
      #注册到availability1上,由于3个注册中心组成了集群,eureka-availability-client服务通过availability1同步给了与之互相注册的availability2和availability3。
      #两两注册的方式可以实现集群中节点完全对等的效果,实现最高可用性集群,任何一台注册中心故障都不会影响服务的注册与发现
      defaultZone: http://availability1:3333/eureka/
      #也可以指定多个注册中心
      #defaultZone: http://availability1:3333/eureka/,http://availability2:4444/eureka/,http://availability3:5555/eureka/
  instance:
    #主机名
    hostname: localhost
spring:
  application:
    #服务名称
    name: eureka-availability-client

注意,这里我只注册到availability1上,因为availability1、availability2、availability3两两相互注册,所以服务会同步到availability2,availability3上面。
 

九、采用java -jar的方式启动高可用Eureka Server

通过指定--spring.profiles.active=availability1来加载不同的配置文件。

Spring Cloud Eureka服务注册中心 多节点搭建(学习总结)_第1张图片

a. 首先cmd进入到项目根目录

//假设项目位于 F:\zuul-websocket\springcloud_eureka\springcloud_hign_availability_eureka_server

cd F:\zuul-websocket\springcloud_eureka\springcloud_hign_availability_eureka_server

b. 执行mvn install,执行完成后会在项目根目录生成target,通过cd target命令进入target目录,执行以下命令:

springcloud_hign_availability_eureka_server-0.0.1-SNAPSHOT.jar 对应为jar包名称,需要替换成具体生成的。

java -jar springcloud_hign_availability_eureka_server-0.0.1-SNAPSHOT.jar --spring.profiles.active=availability1

c. 以此方式依次启动availability2,availability3,

启动完成之后,浏览器访问http://localhost:3333/,http://localhost:4444/,http://localhost:5555/如下图,可以看到服务注册中心相互进行了注册,并且都在available-replicas可用分片中。

Spring Cloud Eureka服务注册中心 多节点搭建(学习总结)_第2张图片

Spring Cloud Eureka服务注册中心 多节点搭建(学习总结)_第3张图片

 

Spring Cloud Eureka服务注册中心 多节点搭建(学习总结)_第4张图片

十、同样使用java -jar 方式启动Eureka Client

可以看到我们只指定了注册到availability1上面,但是因为注册中心高可用,服务进行同步,所以Eureka Client同样会被注册到availability2和availability3上面。

依次访问http://localhost:3333/、http://localhost:4444/、http://localhost:5555/,如下:

Spring Cloud Eureka服务注册中心 多节点搭建(学习总结)_第5张图片

十一、总结

a. 两两注册的方式可以实现集群中节点完全对等的效果,实现最高可用性集群,任何一台注册中心故障都不会影响服务的注册与发现。

Spring Cloud Eureka服务注册中心 多节点搭建(学习总结)_第6张图片

b. 首先需要注意必须开启服务注册中心的检索服务、注册自身服务的功能,否则会出现多节点的注册中心都不可用,全部服务都会出现在unavailable-replicas不可用分片中。

#要么不写,要么必须指定为true
eureka:
  client:
    fetch-registry: true #是否检索服务
    register-with-eureka: true #表示向Eureka注册自身服务

c.  application-availability1.yml、application-availability2.yml、application-availability3.yml三个配置文件中的application-name必须相同,否则也会出现注册中心不能高可用,出现在unavailable-replicas不可用分片中。

至此,高可用Eureka服务注册中心已经搭建完成,本文是笔者在温习SpringCloud的时候所写,仅供参考,大家一起学习,共同进步!

 

你可能感兴趣的:(Spring,Cloud,Eureka,高可用,SpringCloud,SpringBoot)