今天继续讲解 eureka 使用,重点功能 :用户认证、续约保活、健康监测、服务下线、高可用 等五个功能点。
一、eureka 用户认证:
1、eureka 服务端 pom文件中加依赖
org.springframework.boot spring-boot-starter-security
2、application.properties 配置中加
security.basic.enabled=true spring.security.user.name=admin spring.security.user.password=admin
3、加入关闭crsf 验证功能的类
package com.navinfo.nandao; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; @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(); } }
4、eureka客户端 设置:ip前面加上用户名:密码@
eureka.client.serviceUrl.defaultZone=http://admin:admin@localhost:8763/eureka/
5、启动eureka 服务端和客户端 访问:http://localhost:8760/ 进入登录页面:
输入用户名和密码后 :
以上就是eureka 用户注册认证功能
二、续约保活
#服务续约,心跳的时间间隔 eureka.instance.lease-renewal-interval-in-seconds=30 #如果从前一次发送心跳时间起,90秒没接受到新的心跳,讲剔除服务 eureka.instance.lease-expiration-duration-in-seconds=90 #表示eureka client间隔多久去拉取服务注册信息,默认为30秒 eureka.client.registry-fetch-interval-seconds=30
服务端配置:
#自我保护模式,当出现出现网络分区、eureka在短时间内丢失过多客户端时,会进入自我保护模式,即一个服务长时间没有发送心跳,eureka也不会将其删除,默认为true,90秒后再删。 eureka.server.enable-self-preservation=true #Eureka Server 在运行期间会去统计心跳失败比例在 15 分钟之内是否低于 85%,如果低于 85%,Eureka Server 会将这些实例保护起来 eureka.server.renewal-percent-threshold=0.85 #eureka server清理无效节点的时间间隔,默认60000毫秒,即60秒 eureka.server.eviction-interval-timer-in-ms=60000
三、健康监测:
客户端配置:
#健康检测 eureka.client.healthcheck.enabled=true
jar包引入:
org.springframework.boot spring-boot-starter-actuator
import org.springframework.boot.actuate.health.Health; import org.springframework.boot.actuate.health.HealthIndicator; import org.springframework.boot.actuate.health.Status; import org.springframework.context.annotation.Configuration; @Configuration public class MicroWebHealthIndicator implements HealthIndicator { boolean flag =true;//可变参数 @Override public Health health() { if(flag) { return new Health.Builder(Status.UP).build(); } else { return new Health.Builder(Status.DOWN).build(); } } }
#是否注册eureka eureka.client.register-with-eureka=false #是否从eureka中拉取信息 eureka.client.fetch-registry=false #暴露eureka 服务地址 eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
2、多服务集群配置:
第一个服务:
server.port=8761 eureka.instance.hostname=Eureka8761 #是否注册到eureka eureka.client.registerWithEureka=true #是否从eureka中拉取注册信息 eureka.client.fetchRegistry=true ##暴露eureka服务的地址 eureka.client.serviceUrl.defaultZone=http://admin:[email protected]:8762/eureka/
第二个服务:
server.port=8762 eureka.instance.hostname=Eureka8762 #是否注册到eureka eureka.client.registerWithEureka=true #是否从eureka中拉取注册信息 eureka.client.fetchRegistry=true ##暴露eureka服务的地址 eureka.client.serviceUrl.defaultZone=http://admin:[email protected]:8761/eureka/
启动的时候按照指定配置文件启动
java -jar springcloud-eureka.jar --spring.profiles.active=8761
java -jar springcloud-eureka.jar --spring.profiles.active=8762
客户端配置:逗号隔开,同时注册到多台服务里
eureka.client.service-url.defaultZone=http://admin:[email protected]:8762/eureka/,http://admin:[email protected]:8761/eureka/
分别访问后显示: