一、Eureka入门
1.创建一个springboot项目导入jar包
我们这里导入的是eureka-server
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
2.在配置文件中配置
server.port=10001
spring.application.name=eureka1
# 注册服务地址
eureka.client.service-url.defaultZone = http://localhost:10001/eureka/
# 显示ip地址
eureka.instance.ip-address=true
# 是否开启自我保护机制
eureka.server.enable-self-preservation=false
# server清理无效节点的时间间隔,默认60000毫秒,即60秒
eureka.server.eviction-interval-timer-in-ms= 60000
3.在启动类上加入注解@EnableEurekaServer
@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}
当我们启动时,会报一个错。为什么会报这个错,如何解决呢?
因为,当启动的时候,会默认向8761端口注册自己,如配置了,就是走配置的端口,我们上面是10001端口。这个时候我们这个服务并没有启动,所以会报这个错。而且在注册自己同时,也会向10001端口。拉取注册信息。同样服务还没有启动,所以报错。当然这个错其实会不会影响我们使用。因为定时任务重试,还是会成功的。
我们可以添加如下配置解决:
# 是否自我注册
eureka.client.register-with-eureka=false
# 是否拉取注册信息
eureka.client.fetch-registry=false
这2个值默认都是true,因为单个eureka并不需要注册自己,也不需要拉取列表,所以可以关闭它。再次启动就不会有错了。
4.注册服务
创建个工程导入eureka-client相关jar
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>2.0.0.RELEASE</version>
</dependency>
启动类添加注解@EnableEurekaClient
@SpringBootApplication
@EnableEurekaClient
public class OrderServiceApplication {
public static void main(String[] args) {
SpringApplication.run(OrderServiceApplication.class, args);
}
}
添加配置
server.port=9001
spring.application.name=order
# 注册服务地址
eureka.client.service-url.defaultZone = http://localhost:10001/eureka/
eureka.instance.prefer-ip-address=true
# eureka 界面显示的服务名称格式
eureka.instance.instance-id= ${spring.cloud.client.ip-address}:${server.port}
# client间隔多久去拉取服务注册信息,默认为30秒
eureka.client.registry-fetch-interval-seconds=30
# 表示eureka client发送心跳给server端的频率,默认30秒
eureka.instance.lease-renewal-interval-in-seconds=30
启动后,打开我们配置的地址,我这里是:http://localhost:10001/
二、高可用Eureka
eureka的服务的高可用就是多个实例相互注册
我们如上步骤创建一个eureka2
配置的如下的配置
server.port=10002
spring.application.name=eureka2
# 注册服务地址
eureka.client.service-url.defaultZone = http://localhost:10001/eureka/
eureka.instance.hostname=${spring.application.name}
# 显示ip地址
eureka.instance.ip-address=true
# 是否开启自我保护机制
eureka.server.enable-self-preservation=false
# server清理无效节点的时间间隔,默认60000毫秒,即60秒
eureka.server.eviction-interval-timer-in-ms= 60000
eureka.client.service-url.defaultZone 配置对方的地址
运行后启动,不管打开http://localhost:10001/,http://localhost:10002/,都能出现如下页面
注册的服务配置的注册的地址2个写上2个,以逗号隔开
# 注册服务地址
eureka.client.service-url.defaultZone = http://localhost:10001/eureka/,http://localhost:10002/eureka/