Merge "proxysql: Revert to upstream defaults for most settings"

This commit is contained in:
Zuul 2025-01-22 17:38:48 +00:00 committed by Gerrit Code Review
commit cab7c06cb8
5 changed files with 120 additions and 31 deletions
ansible
group_vars
roles/loadbalancer
defaults
templates/proxysql
releasenotes/notes
tests/templates

@ -529,27 +529,6 @@ mariadb_clustercheck_port: "4569"
mariadb_enable_tls_backend: "{{ database_enable_tls_backend }}"
mariadb_monitor_user: "{{ 'monitor' if enable_proxysql | bool else 'haproxy' }}"
mariadb_monitor_connect_interval: "2000"
mariadb_monitor_galera_healthcheck_interval: "4000"
mariadb_monitor_galera_healthcheck_timeout: "1000"
mariadb_monitor_galera_healthcheck_max_timeout_count: "2"
mariadb_monitor_ping_interval: "3000"
mariadb_monitor_ping_timeout: "2000"
mariadb_monitor_ping_max_failures: "2"
#
# Defaults preserved for multinode setup
# Tweaked for single-node
#
# ProxySQL shuns servers on MySQL errors, which can cause failures
# during upgrades or restarts. In single-node setups, ProxySQL can't reroute
# traffic, leading to "Max connect timeout" errors. To avoid this in CI and
# signle-node environments, delay error responses to clients by 10 seconds,
# giving the backend time to recover without immediate failures.
#
# See ProxySQL docs for more: https://proxysql.com/documentation/global-variables/mysql-variables/#mysql-shun_on_failures
mariadb_shun_on_failures: "{{ '10' if mariadb_shards_info.shards.values() | map(attribute='hosts') | map('length') | select('<=', 1) | list | length > 0 else '5' }}"
mariadb_connect_retries_delay: "{{ '1000' if mariadb_shards_info.shards.values() | map(attribute='hosts') | map('length') | select('<=', 1) | list | length > 0 else '1' }}"
mariadb_connect_retries_on_failure: "{{ '20' if mariadb_shards_info.shards.values() | map(attribute='hosts') | map('length') | select('<=', 1) | list | length > 0 else '10' }}"
mariadb_datadir_volume: "mariadb"

@ -205,4 +205,31 @@ loadbalancer_copy_certs: "{{ kolla_copy_ca_into_containers | bool or kolla_enabl
################
# ProxySQL
################
mariadb_connect_timeout_client: ""
mariadb_connect_timeout_server: ""
mariadb_connect_timeout_server_max: ""
# ProxySQL default is two minutes, which is most probably too much.
mariadb_monitor_connect_interval: "2000"
mariadb_monitor_connect_timeout: ""
mariadb_monitor_galera_healthcheck_interval: ""
mariadb_monitor_galera_healthcheck_timeout: ""
mariadb_monitor_galera_healthcheck_max_timeout_count: ""
mariadb_monitor_ping_interval: ""
mariadb_monitor_ping_timeout: ""
mariadb_monitor_ping_max_failures: ""
mariadb_monitor_read_only_interval: ""
#
# Defaults preserved for multinode setup
# Tweaked for single-node
#
# ProxySQL shuns servers on MySQL errors, which can cause failures
# during upgrades or restarts. In single-node setups, ProxySQL can't reroute
# traffic, leading to "Max connect timeout" errors. To avoid this in CI and
# signle-node environments, delay error responses to clients by 10 seconds,
# giving the backend time to recover without immediate failures.
#
# See ProxySQL docs for more: https://proxysql.com/documentation/global-variables/mysql-variables/#mysql-shun_on_failures
mariadb_singlenode: "{{ mariadb_shards_info.shards.values() | map(attribute='hosts') | map('length') | select('<=', 1) | list | length > 0 }}"
mariadb_shun_on_failures: "{{ '10' if mariadb_singlenode else '' }}"
mariadb_connect_retries_delay: "{{ '1000' if mariadb_singlenode else '' }}"
mariadb_connect_retries_on_failure: "{{ '20' if mariadb_singlenode else '' }}"

