weibocom / nginx-upsync-module

For http protocol. nginx-upsync-module, sync upstreams from consul or etcd and so on, dynamiclly modify backend-servers attributes(weight, max_fails, down...), needn't reload nginx
1.83k stars 391 forks source link

master分支支持tengine-2.2.2版本吗 #221

Closed hnzjCoder closed 6 years ago

hnzjCoder commented 6 years ago

master分支可以和tengine-2.2.2一起用吗,还是只能用nginx-upsync-1.8.*分支的

xiaokai-wang commented 6 years ago

tengine 是基于nginx-1.8.0, 所以只能使用nginx-upsync-1.8.* 分支,tengine 兼容更新有点略慢;

为什么不使用openresty 呢

hnzjCoder commented 6 years ago

现在所有环境用的都是tengine,有一些自研的管理工具也是基于tengine做的,改造起来比较麻烦。

hnzjCoder commented 6 years ago

另外,upsync模块可能出现的所有日志可以出一个文档说明一下吗,比如下面这种日志 [error] 18008#0: upsync_consul_parse_init: recv upstream "test0809-qa" error; http_status: 404

我的upstream配置如下 upstream test0809-qa {

    server 127.0.0.1:80 down;

    upsync **.com/v1/kv/upstreams/test0809-qa/ upsync_timeout=6m upsync_interval=500ms upsync_type=consul strong_dependency=off;
    upsync_dump_path /usr/local/tengine/conf/servers/servers_test0809-qa.conf;
    #include /home/appops/nginx/conf/servers/servers_test0809-qa.conf;

    keepalive 100;

    check interval=1000 rise=2 fall=2 timeout=1000 type=http default_down=false;
    check_http_send "HEAD / HTTP/1.0\r\n\r\n";
    #check_http_send "HEAD / HTTP/1.1\r\nConnection: keep-alive\r\n\r\n";
    check_http_expect_alive http_2xx http_3xx http_4xx;

}

有些错误日志不太明白是什么意思

hnzjCoder commented 6 years ago

你好,还有一个问题,对upsync这个模块去consul获取key/value数据的过程有一些疑问;

我们测试环境有几个应用的nginx配置用了upsync+consul的方式,今天偶然发现nginx有很多error日志,都是在访问consul时带了Index参数, 2018/08/22 19:07:57 [error] 4172#0: *416575 upstream timed out (110: Connection timed out) while connecting to upstream, client: 172.24.80.83, server: consul-qa.dwbops.com, request: "GET /v1/kv/upstreams/dwd-connector-qa1/?recurse&index=1033664 HTTP/1.0", upstream: "http://172.24.64.15:8500/v1/kv/upstreams/dwd-connector-qa1/?recurse&index=1033664", host: "consul-qa.dwbops.com" 另外在access.log中看到不带index的请求都是正常返回的。在这种情况下应用域名访问正常,修改consul的数据后本地dump的文件可以正常更新,访问web也有正常变化,不了解这个带有index参数的error日志是做了什么,有什么影响

下面是测试结果, 1、请求参数不加index,获取datav-qa这个应用下的所有后端主机可以正常返回 [root@qa-common001 sites-enable]# curl -i 'http://consul-qa.dwbops.com/v1/kv/upstreams/datav-qa/?keys&seperator=/&dc=aliyun-qa&token=' HTTP/1.1 200 OK Server: Tengine Date: Wed, 22 Aug 2018 11:27:21 GMT Content-Type: application/json Content-Length: 64 Connection: keep-alive X-Consul-Index: 1049276 X-Consul-Knownleader: true X-Consul-Lastcontact: 0 ["upstreams/datav-qa/","upstreams/datav-qa/172.24.64.222:14280"] 2、请求参数加上index索引后,就一直没有返回,最后报504错误。 [root@qa-common001 sites-enable]# curl -iv 'http://172.24.64.151:8500/v1/kv/upstreams/dwd-connector-qa1/?recurse&index=1033664'

hnzjCoder commented 6 years ago

已经找到问题了,是因为很多后端应用不支持HEAD请求来做健康检查,大量失败导致健康检查模块出现问题导致的。

itcam commented 5 years ago

这个问题怎么解决?