Per this link and a discussion I posted there it does not seem that there is a good way for a non-admin to gracefully take a upstream server out of a TCP type farm (no drain function in Stream TCP , but only in HTTP ?). Look for discussion from EVVJSK and replies.
https://www.nginx.com/blog/tcp-load-balancing-udp-load-balancing-nginx-tips-tricks/#comment-5377483949
one response said :
"If you want to quiesce a server in a stream TCP farm, one option would be to set the server to be down (http://nginx.org/en/docs/st... and reload the NGINX configuration. Additionally, set a suitable worker_shutdown_timeout."
Having to have someone "reload the NGINX configuration" sounds like overkill. Our company is trying to provide non-NGINX admins with tools to be able to do the work of taking server out of rotation themselves. Reload of NGINX configuration sounds like something that should be left to NGINX Admins and not to someone who wants to gracefully take server out of rotation for server maintenance or some other task, do their work, and then put the server back into rotation when work has been completed.
What would seem to me to be the BEST request, would be for the API call that marks a server down, would FIRST quiesce the server by allowing any currently running transaction to finish, then to take server out of rotation.
A fallback if the above suggestion is not feasible would be for there to be a quiesce (or possibly drain if that is what the HTTP drain function accomplishes ?) function that is called via API that tells the Farm to cease sending transactions, wait until any pending transactions have finished, and then take the upstream server out of rotation. If it required then calling the DOWN API call, I guess that is OK, just seems like ending a server gracefully should be job number one and tools provided to easily do that.
Hope the above makes my case.
Thanks,
Jeff
Edited 1 time(s). Last edit at 05/10/2021 04:18PM by jkohut.