layer 7 haproxy backend checks
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Gnocchi Charm |
Fix Committed
|
Undecided
|
Gabriel Cocenza | ||
OpenStack Charm Guide |
Triaged
|
High
|
Unassigned | ||
OpenStack Cinder Charm |
Fix Committed
|
Undecided
|
Gabriel Cocenza | ||
OpenStack Designate Charm |
Fix Committed
|
Undecided
|
Gabriel Cocenza | ||
OpenStack Glance Charm |
Fix Committed
|
Undecided
|
Gabriel Cocenza | ||
OpenStack HA Cluster Charm |
Invalid
|
Undecided
|
Unassigned | ||
OpenStack Heat Charm |
Fix Committed
|
Undecided
|
Gabriel Cocenza | ||
OpenStack Ironic API Charm |
Fix Committed
|
Undecided
|
Gabriel Cocenza | ||
OpenStack Keystone Charm |
Fix Committed
|
Undecided
|
Gabriel Cocenza | ||
OpenStack Neutron API Charm |
Fix Committed
|
Undecided
|
Gabriel Cocenza | ||
OpenStack Nova Cloud Controller Charm |
Fix Committed
|
Undecided
|
Gabriel Cocenza | ||
OpenStack Swift Proxy Charm |
Fix Committed
|
Undecided
|
Gabriel Cocenza |
Bug Description
The current haproxy config adds health checks for all backends. These are however the default TCP checks[0], which succeed simply if a connection to the specified port is possible, and don't go any further in trying to assess if the backend service is actually healthy.
In some partial failure scenarios - e.g. extreme load or memory pressure - TCP checks may succeed where more thorough ones would not, causing API traffic to be routed to backends that aren't actually able to process it.
HAproxy offers the possibility of reconfiguring the layer 4 checks into layer 7 ones by using the httpchk option[1]. This is still fairly basic, but configuring the http-check option[4] makes the check a bit more accurate, while service-specific checks are available for some backends such as mysql[2] and postgres[3]. Finally, external scripts[5] can be invoked for a fully customized check routine.
In order to improve the control plane resilience we should gradually switch to more advanced backend checks. Plain TCP checks should remain the default, but principal charms should provide more accurate check specifications via their relation to hacluster. Depending on the service, a properly configured httpchk may suffice, while in some cases a fully custom script may be more appropriate.
This is not in contrast with giving more control to pacemaker via openstack resource agents, as described in bug 1880611.
[0] https:/
[1] https:/
[2] https:/
[3] https:/
[4] https:/
[5] https:/
affects: | charm-designate → charm-hacluster |
description: | updated |
Changed in charm-hacluster: | |
assignee: | nobody → Jose Guedez (jfguedez) |
Changed in charm-glance: | |
assignee: | nobody → Jose Guedez (jfguedez) |
status: | New → In Progress |
Changed in charm-hacluster: | |
assignee: | Jose Guedez (jfguedez) → nobody |
Changed in charm-glance: | |
assignee: | Jose Guedez (jfguedez) → nobody |
Changed in charm-glance: | |
assignee: | nobody → Gabriel Angelo Sgarbi Cocenza (gabrielcocenza) |
Changed in charm-gnocchi: | |
assignee: | nobody → Gabriel Angelo Sgarbi Cocenza (gabrielcocenza) |
Changed in charm-keystone: | |
assignee: | nobody → Gabriel Angelo Sgarbi Cocenza (gabrielcocenza) |
Changed in charm-cinder: | |
assignee: | nobody → Gabriel Angelo Sgarbi Cocenza (gabrielcocenza) |
Changed in charm-designate: | |
assignee: | nobody → Gabriel Angelo Sgarbi Cocenza (gabrielcocenza) |
Changed in charm-neutron-api: | |
assignee: | nobody → Gabriel Angelo Sgarbi Cocenza (gabrielcocenza) |
Changed in charm-neutron-api: | |
status: | New → In Progress |
no longer affects: | charm-neutron-gateway |
no longer affects: | charm-percona-cluster |
no longer affects: | charm-ceilometer |
no longer affects: | charm-openstack-dashboard |
Changed in charm-heat: | |
assignee: | nobody → Gabriel Angelo Sgarbi Cocenza (gabrielcocenza) |
Changed in charm-ironic-api: | |
assignee: | nobody → Gabriel Angelo Sgarbi Cocenza (gabrielcocenza) |
Changed in charm-nova-cloud-controller: | |
assignee: | nobody → Gabriel Angelo Sgarbi Cocenza (gabrielcocenza) |
Changed in charm-swift-proxy: | |
assignee: | nobody → Gabriel Angelo Sgarbi Cocenza (gabrielcocenza) |
Changed in charm-guide: | |
importance: | Undecided → High |
status: | New → Triaged |
Fix proposed to branch: master /review. opendev. org/750224
Review: https:/