Eureka是SpringCloud用于实现服务注册与发现最早的组件之一,用于微服务架构下服务的统一登记和管理。
创建SpringCloud项目,勾选Neflix Eureka
新建STS/IDEA spring-boot-starter项目:
new project--spring initializr--勾选SpringCloud Discover下的Eureka Server
集成当前最新的Spring版本:
SpringBoot: 2.2.6.RELEASE
SpringCloud: Hoxton.SR3
当前集成的Eureka版本是
2.2.2.RELEASE
。
单节点Eureka服务端搭建
- 在@SpringBootApplication启动类上面加注解:
@EnableEurekaServer
- 在application.properties中增加Eureka相关配置:
#是否将自己注册到Eureka Server,默认为true,由于当前就是server,故而设置成false,表明该服务不会向eureka注册自己的信息
#eureka.client.register-with-eureka=false
#是否从eureka server获取注册信息,由于单节点,不需要同步其他节点数据,用false
#eureka.client.fetch-registry=false
#设置服务注册中心的URL,用于client和server端交流
#eureka.client.service-url.defaultZone
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.service-url.defaultZone=http://localhost:7900/eureka/
浏览器访问http://localhost:7900 就可以看到一个单机Eureka服务端就搭建好了。
两个节点集群的搭建
- 修改本机hosts文件配置,添加ip到域名的映射:
127.0.0.1 euk1.com 127.0.0.1 euk2.com
- 节点1配置
:application-euk1.properties
#peer端的连接地址
eureka.client.service-url.defaultZone=http://euk2.com:7902/eureka/
#hostname用来查找主机, appname用来表示分组
eureka.instance.hostname=euk1.com
#tomcat的端口
server.port=7901
- 节点2的配置
:application-euk2.properties
#peer端的连接地址
eureka.client.service-url.defaultZone=http://euk1.com:7901/eureka/
#hostname用来查找主机, appname用来表示分组
eureka.instance.hostname=euk2.com
#tomcat的端口
server.port=7902
两个服务端分别起来即可看到集群搭建好了。
三个节点的集群
#application.properties
eureka.client.service-url.defaultZone=http://euk1.com:7901/eureka/,http://euk2.com:7902/eureka/,http://euk3.com:7903/eureka/
spring.profiles.active=euk3
spring.application.name=EurekaServer
---
#application-euk1.properties
eureka.instance.hostname=euk1.com
server.port=7901
---
#application-euk2.properties
eureka.instance.hostname=euk2.com
server.port=7902
---
#application-euk3.properties
eureka.instance.hostname=euk3.com
server.port=7903
微服务向Eureka注册
创建微服务
- 每一个微服务需要将自身的服务信息注册到Eureka,因此每一个微服务都是Eureka的客户端,新建SpringCloud微服务的时候,需要勾选
下的Spring Cloud Discovery
Eureka Discovery Client
。
或者手动在pom.xml中添加依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
- application.properties中添加Eureka服务端(集群)的地址:
eureka.client.service-url.defaultZone=http://localhost:7900/eureka/
eureka.instance.instance-id="eureka-consumer1"
完成以上两步后启动服务,该服务会自动向Eureka发起注册。
参考文档:
https://cloud.spring.io/spring-cloud-static/spring-cloud-netflix/2.2.2.RELEASE/reference/html/#registering-with-eureka