@ -20,25 +20,53 @@ mysql_variables:
threads: {{ proxysql_workers }}
max_connections: {{ proxysql_max_connections }}
interfaces: "{{ kolla_internal_vip_address | put_address_in_context('url') }}:{{ database_port }}"
connect_retries_delay: "{{ mariadb_connect_retries_delay }}"
connect_retries_on_failure: "{{ mariadb_connect_retries_on_failure }}"
shun_on_failures: "{{ mariadb_shun_on_failures }}"
monitor_username: "{{ mariadb_monitor_user }}"
monitor_password: "{{ mariadb_monitor_password }}"
monitor_connect_interval: "{{ mariadb_monitor_connect_interval }}"
{% if mariadb_connect_retries_delay | length > 0 %}
connect_retries_delay: {{ mariadb_connect_retries_delay }}
{% endif %}
{% if mariadb_connect_retries_on_failure | length > 0 %}
connect_retries_on_failure: {{ mariadb_connect_retries_on_failure }}
{% endif %}
{% if mariadb_connect_timeout_client | length > 0 %}
connect_timeout_client: {{ mariadb_connect_timeout_client }}
{% endif %}
{% if mariadb_connect_timeout_server | length > 0 %}
connect_timeout_server: {{ mariadb_connect_timeout_server }}
{% endif %}
{% if mariadb_connect_timeout_server_max | length > 0 %}
connect_timeout_server_max: {{ mariadb_connect_timeout_server_max }}
{% endif %}
{% if mariadb_monitor_connect_interval | length > 0 %}
monitor_connect_interval: {{ mariadb_monitor_connect_interval }}
{% endif %}
{% if mariadb_monitor_connect_timeout | length > 0 %}
monitor_connect_timeout: {{ mariadb_monitor_connect_timeout }}
{% endif %}
{% if mariadb_monitor_galera_healthcheck_interval | length > 0 %}
monitor_galera_healthcheck_interval: "{{ mariadb_monitor_galera_healthcheck_interval }}"
{% endif %}
{% if mariadb_monitor_galera_healthcheck_timeout | length > 0 %}
monitor_galera_healthcheck_timeout: "{{ mariadb_monitor_galera_healthcheck_timeout }}"
{% endif %}
{% if mariadb_monitor_galera_healthcheck_max_timeout_count | length > 0 %}
monitor_galera_healthcheck_max_timeout_count: "{{ mariadb_monitor_galera_healthcheck_max_timeout_count }}"
{% endif %}
{% if mariadb_monitor_ping_interval | length > 0 %}
monitor_ping_interval: "{{ mariadb_monitor_ping_interval }}"
{% endif %}
{% if mariadb_monitor_ping_timeout | length > 0 %}
monitor_ping_timeout: "{{ mariadb_monitor_ping_timeout }}"
{% endif %}
{% if mariadb_monitor_ping_max_failures | length > 0 %}
monitor_ping_max_failures: "{{ mariadb_monitor_ping_max_failures }}"
{% endif %}
{% if mariadb_monitor_read_only_interval | length > 0 %}
monitor_read_only_interval: {{ mariadb_monitor_read_only_interval }}
{% endif %}
monitor_connect_timeout: 6000
connect_timeout_client: 100000
connect_timeout_server: 30000
connect_timeout_server_max: 100000
monitor_username: "{{ mariadb_monitor_user }}"
monitor_password: "{{ mariadb_monitor_password }}"
{% if mariadb_shun_on_failures | length > 0 %}
shun_on_failures: {{ mariadb_shun_on_failures }}
{% endif %}
{% if database_enable_tls_backend | bool %}
ssl_p2s_ca: "/etc/proxysql/certs/root.crt"
ssl_p2s_cert: "/etc/proxysql/certs/mariadb-cert.pem"

@ -0,0 +1,53 @@
---
upgrade:
- |
The following ``proxysql`` variables have been reverted to upstream
defaults (unless overridden using Ansible variables).
In case of ``shun_on_failures``, ``connect_retries_delay`` and
``connect_retries_on_failure`` we still have own defaults for all-in-one
deployments - but rely on upstream on multinode ones.
.. list-table::
* - Variable name
- Kolla-Ansible default
- ProxySQL (upstream) default
* - connect_retries_delay
- 1000 (aio) / 1
- 1
* - connect_retries_on_failure
- 20 (aio) / 10
- 10
* - connect_timeout_client
- 100000
- 10000
* - connect_timeout_server
- 30000
- 1000
* - connect_timeout_server_max
- 100000
- 10000
* - monitor_connect_timeout
- 6000
- 1000
* - monitor_galera_healthcheck_interval
- 4000
- 5000
* - monitor_galera_healthcheck_max_timeout_count
- 2
- 3
* - monitor_galera_healthcheck_timeout
- 1000
- 800
* - monitor_ping_interval
- 3000
- 8000
* - monitor_ping_timeout
- 2000
- 1000
* - monitor_ping_max_failures
- 2
- 3
* - shun_on_failures
- 10 (aio) / 5
- 5

@ -45,6 +45,8 @@ mariadb_wsrep_extra_provider_options:
- "evs.inactive_timeout=PT30S"
- "evs.keepalive_period=PT3S"
mariadb_monitor_connect_timeout: "6000"
nova_compute_virt_type: "{{ virt_type }}"
enable_openstack_core: "{{ openstack_core_enabled }}"