zoukankan      html  css  js  c++  java
  • [转]Eureka自我保护机制、健康检查的作用、actuator模块监控

    • Eureka自我保护机制

    接着以上篇文章建立的三个工程为基础(eureka-server,uerreg,myweb),默认Eureka是开启自我保护的。我们来做个测试,我们先启动三个工程,我们访问注册中心http://localhost:8761/,

     
    image.png
    可以看到,实例是成功注册到中心的。此时我们将uerreg服务关闭,刷新注册中心,我们会发现如下界面
     
    image.png
    我们除了看到了一行红色的警告信息,还发现了一件神奇的事情,就是我们的服务实例虽然被kill了,但是在服务注册中心他还是存在的。这就是Eureka自我保护机制,他不会剔除已经挂掉的服务,他会认为这个服务是在尝试重新连接的。
    我们在开发过程中肯定是不希望这样的,不利于开发。我们可以关闭Eureka的自我保护机制(实际生产环境不建议关闭)。
    • eureka-server服务端
      配置文件中我们添加如下配置
    #关闭保护机制,以确保注册中心将不可用的实例正确剔除
    eureka.server.enable-self-preservation=false
    #(代表是5秒,单位是毫秒,清理失效服务的间隔 )
    eureka.server.eviction-interval-timer-in-ms=5000
    
    • userreg客户端
      配置文件中我们添加如下配置
    # 心跳检测检测与续约时间
    # 测试时将值设置设置小些,保证服务关闭后注册中心能及时踢出服务
    # 配置说明
    #  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
    

      

    我们重新启动服务,然后关闭userreg客户端进行测试。
     
     

    此时我们发现,红色警告变成了自我保护被关闭的警告,且实例被注册中心剔除,表明此时自我保护机制被关闭。

    • 健康检查

    人会生病,就像人一样服务有时候也会出现异常情况,我们也需要知道某个服务的健康状况。我们可以通过添加如下依赖,开启某个服务的健康检查。以userreg服务为例
    pom文件中添加如下依赖

    <!--健康检查依赖-->
           <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"},类似的还有

    info 显示任意的应用信息
    metrics 展示当前应用的指标信息 true
    mappings 显示所有@RequestMapping路径的整理列表
    trace 显示trace信息(默认为最新的一些HTTP请求)
    health 展示应用的健康信息
    beans 显示一个应用中所有Spring Beans的完整列表

    这其中有一些是敏感信息,出于安全考虑,如果不设置

    #关掉认证(公网下的生产环境不建议,内网部署可以)
    #management.security.enabled=false
    

    默认是无法访问的。
    如果我们要访问查看而且想保证一定的安全性,我们应该做什么呢?我们在userreg的pom文件中引入

    <!--安全认证依赖-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-security</artifactId>
            </dependency>
    

      

    此时我们访问/beans敏感信息时,弹出如下信息,需要我们进行身份认证

     
     

    仅仅引入依赖其实是有问题的,因为我们请求正常的业务接口他也会要求进行认证,解决办法可以在userreg工程的配置文件中添加如下设置:

    #(增加了访问路径)
    management.context-path=/admin
    security.user.name=root
    security.user.password=123
    #只对/admin进行安全认证
    security.basic.path=/admin
    

    重启服务,我们访问http://localhost:9001/admin/beans,注意哦,我们在配置文件中添加了相对路径,只对admin进行验证,此时我们输入正确的用户名和密码(已在配置文件中配置)会显示我们需要的信息。

    • 实战健康检查

    健康检查在实际应用场景中有哪些呢?举个例子,我们配置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 查看健康情况

     
    image.png
    我们可以看到db的健康情况。假如此时我们的mysql服务挂掉,会怎样呢?
     
    image.png
    我们手动停止mysql服务,然后再看健康情况
     
    image.png
    发现db状态已经由“UP”变成了“DOWN”并显示了错误信息,这样就很方便我们查看服务的健康情况了。


    作者:谜00016
    链接:https://www.jianshu.com/p/df61a3273528
    來源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。




  • 相关阅读:
    java怎么导入一个项目到eclipse
    JDK安装与环境变量配置(链接by网络)
    配置安装ecplise跑项目
    电脑缺少**.dll文件
    Microsoft-Office-Professional-Plus-2007
    win7如何恢复以前的ie版本
    maven安装及maven项目导入流程(网络链接)
    LoadRunner录制Web协议的脚本 (by网络)
    spring中jdbc.properties用法
    linux 安装 mysql
  • 原文地址:https://www.cnblogs.com/gengaixue/p/9216020.html
Copyright © 2011-2022 走看看