e911f3f2d2
The HTTP keepalive mode is currently hardcoded to "http-server-close" for all HTTP services. This disables keepalive for HAProxy to backend connections, but leaves it enabled for client connections to HAProxy. This is problematic especially for service to service calls (e.g. nova-api to neutron). If a request is made at the same time the HAProxy keepalive timeout expires, the result of the request is undefined. This leads to code 500 error responses from the nova-api because the request from nova-api to neutron failed. "Connection aborted" error messages in the logs are an indication of this issue. There is also a bug report[1] about the same issue in devstack which was solved by disabling keepalive and a script[2] to reproduce the issue in devstack. This adds a default and per service variables to set the HTTP keepalive mode used by HAProxy. The default value is changed to "forceclose" to disable HTTP keepalive on the server and client side. With HTTP keepalive disabled the issue can no longer be reproduced. [1] https://bugs.launchpad.net/devstack/+bug/1630664 [2] https://github.com/JordanP/openstack-snippets/blob/master/keepalive-race/keep-alive-race.py Change-Id: If819912873270f0568974925490023310f9cbd66 |
||
---|---|---|
defaults | ||
doc | ||
examples | ||
files | ||
handlers | ||
meta | ||
releasenotes | ||
tasks | ||
templates | ||
tests | ||
vars | ||
zuul.d | ||
.gitignore | ||
.gitreview | ||
CONTRIBUTING.rst | ||
LICENSE | ||
README.rst | ||
Vagrantfile | ||
bindep.txt | ||
manual-test.rc | ||
run_tests.sh | ||
setup.cfg | ||
setup.py | ||
tox.ini |
README.rst
Team and repository tags
OpenStack-Ansible HAProxy server
- Documentation for the project can be found at:
-
https://docs.openstack.org/openstack-ansible-haproxy_server/latest
- Release notes for the project can be found at:
-
https://docs.openstack.org/releasenotes/openstack-ansible-haproxy_server/
- The project source code repository is located at:
-
https://git.openstack.org/cgit/openstack/openstack-ansible-haproxy_server/
- The project home is at:
- The project bug tracker is located at: