接着以上篇文章创建的三个工程为基础(eureka-server,uerreg,myweb),默认Eureka是开启自我保护的。咱们来作个测试,咱们先启动三个工程,咱们访问注册中心http://localhost:8761/,java
#关闭保护机制,以确保注册中心将不可用的实例正确剔除 eureka.server.enable-self-preservation=false #(表明是5秒,单位是毫秒,清理失效服务的间隔 ) eureka.server.eviction-interval-timer-in-ms=5000
# 心跳检测检测与续约时间 # 测试时将值设置设置小些,保证服务关闭后注册中心能及时踢出服务 # 配置说明 # lease-renewal-interval-in-seconds 每间隔10s,向服务端发送一次心跳,证实本身依然”存活“ # lease-expiration-duration-in-seconds 告诉服务端,若是我20s以内没有给你发心跳,就表明我“死”了,将我踢出掉。 eureka.instance.lease-renewal-interval-in-seconds=10 eureka.instance.lease-expiration-duration-in-seconds=20
此时咱们发现,红色警告变成了自我保护被关闭的警告,且实例被注册中心剔除,代表此时自我保护机制被关闭。mysql
人会生病,就像人同样服务有时候也会出现异常状况,咱们也须要知道某个服务的健康情况。咱们能够经过添加以下依赖,开启某个服务的健康检查。以userreg服务为例
pom文件中添加以下依赖web
<!--健康检查依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
ok,其余的什么都不变,咱们来访问一下这个接口http://localhost:9001/health
咱们看到了一个很简短的健康报告:{"description":"Spring Cloud Eureka Discovery Client","status":"UP"},相似的还有spring
info 显示任意的应用信息
metrics 展现当前应用的指标信息 true
mappings 显示全部@RequestMapping路径的整理列表
trace 显示trace信息(默认为最新的一些HTTP请求)
health 展现应用的健康信息
beans 显示一个应用中全部Spring Beans的完整列表sql
这其中有一些是敏感信息,出于安全考虑,若是不设置apache
#关掉认证(公网下的生产环境不建议,内网部署能够) #management.security.enabled=false
默认是没法访问的。
若是咱们要访问查看并且想保证必定的安全性,咱们应该作什么呢?咱们在userreg的pom文件中引入tomcat
<!--安全认证依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
此时咱们访问/beans敏感信息时,弹出以下信息,须要咱们进行身份认证安全
仅仅引入依赖实际上是有问题的,由于咱们请求正常的业务接口他也会要求进行认证,解决办法能够在userreg工程的配置文件中添加以下设置:springboot
#(增长了访问路径) management.context-path=/admin security.user.name=root security.user.password=123 #只对/admin进行安全认证 security.basic.path=/admin
重启服务,咱们访问http://localhost:9001/admin/beans,注意哦,咱们在配置文件中添加了相对路径,只对admin进行验证,此时咱们输入正确的用户名和密码(已在配置文件中配置)会显示咱们须要的信息。app
健康检查在实际应用场景中有哪些呢?举个例子,咱们配置userreg工程数据源
在pom文件中引入如下依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
而后创建一个配置类,配置数据源DataSource
@Configuration public class Myconfig { @Bean public DataSource dataSource() { org.apache.tomcat.jdbc.pool.DataSource dataSource=new org.apache.tomcat.jdbc.pool.DataSource(); dataSource.setUrl("jdbc:mysql://localhost/test?characterEncoding=UTF-8"); dataSource.setUsername("root"); dataSource.setPassword("mysql"); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); return dataSource; } }
这个在springboot中已经学习过,后续我会把springboot学习过程以博客的方式记录下来,配置完成数据源以后,咱们启动服务,访问http://localhost:9001/admin/health 查看健康状况