Spring Boot Eureka搭建(stand-alone && 同伴意识)

Eureka服务注册中心

服务发现是基于微服务架构中的一个重要原则。Eureka既是服务端也是客户端。Eureka服务端可以部署成为高可用,每一个服务器都会复制注册的服务状态到其他服务器。

Eureka环境搭建

Eureka的搭建使用Spring Boot框架,首先在pom.xml中引入需要的依赖。

这里SpringBoot使用的是2.0.6版本


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

Spring Cloud使用Finchley.RELEASE版本


		UTF-8
		UTF-8
		1.8
		2.0.0.RELEASE
		Finchley.RELEASE
		2.0.0
	

spring-cloud-starter-netflix-eureka-server使用的是2.0.2.RELEASE版本。

        
		
			org.springframework.cloud
			spring-cloud-starter-netflix-eureka-server
			2.0.2.RELEASE
		

然后再应用启动类上加上注解@EnableEurekaServer。

启动后通过服务端管理页面查看注册的基本信息http://IP:PORT(默认8761)。

单机环境搭建

application.yml配置如下

server:
  port: 8761

spring:
  application:
    name: register-center

eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
  server:
    # 测试时关闭自我保护机制,保证不可用服务及时剔除
    enable-self-preservation: false
    # 剔除失效服务间隔,默认60000
    eviction-interval-timer-in-ms: 3000




# registerWithEureka、fetchRegistry两个参数是禁用把自己当成Eureka客户端的。
# registerWithEureka:false.取消向注册中心注册
# fetchRegistry:false.取消向注册中心获取注册信息(服务、实例信息)

启动时直接启动即可,默认加载的是application.yml配置文件。

高可用环境搭建-同伴意识

Eureka可以运行多个实例,来保证高可靠和高可用,让他们彼此注册。这是默认的行为,所以你需要做的只是为对方添加一个有效的serviceUrl。以两个peer构成一个集群为例,有效配置如下:

创建application-eureka1.yml,配置如下:

server:
  port: 8761

spring:
  application:
    name: register-center
  profiles: eureka1

eureka:
  instance:
    # 配置通过主机名方式注册
    hostname: eureka1
  client:
    service-url:
      defaultZone: http://eureka2:8762/eureka/
    register-with-eureka: true
    fetch-registry: true
  server:
    # 关闭保护机制,默认true
    enable-self-preservation: false
    # 剔除失效服务间隔,默认60000
    eviction-interval-timer-in-ms: 3000

创建application-eureka2.yml,配置如下:

server:
  port: 8762

spring:
  application:
    name: register-center
  profiles: eureka2

eureka:
  instance:
    # 配置通过主机名方式注册
    hostname: eureka2
  client:
    service-url:
      defaultZone: http://eureka1:8761/eureka/
    register-with-eureka: true
    fetch-registry: true
  server:
    # 关闭保护机制,默认true
    enable-self-preservation: false
    # 剔除失效服务间隔,默认60000
    eviction-interval-timer-in-ms: 3000

建议使用域名,上述两个配置都是使用的域名,因此需要先配置hosts:

127.0.0.1 eureka1
127.0.0.1 eureka2

按照如上配置,实现两个注册中心实例相互注册,你中有我,我中有你。

启动Eureka-IDEA方式

配置启动项如下后,再启动各个实例。

Spring Boot Eureka搭建(stand-alone && 同伴意识)_第1张图片

Spring Boot Eureka搭建(stand-alone && 同伴意识)_第2张图片

启动Eureka-生产环境命令行方式

java -jar xxx.jar --spring.profiles.active=8761

java -jar xxx.jar --spring.profiles.active=8762

分别访问eureka1:8761/,eureka2:8762/,可以在registered-replicas看到都相互注册了,available-replicas可用分片中可以看到相应的节点,停止一个另一个还可以工作。若available-replicas没有相应节点,则是因为eureka.client.register-with-eureka/eureka.client.fetch-registry为false。

Spring Boot Eureka搭建(stand-alone && 同伴意识)_第3张图片

Spring Boot Eureka搭建(stand-alone && 同伴意识)_第4张图片

启动应用实例

从上图中也可以看到启动了服务网关实例,通过两个注册中心实例中的任意一个都能看到,说明其已经成功注册到注册中心集群中。

注意:若第一个启动的eureka实例报错,这种情况可能是正常的,因为第一个启动的找不到注册中心去注册。等待一段时间,等到他要注册的eureka实例启动了,如果他能够连接注册上去且不会继续报错就是正常的。

 

参考文章:

https://cloud.tencent.com/developer/article/1328027

https://cloud.tencent.com/developer/article/1081556

https://yq.aliyun.com/articles/693077

服务下线相关参考:

eureka开发时快速剔除失效服务:https://blog.csdn.net/haveqing/article/details/88406592

eureka的几种主动下线服务方式:https://blog.csdn.net/xiaobao5214/article/details/81263445

eureka如何剔除服务:https://jingyan.baidu.com/article/ca00d56c09d971e99eebcfd6.html

eureka强制下线:https://blog.csdn.net/u012394095/article/details/80996172

 

你可能感兴趣的:(程序设计-Java,微服务,Web开发-Spring系列,云原生,容器化,云计算)