1. Eureka 用户认证
导入用户认证依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
security.basic.enabled=true
spring.security.user.name=admin
spring.security.user.password=admin
关闭 CSRF:
@EnableWebSecurity
public class WebSecurityConfigurer extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
// 关闭 csrf
http.csrf().disable();
// 开启认证:URL 格式登录必须是 httpBasic
http.authorizeRequests().anyRequest().authenticated().and().httpBasic();
}
}
客户端改造:
eureka.client.serviceUrl.defaultZone=http://admin:admin@localhost:8763/eureka/
2. 服务续约保活
客户端配置:
#服务续约,心跳的时间间隔,单位 s
eureka.instance.lease-renewal-interval-in-seconds=30
#如果从前一次发送心跳时间起,90s 没接收到新的心跳,将剔除服务
eureka.instance.lease-expiration-duration-in-seconds=90
#表示eureka client 间隔多久去拉取服务注册信息,默认为 30s
eureka.client.registry-fetch-interval-seconds=30
服务端配置:
#eureka server清理无效节点的时间间隔,默认60000毫秒,即60秒
eureka.server.eviction-interval-timer-in-ms=60000
3. 健康检测
依赖 jar:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
#开启健康检测
eureka.client.healthcheck.enabled=true
@Configuration
public class MicroWebHealthIndicator implements HealthIndicator {
@Override
public Health health() {
//这个状态就是检测数据库是否连接OK
if (UserController.canVisitDb) {
return new Health.Builder(Status.UP).build();
} else {
return new Health.Builder(Status.DOWN).build();
}
}
}
4. 服务下线
发送 DELETE 请求:
http://localhost:8763/eureka/apps/MICRO-ORDER/localhost:micro-order:8084
5. Eureka 自我保护
#自我保护模式,当出现出现网络分区、eureka 在短时间内丢失过多客户端时,会进入自我保护模式,即一个服务长时间没有发送心跳,eureka 也不会将其删除,默认为true
eureka.server.enable-self-preservation=true
开启自我保护,会在 eureka.instance.lease-expiration-duration-in-seconds 内没有心跳删除服务,如果关闭自我保护,会在很短的时间内删除服务。
6. Eureka 高可用
Eureka 1:
server.port=8761
eureka.instance.hostname=Eureka8761
#是否注册到eureka
eureka.client.registerWithEureka=true
#是否从eureka中拉取注册信息
eureka.client.fetchRegistry=true
##暴露eureka服务的地址
eureka.client.serviceUrl.defaultZone=http://admin:admin@Eureka8762.com:8762/eureka/
#自我保护模式,当出现出现网络分区、eureka在短时间内丢失过多客户端时,会进入自我保护模式,即一个服务长时间没有发送心跳,eureka也不会将其删除,默认为true
eureka.server.enable-self-preservation=false
security.basic.enabled=true
spring.security.user.name=admin
spring.security.user.password=admin
Eureka 2:
server.port=8762
eureka.instance.hostname=Eureka8762
#是否注册到eureka
eureka.client.registerWithEureka=true
#是否从eureka中拉取注册信息
eureka.client.fetchRegistry=true
##暴露eureka服务的地址
eureka.client.serviceUrl.defaultZone=http://admin:admin@Eureka8761.com:8761/eureka/
#自我保护模式,当出现出现网络分区、eureka在短时间内丢失过多客户端时,会进入自我保护模式,即一个服务长时间没有发送心跳,eureka也不会将其删除,默认为true
eureka.server.enable-self-preservation=false
security.basic.enabled=true
spring.security.user.name=admin
spring.security.user.password=admin
客户端配置:
eureka.client.serviceUrl.defaultZone=http://admin:admin@Eureka8761.com:8761/eureka/,http://admin:admin@Eureka8762.com:8762/eureka/