本项目将使用伪集群方式部署 eureka-server 。
spring-cloud.s1.eureka-server
(s1 表示 step1) 修改 pom 文件
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> </dependencies>
创建启动类 me.xhy.java.springcloud.s1.eureka.EurekaServerApplication
//1. @SpringBootApplication //spring-boot 注解,相当于 @Configuration + @EnableAutoConfiguration + @ComponentScan //@EnableAutoConfiguration -> AutoConfigurationImportSelector 会加载 META-INF/spring.factories 中指定的组件 //这里应用了 SPI 协议 //2. @EnableEurekaServer //完成注册中心功能 @SpringBootApplication @EnableEurekaServer public class EurekaServerApplication { public static void main(String[] args) { /* 启动参数一定要加 `args` ,以后命令行传参就是靠这个变量 */ SpringApplication.run(EurekaServerApplication.class, args); } }
添加配置文件
eureka是一个高可用的组件,它没有后端缓存,每一个实例注册之后需要向注册中心发送心跳(因此可以在内存中完成),在默认情况下erureka server也是一个eureka client ,必须要指定一个 server。eureka server的配置文件application.yml:
server: port: 35001 eureka: instance: hostname: localhost spring: application: name: eurka-server
通过 eureka.client.registerWithEureka
: false 不向服务中心注册 和 eureka.client.fetchRegistry
: false 不获取服务列表。作为 Eureka Server , Eureka Server 集群之间可以同步服务列表,没有必要对外暴露 Eureka Server 的服务,也不需要显示的设置下载服务列表。
关于 yml 文件,他对格式的要求非常严格:
:
后必须有空格 ,
分隔的,可使用 -
数组形式替代使其单行内容缩短 运行 EurekaServerApplication 的 main 函数。
此时会报错,先忽略。可以从控制台启动日志看到,tomcat 被启动了,端口是配置文件指定的 35001 。
访问 http://localhost:35001/
。
可不是 http://localhost:35001/eureka
此时还没有服务注册到 eureka ,"Instances currently registered with Eureka" 区域显示 "No instances available" 。