acc38391de
The base64_sha_string method is used to set a base64-encoded peer name in HAProxy. There are cases where the peer name can start with an hypen which is troublesome when used in HAProxy CLI. Specifically, HAProxy fails to reload when local peer name starts with '-x' [1]. When this is the case, an amphora goes to provisioning status ERROR and later is scheduled for failover by the Octavia Health Manager service. A new amphora UUUID is assigned and base64 encoded, hopefully not starting with '-x' again. However, this is far from being ideal -- we incur in a dataplane disruption (single topology) or reduce HA capabilities (active-standby topology) for some time. Four possible options: a) add prefix to peer name b) change b64encode altchars c) quote peer name in haproxy CLI command d) substitute first character if hyphen Option a) and b) are not backward compatible with running amphorae. Peer names of existing amphorae that do not start with hypen but contain hyphen at any other position would get different peer names. Option c) would nonetheless still require an amphora image update to add quotes in the HAProxy init service file. Continuing to generate peer names with hyphens at begininng of the string is avoidable and recommended. Option d), while also requiring an amphora image update, it would get rid of hyphens in begining of the peer names. It is also backward compatible with all running amphorae, except for those starting with hyphen but are broken anyways. This patch takes option d). It substitutes hyphen with 'x' character. [1] https://github.com/haproxy/haproxy/issues/644 Task: 39850 Story: 2007714 Change-Id: Ib0fc26877710dea423a5ebcf1f71077665404377 |
||
---|---|---|
api-ref/source | ||
bin | ||
devstack | ||
diskimage-create | ||
doc | ||
elements | ||
etc | ||
httpd | ||
octavia | ||
playbooks/image-build | ||
releasenotes | ||
specs | ||
specs-tests | ||
tools | ||
zuul.d | ||
.coveragerc | ||
.gitignore | ||
.gitreview | ||
.pylintrc | ||
.stestr.conf | ||
babel.cfg | ||
bindep.txt | ||
CONSTITUTION.rst | ||
CONTRIBUTING.rst | ||
HACKING.rst | ||
LICENSE | ||
lower-constraints.txt | ||
README.rst | ||
requirements.txt | ||
setup.cfg | ||
setup.py | ||
test-requirements.txt | ||
TESTING.rst | ||
tox.ini |
Team and repository tags
Octavia
Octavia is an operator-grade open source scalable load balancer for use in large OpenStack deployments. It delivers load balancing services on amphorae and provides centralized command and control. Octavia is currently the reference backend for Neutron LBaaS. In the near future, Octavia is likely to become the standard OpenStack LBaaS API endpoint.
Octavia is distributed under the terms of the Apache License, Version 2.0. The full terms and conditions of this license are detailed in the LICENSE file.
Project resources
Developer documentation for the Octavia project is available at https://docs.openstack.org/octavia/latest/
Release notes for the Octavia project are available at https://docs.openstack.org/releasenotes/octavia/
The project source code repository is located at https://opendev.org/openstack/octavia
Project status, bugs, and requests for feature enhancements are tracked on https://storyboard.openstack.org/#!/project/openstack/octavia
For more information on project direction and guiding principles for contributors, please see the CONSTITUTION.rst file in this directory, or specifications in the specs/ sub-directory.
The project roadmap is available at https://wiki.openstack.org/wiki/Octavia/Roadmap
External Resources
- Octavia Wiki: https://wiki.openstack.org/wiki/Octavia
- For help on usage and hacking of Octavia, please send an email to OpenStack-dev Mailing List <mailto:openstack-discuss@lists.openstack.org> with [Octavia] tag.