Victoria Series Release Notes¶
7.1.2-38¶
Known Issues¶
When using a distribution with a recent SELinux release such as CentOS 8Stream, PING health-monitor does not work as shell_exec_t calls are deniedby SELinux.
Fixed configuration issue which allowed authenticated and authorizedusers to inject code into HAProxy configuration using API requests.Octavia API no longer accepts unencoded whitespace characters in url_path valuesin update requests for healthmonitors.
Upgrade Notes¶
The fix that updates the Netfilter Conntrack Sysfs variables requiresrebuilding the amphora image in order to be effective.
Security Issues¶
Filter out private information from the taskflow logs when ‘’INFO’’ levelmessages are enabled and when jobboard is enabled. Logs might have includedTLS certificates and private_key. By default, in Octavia only WARNING andabove messages are enabled in taskflow and jobboard is disabled.
Bug Fixes¶
Increased the TCP buffer memory maximum and enabled MTU ICMP black holedetection.
The generated RSyslog configuration on the amphora supports nowRSyslog failover with TCP if multiple RSyslog servers were specified.
In order to avoid hitting the Neutron API hardwhen batch update with creating many new members, we cache thesubnet validation results in batch update members API call.We also change to validate new members only during batch updatemembers since subnet ID is immutable.
The parameters of a taskflow Flow were logged in ‘’INFO’’ level messages bytaskflow, it included TLS-enabled listeners and pools parameters, such ascertificates and private_key.
Fix an authentication error with Barbican when creating a TERMINATED_HTTPSlistener with application credential tokens or trust IDs.
Fix disabled UDP pools. Disabled UDP pools were marked as “OFFLINE” but therequests were still forwarded to the members of the pool.
Correctly detect the member operating status “drain” when querying statusdata from HAProxy.
Enable required SELinux booleans for CentOS or RHEL amphora image.
Fixed backwards compatibility issue with the feature that preserves HAProxyserver states between reloads.HAProxy version 1.5 or below do not support this feature, so Octaviawill not to activate it on amphorae with those versions.
Fix a bug that prevented the provisioning_state of a health-monitor to beset to ERROR when an error occurred while creating, updating or deleting ahealth-monitor.
Fix an issue with amphorav2 and persistence, some long tasks executed by acontroller might have been released in taskflow and rescheduled on anothercontroller. Octavia now ensures that a task is never released early byusing a keepalive mechanism to notify taskflow (and its redis backend) thata job is still running.
Fixed an issue with members in ERROR operating status that may have beenupdated briefly to ONLINE during a Load Balancer configuration change.
Fixed a potential error when plugging a member from a new network afterdeleting another member and unplugging its network. Octavia may have triedto plug the new network to a new interface but with an already existingname.This fix requires to update the Amphora image.
Netfilter Conntrack Sysfs variables net.netfilter.nf_conntrack_max andnf_conntrack_expect_max get set to sensible values on the amphora now.Previously, kernel default values were used which were much too low for theconfigured net.netfilter.nf_conntrack_buckets value. As a result packetscould get dropped because the conntrack table got filled too quickly. Notethat this affects only UDP and SCTP protocol listeners.Connection tracking is disabled for TCP-based connections on theamphora including HTTP(S).
Fix a bug when updating a load balancer with a QoS policy after a failover,Octavia attempted to update the VRRP ports of the deleted amphorae, movingthe provisioning status of the load balancer to ERROR.
Fix a potential race condition when updating a resource in the amphorav2worker. The worker was not waiting for the resource to be set toPENDING_UPDATE, so the resource may have been updated with old data from thedatabase, resulting in a no-op update.
Fixed issue with SELinux and the lvs-masquerade.sh script on the amphora.The script already runs with root permissions, so the use of sudo inside thescript is unneeded.
Fix an issue when Octavia performs a failover of an ACTIVE-STANDBY loadbalancer that has both amphorae missing.Some tasks in the controller took too much time to timeout because thetimeout value defined in
[haproxy_amphora].active_connection_max_retriesand[haproxy_amphora].active_connection_rety_intervalwas not used.
Fix a bug that could have triggered a race condition when configuring amember interface in the amphora. Due to a race condition, a networkinterface might have been deleted from the amphora, leading to a loss ofconnectivity.
Fixed “Could not retrieve certificate” error when updating/deleting theclient_ca_tls_container_ref field of a listener after a CA/CRL was deleted.
Fixed validations in L7 rule and session cookie APIs in order to preventauthenticated and authorized users to inject code into HAProxyconfiguration. CR and LF (\r and \n) are no longer allowed in L7 rulekeys and values. The session persistence cookie names must follow the rulesdescribed inhttps://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie.
Fix load balancers stuck in PENDING_UPDATE issues for some API calls (POST/l7rule, PUT /pool) when a provider denied the call.
Validate that the creation of L7 policies is compatible with the protocolof the listener in the Amphora driver. L7 policies are allowed forTerminated HTTPS or HTTP protocol listeners, but not for HTTPS, TCP or UDPprotocols listeners.
7.1.2¶
Bug Fixes¶
Fixed an issue with batch member updates, that don’t have any changes,not properly rolling back the update.
Disable conntrack for TCP flows in the Amphora, it reduces memory usage forHAProxy-based listeners and prevents some kernel warnings about droppedpackets.
Fixed an issue that an amphorav2 LB cannot be reached after loadbalancerfailover. The LB security group was not set in the amphora port.
Fixes an issue where provider drivers may not decrement the loadbalancer objects quota on delete.
Fixes loadbalancer creation failure when one of the listener port matcheswith the octavia generated peer ports and the allowed_cidr is explicitlyset to 0.0.0.0/0 on the listener. This is due to creation of two securitygroup rules with remote_ip_prefix as None and remote_ip_prefix as 0.0.0.0/0which neutron rejects the second request with security group rule alreadyexists.
Fix an issue with the rsyslog configuration file in the Amphora when thelog offloading feature and the local log storage feature are both disabled.
Fix a serialization error when using host_routes in VIP subnets whenpersistence in the amphorav2 driver is enabled.
Some IPv6 UDP members were incorrectly marked in ERROR status, because ofa formatting issue while generating the health message in the amphora.
Fixed MAX_TIMEOUT for timeout_client_data, timeout_member_connect,timeout_member_data, timeout_tcp_inspect API listener. The value wasreduced from 365 days to 24 days, which now does not exceed the value ofthe data type in DB.
Fixed an issue with the
lointerface in theamphora-haproxynetworknamespace. Thelointerface was down and prevented haproxy tocommunicate with other haproxy processes (for persistent stick tables) onconfiguration change. It delayed old haproxy worker cleanup and increasedthe memory consumption usage after reloading the configuration.
Increase the limit value for nr_open and file-max in the amphora, the newvalue is based on what HAProxy 2.x is expecting from the system with thegreatest maxconn value that Octavia can set.
Fix an issue with the provisioning status of a load balancer that was setto ERROR too early when an error occurred, making the load balancer mutablewhile the execution of the tasks for this resources haven’t finished yet.
Fix an issue that could set the provisioning status of a load balancer to aPENDING_UPDATE state when an error occurred in the amphora failover flow.
Fix load balancers that use customized host_routes in the VIP or the membersubnets in amphorav2.
Fix weighted round-robin for UDP listeners with keepalived and lvs.The algorithm must be specified as ‘wrr’ in order for weightedround-robin to work correctly, but was being set to ‘rr’.
Fixed the healthcheck endpoint always querying the backends by cachingresults for a configurable time. The default is five seconds.
7.1.1¶
Bug Fixes¶
Fixes an issue with load balancer failover, when the VIP subnet is out ofIP addresses, that could lead to the VIP being deallocated.
Fix default value override for timeout values for listeners. Changing thedefault timeouts in the configuration file wasn’t correctly applied in thedefault listener parameters.
Fix nf_conntrack_buckets sysctl in the Amphora, its value was incorrectlyset.
Fixed an issue were updating a CRL or client certificate on a pool wouldcause the pool to go into ERROR.
Fixed a bug where pools with PROXYV2 will go into ERROR.
Fix an issue when updating
tls_versionsandtls_ciphersin Poolswith empty (None) values, unsetting theses parameters now resets theirvalues to the default values.
Add a validation step in the Octavia Amphora driver to ensure that theport_security_enabled parameter is set on the VIP network.
7.1.0¶
Bug Fixes¶
Fixed an issue that could cause load balancers, with multiple amphorain a failed state, to be unable to complete a failover.
Fix an incorrect
operating_statuswith empty UDP pools. A UDP poolwithout any member is nowONLINEinstead ofOFFLINE.
Add missing cloud-utils-growpart RPM to Red Hat based amphora images.
Add missing cronie RPM to Red Hat based amphora images.
7.0.0¶
New Features¶
Added support for proxy protocol version 2.
Added HTTP/2 over TLS support via ALPN protocol negotiation to theamphora provider driver. Feature available in amphora images with HAProxy2.0 or newer.
Added the ability to delete amphora that are not in use.
Operators can now use the ‘amp_image_tag’ Octavia flavor capability whenusing the amphora provider driver. This allows custom amphora images to beused per-load balancer. If this is not defined in an Octavia flavor, theamp_image_tag Octavia configuration file setting will continue to be used.
Introduced an image driver interface. Supported drivers are noop andGlance.
Add l7policy and l7rule to octavia quota.
Added support for TLS extension Application Layer Protocol Negotiation(ALPN) to TLS-terminated HTTPS load balancers. A new parameter
alpn_protocolswas added to the Listener API.
Octavia provider drivers can now offer HTTP/2 over TLS (protocolnegotiation via ALPN) to clients.
Added support for nftables to the devstack plugin and the amphora.
Add support for SCTP protocol. SCTP support has been added in the OctaviaAPI for listener, pool, and health-monitor resources.
Added a new configuration setting (
[task_flow]/jobboard_enabled) toenable/disable jobboard functionality in the amphorav2 provider. Whendisabled, the amphorav2 provider behaves similarly to the amphora v1provider and does not require extra dependencies. The default setting isjobboard disabled while jobboard remains an experimental feature.
Added
minimum_tls_versiontooctavia.conf. Listeners, pools, andthe defaults for either will be blocked from using any lower TLS versions.By default, there is no minumum version.
Add a new configuration option to define the default connection_limit fornew listeners that use the Amphora provider. The option is[haproxy_amphora].default_connection_limit and its default value is 50,000.This value is used when creating or setting a listener with -1 asconnection_limit parameter, or when unsetting connection_limit parameter.
TLS-enabled pools can now be configured to use only specified versions ofTLS. Default TLS versions for new pools can be set with
default_pool_tls_versionsinoctavia.conf. Existing poolswill continue to use the old defaults.
Loadbalancer statistics can now be reported to multiple backend locationssimply by specifying multiple statistics drivers in config.
Added
tls_cipher_prohibit_listtooctavia.conf. Listeners, pools,and the default values for either will be blocked from using any of theseciphers. By default, no ciphers are prohibited.
HTTPS-terminated listeners can now be configured to use only specifiedversions of TLS. Default TLS versions for new listeners can be set with
default_listener_tls_versionsinoctavia.conf. Existing listenerswill continue to use the old defaults.
Upgrade Notes¶
When the amphora provider driver is enabled, operators need to set option
[controller_worker]/image_driver. The default image driver isimage_glance_driver. For testing could be usedimage_noop_driver.
An amphora image update is recommended to pick up a workaround to anHAProxy issue where it would fail to reload on configuration change shouldthe local peer name start with “-x”.
The failover improvements do not require an updated amphora image,but updating existing amphora will minimize the failoveroutage time for standalone amphora on subsequent failovers.
The option
[controller_worker]/amp_ssh_access_allowedhas beendeprecated since Queens release and is now removed. This option wassuperseded by[controller_worker]/amp_ssh_key_nameoption.
The option
[controller_worker]/amp_image_idhas been deprecated sinceMitaka release and is now removed. This option was superseded by[controller_worker]/amp_image_tagoption.
The internal interface for loadbalancer statistics collection has moved.When upgrading, see deprecation notes for the
stats_update_driverconfig option, as it will need to be moved and renamed.
The default drivers have been switched to live from noop drivers for themost part. Volume and distributor remain set to noop drivers as those areexperimental features. Operators do not need to make configuration changes.
HTTPS-terminated listeners will now only allow TLS1.2 and TLS1.3 bydefault. If no TLS versions are specified at listener create time, thelistener will only accept TLS1.2 and TLS1.3 connections. Previously TLSlisteners would accept any TLS version. Existing listeners will not bechanged.
Deprecation Notes¶
Spares pool support is deprecated, pending removal in the X release. Use ofthe spares pool was originally recommended to increase provisioning speed,but since Nova’s server groups do not support adding existing VMs, Octaviacannot support use of the spares pool with the Active-Standby topology.Since this is our recommended topology for production deployments, andspeed is less essential in development/testing environments (the only placewe could recommend the use of Single topology), the overhead of maintainingspares pool support exceeds its theoretical usefulness.
Terminology such as
blacklisthas been replaced with moreinclusive words, such asprohibitlistwherever possible.The configuration option
tls_cipher_blacklisthas been deprecatedand replaced withtls_cipher_prohibit_list. It will be removed in afuture release.
The deprecated option
status_update_threadshas been removed,health_update_threadsandstats_update_threadsshould be usedinstead.
The option
health_manager.health_update_driverhas been deprecated asit was never really used, so the driver layer was removed.The optionhealth_manager.stats_update_driverwas moved and renamedtocontroller_worker.statistics_drivers(note it is now plural). Itcan now contain a list of multiple drivers for handling statistics.
Security Issues¶
If you are using the admin_or_owner-policy.yaml policy override fileyou should upgrade your API processes to include the unscoped token fix.The default policies are not affected by this issue.
Bug Fixes¶
Fixed an issue when a loadbalancer is disabled, Octavia Health Managerkeeps failovering the amphorae
Fixed an issue where members added to TLS-enabled pools would go to ERRORprovisioning status.
Fixed an issue with failing over an amphora if the pair amphora in anactive/standby pair had a missing VRRP port in neutron.
Fixed an issue where setting of SNI containers were not being applied onlistener update API calls.
Fixed an Octavia API validation on listener update where SNI containerscould be set on non-TERMINATED_HTTPS listeners.
Fixed an issue where some columns could not be used for sort keys inAPI list calls.
Fixed an issue in the CADF audit map file for failover actions that couldcause keystonemiddleware to raise an exception.
Fix an issue when the barbican service enable TLS, we create the listernerfailed.
Fix operational status for disabled UDP listeners. The operating status ofdisabled UDP listeners is now OFFLINE instead of ONLINE, the behavior is nowsimilary to the behavior of HTTP/HTTPS/TCP/… listeners.
Fixed an issue where clearing listener TLS versions resulted in aserver-side error.
Fixed an issue where when clearing listener TLS versions and ciphers wouldnot apply the default values per defined in the API configuration settings.
Fixed an issue where amphora load balancers fail to create when Novaanti-affinity is enabled and topology is SINGLE.
Workaround an HAProxy issue where it would fail to reload on configurationchange should the local peer name start with “-x”.
Fixed an issue where listener “insert_headers” parameter was accepted forprotocols that do not support header insertion.
Fixed an issue where TLS-enabled pools would fail to provision.
Fixed an issue where UDP only load balancers would not bring up the VIPaddress.
Fix a potential invalid DOWN operating status for members of a UDP pool.A race condition could have occured when building the first heartbeatmessage after adding a new member in a pool, this recently added membercould have been seen as DOWN.
Fixes an issue when using the admin_or_owner-policy.yaml policy overridefile and unscoped tokens.
With haproxy 1.8.x releases, haproxy consumes much more memory in theamphorae because of pre-allocated data structures. This amount of memorydepends on the maxconn parameters in its configuration file (which isrelated to the connection_limit parameter in the Octavia API).In the Amphora provider, the default connection_limit value -1 isnow converted to a maxconn of 50,000. It was previously 1,000,000 but thatvalue triggered some memory allocation issues when quickly performingmultiple configuration updates in a load balancer.
Significantly improved the reliability and performance of amphoraand load balancer failovers. This is especially true when theNova service is experiencing failures.
Other Notes¶
Though the current HAProxy version 1.8 used in some distributionssupport HTTP/2, we highly recommend using HAProxy version 2.0 or newerin the amphora image when using HTTP/2.
