In the load balance code, all interlock containers - even ones that are stopped - are included in the list of interlock nodes that can execute the nginx reload. This causes the actual list of nginx servers to reload to be empty for the interlock node that is still running.
Steps to reproduce:
Start interlock1
stop interlock1
Start interlock2
Start nginx1 pointing to interlock2
Create and start test-container with interlock.hostname and interlock.domain specified.
Make a request to test-container via nginx by setting the hostheader
nginx returns a 404.
If we only included interlock containers in the running state when distributing the nginx reload commands, we'd probably be ok.
In the load balance code, all interlock containers - even ones that are stopped - are included in the list of interlock nodes that can execute the nginx reload. This causes the actual list of nginx servers to reload to be empty for the interlock node that is still running. Steps to reproduce: Start interlock1 stop interlock1 Start interlock2 Start nginx1 pointing to interlock2 Create and start test-container with interlock.hostname and interlock.domain specified. Make a request to test-container via nginx by setting the hostheader nginx returns a 404.
If we only included interlock containers in the running state when distributing the nginx reload commands, we'd probably be ok.