0

我正在使用 Consul-Template 使用从 Consul 收集的数据呈现属性。这些文件正在成功呈现,但之后 Consul-Template 一遍又一遍地失败,直到它崩溃:

2017/08/16 10:43:04.900637 [WARN] (view) kv.list(...): Unexpected response code: 504 (retry attempt 5 after "4s")

这会以更长的暂停持续下去,直到达到限制/它崩溃。

从日志中提取的配置:

2017/08/16 10:38:02.403969 [DEBUG] (runner) final config:
{
    "Consul": {
        "Address": "consul-client.development.discovery",
        "Auth": {
            "Enabled": false,
            "Username": "",
            "Password": ""
        },
        "Retry": {
            "Attempts": 12,
            "Backoff": 250000000,
            "MaxBackoff": 60000000000,
            "Enabled": true
        },
        "SSL": {
            "CaCert": "",
            "CaPath": "",
            "Cert": "",
            "Enabled": false,
            "Key": "",
            "ServerName": "",
            "Verify": true
        },
        "Token": "",
        "Transport": {
            "DialKeepAlive": 30000000000,
            "DialTimeout": 30000000000,
            "DisableKeepAlives": false,
            "IdleConnTimeout": 90000000000,
            "MaxIdleConns": 100,
            "MaxIdleConnsPerHost": 3,
            "TLSHandshakeTimeout": 10000000000
        }
    },
    "Dedup": {
        "Enabled": false,
        "MaxStale": 2000000000,
        "Prefix": "consul-template/dedup/",
        "TTL": 15000000000
    },
    "Exec": {
        "Command": "",
        "Enabled": false,
        "Env": {
            "Blacklist": [],
            "Custom": [],
            "Pristine": false,
            "Whitelist": []
        },
        "KillSignal": 2,
        "KillTimeout": 30000000000,
        "ReloadSignal": null,
        "Splay": 0,
        "Timeout": 0
    },
    "KillSignal": 2,
    "LogLevel": "DEBUG",
    "MaxStale": 2000000000,
    "PidFile": "",
    "ReloadSignal": 1,
    "Syslog": {
        "Enabled": false,
        "Facility": "LOCAL0"
    },
    "Templates": [
        {
            "Backup": false,
            "Command": "",
            "CommandTimeout": 30000000000,
            "Contents": "",
            "Destination": "/consul-template/output/service.properties",
            "Exec": {
                "Command": "",
                "Enabled": false,
                "Env": {
                    "Blacklist": [],
                    "Custom": [],
                    "Pristine": false,
                    "Whitelist": []
                },
                "KillSignal": 2,
                "KillTimeout": 30000000000,
                "ReloadSignal": null,
                "Splay": 0,
                "Timeout": 30000000000
            },
            "Perms": 420,
            "Source": "/consul-template/data/service.properties.tpl",
            "Wait": {
                "Enabled": false,
                "Min": 0,
                "Max": 0
            },
            "LeftDelim": "",
            "RightDelim": ""
        },
        {
            "Backup": false,
            "Command": "",
            "CommandTimeout": 30000000000,
            "Contents": "",
            "Destination": "/consul-template/output/application.properties",
            "Exec": {
                "Command": "",
                "Enabled": false,
                "Env": {
                    "Blacklist": [],
                    "Custom": [],
                    "Pristine": false,
                    "Whitelist": []
                },
                "KillSignal": 2,
                "KillTimeout": 30000000000,
                "ReloadSignal": null,
                "Splay": 0,
                "Timeout": 30000000000
            },
            "Perms": 420,
            "Source": "/consul-template/data/application.properties.tpl",
            "Wait": {
                "Enabled": false,
                "Min": 0,
                "Max": 0
            },
            "LeftDelim": "",
            "RightDelim": ""
        },
        {
            "Backup": false,
            "Command": "",
            "CommandTimeout": 30000000000,
            "Contents": "",
            "Destination": "/consul-template/output/anotherMicroConsul.properties",
            "Exec": {
                "Command": "",
                "Enabled": false,
                "Env": {
                    "Blacklist": [],
                    "Custom": [],
                    "Pristine": false,
                    "Whitelist": []
                },
                "KillSignal": 2,
                "KillTimeout": 30000000000,
                "ReloadSignal": null,
                "Splay": 0,
                "Timeout": 30000000000
            },
            "Perms": 420,
            "Source": "/consul-template/data/anotherMicroConsul.properties.tpl",
            "Wait": {
                "Enabled": false,
                "Min": 0,
                "Max": 0
            },
            "LeftDelim": "",
            "RightDelim": ""
        },
        {
            "Backup": false,
            "Command": "",
            "CommandTimeout": 30000000000,
            "Contents": "",
            "Destination": "/consul-template/output/master.properties",
            "Exec": {
                "Command": "",
                "Enabled": false,
                "Env": {
                    "Blacklist": [],
                    "Custom": [],
                    "Pristine": false,
                    "Whitelist": []
                },
                "KillSignal": 2,
                "KillTimeout": 30000000000,
                "ReloadSignal": null,
                "Splay": 0,
                "Timeout": 30000000000
            },
            "Perms": 420,
            "Source": "/consul-template/data/master.properties.tpl",
            "Wait": {
                "Enabled": false,
                "Min": 0,
                "Max": 0
            },
            "LeftDelim": "",
            "RightDelim": ""
        },
        {
            "Backup": false,
            "Command": "",
            "CommandTimeout": 30000000000,
            "Contents": "",
            "Destination": "/consul-template/output/microConsul.properties",
            "Exec": {
                "Command": "",
                "Enabled": false,
                "Env": {
                    "Blacklist": [],
                    "Custom": [],
                    "Pristine": false,
                    "Whitelist": []
                },
                "KillSignal": 2,
                "KillTimeout": 30000000000,
                "ReloadSignal": null,
                "Splay": 0,
                "Timeout": 30000000000
            },
            "Perms": 420,
            "Source": "/consul-template/data/microConsul.properties.tpl",
            "Wait": {
                "Enabled": false,
                "Min": 0,
                "Max": 0
            },
            "LeftDelim": "",
            "RightDelim": ""
        }
    ],
    "Vault": {
        "Address": "",
        "Enabled": false,
        "Grace": 15000000000,
        "RenewToken": true,
        "Retry": {
            "Attempts": 12,
            "Backoff": 250000000,
            "MaxBackoff": 60000000000,
            "Enabled": true
        },
        "SSL": {
            "CaCert": "",
            "CaPath": "",
            "Cert": "",
            "Enabled": true,
            "Key": "",
            "ServerName": "",
            "Verify": true
        },
        "Transport": {
            "DialKeepAlive": 30000000000,
            "DialTimeout": 30000000000,
            "DisableKeepAlives": false,
            "IdleConnTimeout": 90000000000,
            "MaxIdleConns": 100,
            "MaxIdleConnsPerHost": 3,
            "TLSHandshakeTimeout": 10000000000
        },
        "UnwrapToken": false
    },
    "Wait": {
        "Enabled": false,
        "Min": 0,
        "Max": 0
    }
}

筛选代码,此错误消息似乎Renew来自session.go

我应该在 Consul 下看到一个会话/session/list吗?我有多个 Consul-Template 容器正在运行(每个主机上一个) - 我应该看到几个会话吗?现在我什么都看不到...

curl localhost:8500/v1/session/list
[]
4

1 回答 1

2

原因:您的领事模板和领事之间有一个代理或负载平衡器。

解决方法:将空闲连接的负载均衡器或代理超时增加到 60 秒以上(例如:65 秒或 120 秒),因为之后保持活动将启动并保持连接活动:)

细节

  • HTTP 504 是网关超时,表示连接已“切断”或服务无响应,但我会假设您的领事集群仍在工作,因此这是由于中间的活动网络设备(在领事模板和领事之间)
  • Consul-template 打开持久连接以监听变化。因此,如果连接被负载均衡器静默终止,您最终会出现这些 504 错误。
  • 这些消息是良性的,因为 consul-template 重新连接正常。但是它们很烦人,并且会一遍又一遍地用相同的警告填充您的日志和磁盘空间;-)
  • 如果在 AWS 中,请将您的 ELB 空闲超时设置为 65 秒,这些消息将消失
于 2018-01-24T03:31:21.663 回答