Opened 8 years ago
Closed 8 years ago
#1212 closed defect (fixed)
nginx health check for UDP
Reported by: | Owned by: | ||
---|---|---|---|
Priority: | major | Milestone: | |
Component: | nginx-core | Version: | 1.10.x |
Keywords: | udp health check | Cc: | |
uname -a: | Linux ghy-nginx-3.localdomain 3.10.0-327.10.1.el7.x86_64 #1 SMP Sat Jan 23 04:54:55 EST 2016 x86_64 x86_64 x86_64 GNU/Linux | ||
nginx -V: |
nginx version: nginx/1.10.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) built with OpenSSL 1.0.1e-fips 11 Feb 2013 TLS SNI support enabled configure arguments: --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/lock/subsys/nginx --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-http_xslt_module --with-http_perl_module --with-threads --with-stream --with-stream_ssl_module --with-http_slice_module --with-mail --with-mail_ssl_module --with-ipv6 --with-http_v2_module --with-http_geoip_module --with-http_image_filter_module --with-debug --with-file-aio --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic' --with-ld-opt=-Wl,-E --add-module=/home/test/rpmbuild/BUILD/root/nginx_upstream_check_module-master --add-module=/home/test/rpmbuild/BUILD/root/nginx-sticky-module-master |
Description
As NGINX description "If an attempt to connect to an upstream server times out or results in an error, NGINX Open Source can mark the server as unavailable and stop sending requests to it for a defined amount of time".
Parameter "fail_timeout" and "max_fails" are designed for this mechanism.
I tested this scenario passed with TCP messages, while failed with UDP.
Here is my nginx.conf file:
stream { upstream sippBackend.com { hash $remote_addr ; server 135.1.238.12:5060 max_fails=3 fail_timeout=30s; server 135.1.238.13:5060 max_fails=3 fail_timeout=30s; } server { listen 5060 udp; proxy_pass test123.com; proxy_timeout 1s; # proxy_responses 1; } }
The udp message from client is routed to 135.1.238.13 originally. After a while, I close the listen port 5060 of this server. The load balancer always attempts to route to this server not for 3 times. Thus directs to fail traffic then.
For TCP case, I can see that messages are routed to the other server 135.1.238.12 until the previous 135.1.238.13 up. So it seems this health check method does not work for UDP hash. I wonder that whether this server will be marked as unavailable when using hash or consistent hash for UDP routing?
Attachments (1)
Change History (4)
by , 8 years ago
Attachment: | testHashUDP.cap added |
---|
comment:2 by , 8 years ago
This apparently has been fixed in 1.11.7 (http://hg.nginx.org/nginx/rev/75dbab4ea930)
comment:3 by , 8 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Packet when routing UDP messages with hash method