traefik - Traefik 2.2 仅针对 1 个后端同时进行大量 /health 调用
问题描述
我有 10 台路由器和 1 项服务,该服务只有 1 台服务器。(我已经简化了例子)
每个路由器都有单独的文件,其中 N 是从 1 到 10 的数字。
/etc/traefik/projectN_develop_intern.yaml
http:
routers:
projectN_develop_intern:
service: cluster_develop-cluster
entryPoints:
- https
rule: PathPrefix(`/project-N/`) && Host(`develop.my-domain.com`)
middlewares: []
priority: 1
我有 1 项服务和 1 项健康:
/etc/traefik/conf.d/cluster_develop-cluster.yaml
http:
services:
cluster_develop-cluster:
loadBalancer:
healthCheck:
path: /health
timeout: 3s
interval: 5s
servers:
- url: 'http://127.0.0.1:81/'
passHostHeader: true
我预计 traefik 每 3 秒只向服务服务器发出 1 个健康调用,但我每 10 秒收到 10 个健康调用,每个路由器一个。
我正在使用traefik 2.2,但这也发生在traefik 1.7中,这就是我们迁移到 traefik 2 的原因:
[root@centos ~]# traefik version
Version: 2.2.2
Codename: chevrotin
Go version: go1.14.4
Built: 2020-07-08T15:30:29Z
OS/Arch: linux/386
这是起始日志:
time="2020-07-16T10:03:10+02:00" level=info msg="Traefik version 2.2.2 built on 2020-07-08T15:30:29Z"
time="2020-07-16T10:03:10+02:00" level=debug msg="Static configuration loaded {\"global\":{},\"serversTransport\":{\"maxIdleConnsPerHost\":200},\"entryPoints\":{\"http\":{\"address\":\":80\",\"transport\":{\"lifeCycle\":{\"gr$
time="2020-07-16T10:03:10+02:00" level=info msg="\nStats collection is disabled.\nHelp us improve Traefik by turning this feature on :)\nMore details on: https://docs.traefik.io/contributing/data-collection/\n"
time="2020-07-16T10:03:10+02:00" level=info msg="Starting provider aggregator.ProviderAggregator {}"
time="2020-07-16T10:03:10+02:00" level=debug msg="Start TCP Server" entryPointName=https
time="2020-07-16T10:03:10+02:00" level=debug msg="Start TCP Server" entryPointName=http
time="2020-07-16T10:03:10+02:00" level=debug msg="Start TCP Server" entryPointName=traefik
time="2020-07-16T10:03:10+02:00" level=info msg="Starting provider *file.Provider {\"directory\":\"/etc/traefik/conf.d\",\"watch\":true}"
time="2020-07-16T10:03:10+02:00" level=info msg="Starting provider *traefik.Provider {}"
time="2020-07-16T10:03:10+02:00" level=debug msg="Configuration received from provider file: {\"http\":{\"routers\":{\"project1_develop_extern\":{\"entryPoints\":[\"https\"],\"service\":\"cluster_develop-cluster\",\"rule$
time="2020-07-16T10:03:10+02:00" level=debug msg="Configuration received from provider internal: {\"http\":{\"routers\":{\"api\":{\"entryPoints\":[\"traefik\"],\"service\":\"api@internal\",\"rule\":\"PathPrefix(`/api`)\",\"pr$
time="2020-07-16T10:03:10+02:00" level=debug msg="No store is defined to add the certificate XXXXXXXXXXXXXXXXXXXXXXX, it will be added to the default store."
time="2020-07-16T10:03:10+02:00" level=debug msg="Adding certificate for domain(s) *.our-domain.com,our-domain.com"
time="2020-07-16T10:03:10+02:00" level=debug msg="No default certificate, generating one"
time="2020-07-16T10:03:11+02:00" level=debug msg="Creating middleware" entryPointName=https routerName=project2_develop_extern@file serviceName=cluster_develop-cluster middlewareName=pipelining middlewareType=Pipelining
time="2020-07-16T10:03:11+02:00" level=debug msg="Creating load-balancer" entryPointName=https routerName=project2_develop_extern@file serviceName=cluster_develop-cluster
time="2020-07-16T10:03:11+02:00" level=debug msg="Creating server 0 http://api-node3.our-domain.com" serverName=0 entryPointName=https routerName=project2_develop_extern@file serviceName=cluster_develop-cluster
time="2020-07-16T10:03:11+02:00" level=debug msg="Creating server 1 http://api-node4.our-domain.com" serverName=1 serviceName=cluster_develop-cluster entryPointName=https routerName=project2_develop_extern@file
time="2020-07-16T10:03:11+02:00" level=debug msg="Added outgoing tracing middleware cluster_develop-cluster" middlewareType=TracingForwarder routerName=project2_develop_extern@file entryPointName=https middlewareName=tra$
time="2020-07-16T10:03:11+02:00" level=debug msg="Creating middleware" middlewareType=Pipelining entryPointName=https routerName=project3_develop_intern@file serviceName=cluster_develop-cluster middlewareName=pipelining
time="2020-07-16T10:03:11+02:00" level=debug msg="Creating load-balancer" entryPointName=https routerName=project3_develop_intern@file serviceName=cluster_develop-cluster
time="2020-07-16T10:03:11+02:00" level=debug msg="Creating server 0 http://api-node3.our-domain.com" entryPointName=https routerName=project3_develop_intern@file serviceName=cluster_develop-cluster serverName=0
time="2020-07-16T10:03:11+02:00" level=debug msg="Creating server 1 http://api-node4.our-domain.com" serverName=1 entryPointName=https routerName=project3_develop_intern@file serviceName=cluster_develop-cluster
time="2020-07-16T10:03:11+02:00" level=debug msg="Added outgoing tracing middleware cluster_develop-cluster" middlewareName=tracing entryPointName=https routerName=project3_develop_intern@file middlewareType=TracingForwarder
time="2020-07-16T10:03:11+02:00" level=debug msg="Creating middleware" entryPointName=https routerName=project4_production_extern@file serviceName=cluster_production-cluster middlewareName=pipelining middlewareType=Pipelining
time="2020-07-16T10:03:11+02:00" level=debug msg="Creating load-balancer" routerName=project4_production_extern@file serviceName=cluster_production-cluster entryPointName=https
time="2020-07-16T10:03:11+02:00" level=debug msg="Creating server 0 http://api-node1.our-domain.com" entryPointName=https routerName=project4_production_extern@file serviceName=cluster_production-cluster serverName=0
time="2020-07-16T10:03:11+02:00" level=debug msg="Creating server 1 http://api-node2.our-domain.com" entryPointName=https routerName=project4_production_extern@file serverName=1 serviceName=cluster_production-cluster
time="2020-07-16T10:03:11+02:00" level=debug msg="Creating server 2 http://api-node3.our-domain.com" entryPointName=https routerName=project4_production_extern@file serviceName=cluster_production-cluster serverName=2
time="2020-07-16T10:03:11+02:00" level=debug msg="Creating server 3 http://api-node4.our-domain.com" entryPointName=https routerName=project4_production_extern@file serviceName=cluster_production-cluster serverName=3
time="2020-07-16T10:03:11+02:00" level=debug msg="Added outgoing tracing middleware cluster_production-cluster" middlewareName=tracing middlewareType=TracingForwarder entryPointName=https routerName=project4_production_exter$
time="2020-07-16T10:03:11+02:00" level=debug msg="Creating middleware" serviceName=cluster_develop-cluster middlewareName=pipelining middlewareType=Pipelining routerName=project5_develop_extern@file entryPointName=https
time="2020-07-16T10:03:11+02:00" level=debug msg="Creating load-balancer" routerName=project5_develop_extern@file entryPointName=https serviceName=cluster_develop-cluster
我认为 traefik 为每个路由器创建多个平衡器,并且在获取服务器 url 时,它会返回重复的健康 url。
github问题中有更多信息:https ://github.com/containous/traefik/issues/7043
解决方案
推荐阅读
- google-apps-script - 按类别、多个学生/猫的加权成绩
- .net - MsBuild 无法解析 MsBuildMajorVersion
- r - R中的pivot_wider具有多列,但将以前变量的名称保留在单独的列中
- python - 即使减去两次分数,值仍显示为 10
- angular - 多个 SPA 的 IIS 重写规则
- reactjs - 无法从 React fluent UI 下拉列表中获取所选值
- sql - 如何在每个日期获取每个类型的最大 ID
- javascript - 尝试在本地使用 OBJLoader 加载对象 | 三.js
- spring-security - Spring - 如何在没有用户的情况下通过 feign 调用安全服务
- java - 如何使用 Spark 并行化 java 中的算法?