📜  NGINX TCP运行状况检查(1)

📅  最后修改于: 2023-12-03 15:33:06.963000             🧑  作者: Mango

NGINX TCP运行状况检查

NGINX是一个高性能的Web服务器和反向代理,也可以作为负载均衡器和HTTP缓存器使用。在使用NGINX作为反向代理时,我们经常需要检查后端服务器的TCP连接的运行状况,以保证应用的高可用性和稳定性。

检查TCP连接状态

要检查TCP连接的状态,我们可以使用TCP的PING命令:TCP ping使用不同于ICMP ping的协议来测试目标的可达性和延迟。它发送一个简短的TCP包到目标服务器,如果连接成功,则表示目标服务器可达。

我们可以使用tcpping命令来测试TCP连接状态。

tcpping <server_ip_address> <port>

例如,要测试IP地址为192.168.0.1,端口为80的服务器的连接状态,可以运行以下命令:

tcpping 192.168.0.1 80

如果返回如下所示的结果,则表示服务器连接成功:

64 bytes from 192.168.0.1: seq=1 time=0.99 ms

如果连接失败,则会返回错误信息。

使用NGINX的TCP模块检查后端服务器状态

另一种检查后端服务器的TCP连接状态的方式是使用NGINX的TCP模块。您可以使用TCP模块检查NGINX上的任何TCP服务的状态,并获取有关后端服务器的信息。

要使用TCP模块,您需要在NGINX的配置文件中添加以下内容:

stream {
    server {
        listen     <listen_address>:<listen_port>;
        proxy_pass <backend_address>:<backend_port>;
        proxy_connect_timeout <timeout>;
        proxy_timeout <timeout>;
        health_check interval=<interval> rise=<rise> fall=<fall> fail_timeout=<fail_timeout> type=<type>;
    }
}

其中:

  • <listen_address>:NGINX监听的本地地址。
  • <listen_port>:NGINX监听的本地端口。
  • <backend_address>:后端服务器的地址。
  • <backend_port>:后端服务器的端口。
  • <timeout>:连接和转发超时时间(以秒为单位)。
  • <interval>:检查服务器健康的时间间隔(以秒为单位)。
  • <rise>:成功返回的次数,必须连续达到此次数,服务器才会被标记为“健康”。
  • <fall>:失败的次数,如果服务器连续失败达到此次数,则被标记为“不健康”。
  • <fail_timeout>:标记为“不健康”的服务器的超时时间,以秒为单位。
  • <type>:检查服务器可用性的类型,包括tcp, smtp, http

例如,要使用TCP模块检查IP地址为192.168.0.1,端口为80的服务器的连接状态,可以在NGINX的配置文件中添加以下内容:

stream {
    server {
        listen     80;
        proxy_pass 192.168.0.1:80;
        proxy_connect_timeout 1s;
        proxy_timeout 3s;
        health_check interval=10s rise=2 fall=3 fail_timeout=15s type=tcp;
    }
}

这将每隔10秒检查后端服务器的TCP连接状态,如果成功返回2次,则标记为“健康”,如果连续失败3次,则标记为“不健康”,并在15秒内不再检查。

结论

使用tcpping命令和NGINX的TCP模块可以轻松检查后端服务器的TCP连接状态,并提高应用程序的可用性和稳定性。