Nginx 上游从未在 vts 状态中被标记为关闭

Nginx 上游从未在 vts 状态中被标记为关闭

我们有 2 台基本相同的物理服务器(用于负载平衡和故障转移)

一个物理服务器由一堆docker容器组成,包括

  • 1 个 NginX
  • 2 个 WebSphere 8.5.5.8 实例

因此,总共有 4 个 WebSphere 实例集群作为 2 个 nginx 实例的上游(负载平衡器和故障转移)

一切似乎都正常(我正在使用“nginx-module-vts”进行监控)。但是,当我终止正在运行的 WebSphere 实例时,页面变为空白,日志显示

2016/05/26 14:18:06 [error] 27154#0: *84 connect() failed (111: Connection refused) while connecting to upstream, client: ...

当我刷新页面时,会话故障转移开始启动,但根据监控,nginx 仍在考虑启动已关闭的实例。

关于nginx的一些信息:

  • nginx 1.10.0
  • 模块 nginx-module-vts
  • 模块 pagespeed 1.11.33.2
  • 模块 nginx-goodies-nginx-sticky-module-ng 1.2.6
  • ./configure --prefix=/etc/nginx/--sbin-path=/usr/sbin/nginx --add-module=/tmp/ngx_pagespeed-1.11.33.2-beta --add-module=/tmp/nginx-module-vts --add-module=/tmp/nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d --with-http_ssl_module --with-http_v2_module --with-http_stub_status_module --with-http_geoip_module --pid-path=/var/run/nginx.pid

相关配置部分:

upstream websphere { sticky; server 10.0.0.11:9080 weight=5 max_fails=1 fail_timeout=30s; server 10.0.0.11:9081 weight=15 max_fails=1 fail_timeout=30s; server 10.0.0.12:9080 weight=10 max_fails=1 fail_timeout=30s; server 10.0.0.12:9081 weight=15 max_fails=1 fail_timeout=30s; } location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Host $http_host; proxy_set_header Host $host; proxy_set_header X-NginX-Proxy true; proxy_set_header Connection ""; proxy_set_header X-SSL-CERT $ssl_client_cert; proxy_set_header X-SSL-CERT-CIPHER $ssl_cipher; proxy_set_header X-SSL-CERT-SSNID $ssl_session_id; proxy_http_version 1.1; proxy_read_timeout 630s; proxy_cache one; proxy_cache_key key$request_uri$scheme; proxy_pass http://websphere; proxy_next_upstream error timeout invalid_header http_500 http_502 http_504; ... }

即使我关闭所有 WebSphere 服务器,nginx-module-vts 也会全部显示出来。

我肯定是看错了什么,或者 vts 显示的信息不正确?问题是我怀疑 WebService 调用可能仍然会转到已关闭但标记为已启动的节点。

答案1

由于我似乎无法让它工作,而且我不想为 nginx plus 支持支付高额费用。我删除了模块 nginx-goodies-nginx-sticky-module-ng,并使用以下代码修补了我的 nginx 安装https://github.com/kriegsmanj/nginx_upstream_check_module(检查_1.9.11+.补丁)

这似乎解决了我的问题。但是,nginx-module-vts 仍认为该节点已启动,但 nginx_upstream_check_module 则不然。

相关内容