• CoreDNS篇8-健康检查


    本文主要讲解介绍CoreDNS内置的两个健康检查插件healthready的使用方式和适用场景。

    1、health插件

    health插件默认情况下会在8080端口/health路径下提供健康状态查询服务,当CoreDNS服务正常的时候,会返回200http状态码并附带一个OK的内容。

    [root@coredns-10-31-53-1 conf]# curl -v http://10.31.53.1:8080/health
    * About to connect() to 10.31.53.1 port 8080 (#0)
    *   Trying 10.31.53.1...
    * Connected to 10.31.53.1 (10.31.53.1) port 8080 (#0)
    > GET /health HTTP/1.1
    > User-Agent: curl/7.29.0
    > Host: 10.31.53.1:8080
    > Accept: */*
    >
    < HTTP/1.1 200 OK
    < Date: Thu, 28 Jul 2022 03:52:56 GMT
    < Content-Length: 2
    < Content-Type: text/plain; charset=utf-8
    <
    * Connection #0 to host 10.31.53.1 left intact
    OK
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    比较特别的是health插件还附带了一个lameduck功能,lameduck的效果就是在coredns进程关闭之前延迟对应的时间。假设我们设置了lameduck 10s,那么coredns在接收到退出进程命令的时候会延迟10s的时间再结束进程。

    health [ADDRESS] {
       
        lameduck DURATION
    }
    
    • 1
    • 2
    • 3
    • 4

    需要特别注意的是,假设我们在多个配置块中都使用了lameduck功能,那么时间会叠加。举个例子,假设我们在10个配置块中都设置了lameduck 10s,那么coredns在接收到退出进程命令的时候会延迟10*10=100s的时间再结束进程。

    此外还有一个小问题,在开启health插件之后会导致health插件对应的端口会有较多的TIME_WAIT连接,目前怀疑是插件本身会请求自身端口进行检查导致产生TIME_WAIT连接。

    [root@coredns-10-31-53-1 conf]# netstat -nt | grep 8080 | grep -c TIME_WAIT
    61
    
    • 1
    • 2

    2、ready插件

    ready插件health插件有些类似,默认情况下定义在8181端口的/ready路径下返回CoreDNS服务器的状态,正常情况下也是返回200http状态码并附带一个OK的内容。

    [root@coredns-10-31-53-1
    • 相关阅读:
      算法学习:动态规划
      把excel文件内容转化为json文件
      详细分析Redis集群故障
      Redis-Key的操作
      SpringSecurity
      《数据结构与算法》之十大基础排序算法
      【图论】负环
      Java Hbase查询接口条件正确查询不到踩坑记录,查询大小写不敏感,存储必须小写
      有关Git(小白一看就懂)入门版
      Python数据类型:列表的魔法世界
    • 原文地址:https://blog.csdn.net/qq_36885515/article/details/127833790