Load Balancing as a Service (LBaaS) for OpenStack
Go to file
Carlos Goncalves 8bd0fbc8ba Workaround peer name starting with hyphen
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
(cherry picked from commit acc38391de)
(cherry picked from commit df36c2c8ca)
(cherry picked from commit e0b53b2cc7)
2020-06-11 18:33:22 +00:00
api-ref/source Add listener and pool protocol validation 2020-01-10 21:50:40 +01:00
bin Remove unnecessary \n from create_certificates.sh 2019-03-09 00:59:15 +00:00
devstack Do not install diskimage-builder from Git 2020-06-10 10:33:52 -07:00
diskimage-create Merge "Update requirements for ubuntu" 2019-02-21 03:04:50 +00:00
doc Remove the barbican "Grant access" from cookbook 2020-03-17 20:56:14 +00:00
elements Use stable upper-constraints.txt in Amphora builds 2020-02-13 17:19:39 +00:00
etc Fix controller worker graceful shutdown 2019-11-21 10:24:35 +01:00
httpd Run Octavia API in a WSGI server 2017-04-30 08:36:44 +00:00
octavia Workaround peer name starting with hyphen 2020-06-11 18:33:22 +00:00
playbooks Do not run Tempest in octavia-grenade job 2020-05-04 18:53:00 +02:00
releasenotes Workaround peer name starting with hyphen 2020-06-11 18:33:22 +00:00
specs Update the HTTP links to HTTPS 2018-11-14 01:04:08 +00:00
specs-tests Update tox 'docs' environment to test specs 2016-09-08 15:18:43 -07:00
tools Speed up pylint by using multiple cores 2019-02-17 14:09:20 +00:00
zuul.d Do not install diskimage-builder from Git 2020-06-10 10:33:52 -07:00
.coveragerc Update .coveragerc after the removal of openstack directory 2016-10-17 17:11:16 +05:30
.gitignore Merge "Add api-ref for amphora failover" 2018-01-13 01:59:24 +00:00
.gitreview OpenDev Migration Patch 2019-04-19 19:36:48 +00:00
.pylintrc Move from platform.linux_distribution to distro.id 2018-06-29 17:25:54 -07:00
.stestr.conf Gatefix: Migrate from testr to stestr 2017-09-13 17:12:21 +00:00
CONSTITUTION.rst Update the documentation link for doc migration 2017-09-22 00:45:56 +00:00
CONTRIBUTING.rst Update links in CONTRIBUTING.rst 2017-09-20 05:24:21 +00:00
HACKING.rst Update the documentation link for doc migration 2017-09-22 00:45:56 +00:00
LICENSE Populate repository with common initial files 2014-07-02 20:30:14 -07:00
README.rst Update README by adding Mailing List and Wiki URL 2018-10-31 09:32:10 +07:00
TESTING.rst Introduce TESTING.rst for quick developer reference 2017-04-07 21:48:31 +00:00
babel.cfg Setup translation for octavia 2016-12-15 00:48:02 +00:00
bindep.txt Add bindep.txt for Octavia 2019-06-24 22:28:12 +00:00
lower-constraints.txt Update tox.ini for new upper constraints strategy 2019-06-28 17:37:06 -07:00
requirements.txt Update tox.ini for new upper constraints strategy 2019-06-28 17:37:06 -07:00
setup.cfg Updates Octavia to support octavia-lib 2019-03-07 14:40:22 +01:00
setup.py Updated from global requirements 2017-03-02 11:50:57 +00:00
test-requirements.txt Cap hacking version to <2 2020-01-10 21:43:25 +01:00
tox.ini Fix controller worker graceful shutdown 2019-11-21 10:24:35 +01:00

README.rst

Team and repository tags

image

Octavia

Latest Version

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://git.openstack.org/cgit/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