Skip to content

Commit 1ad3946

Browse files
authored
Merge pull request #664 from stackhpc/upstream/master-2025-01-23
Synchronise master with upstream
2 parents c709c2c + cab7c06 commit 1ad3946

File tree

5 files changed

+120
-31
lines changed

5 files changed

+120
-31
lines changed

ansible/group_vars/all.yml

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -529,27 +529,6 @@ mariadb_clustercheck_port: "4569"
529529
mariadb_enable_tls_backend: "{{ database_enable_tls_backend }}"
530530

531531
mariadb_monitor_user: "{{ 'monitor' if enable_proxysql | bool else 'haproxy' }}"
532-
mariadb_monitor_connect_interval: "2000"
533-
mariadb_monitor_galera_healthcheck_interval: "4000"
534-
mariadb_monitor_galera_healthcheck_timeout: "1000"
535-
mariadb_monitor_galera_healthcheck_max_timeout_count: "2"
536-
mariadb_monitor_ping_interval: "3000"
537-
mariadb_monitor_ping_timeout: "2000"
538-
mariadb_monitor_ping_max_failures: "2"
539-
#
540-
# Defaults preserved for multinode setup
541-
# Tweaked for single-node
542-
#
543-
# ProxySQL shuns servers on MySQL errors, which can cause failures
544-
# during upgrades or restarts. In single-node setups, ProxySQL can't reroute
545-
# traffic, leading to "Max connect timeout" errors. To avoid this in CI and
546-
# signle-node environments, delay error responses to clients by 10 seconds,
547-
# giving the backend time to recover without immediate failures.
548-
#
549-
# See ProxySQL docs for more: https://proxysql.com/documentation/global-variables/mysql-variables/#mysql-shun_on_failures
550-
mariadb_shun_on_failures: "{{ '10' if mariadb_shards_info.shards.values() | map(attribute='hosts') | map('length') | select('<=', 1) | list | length > 0 else '5' }}"
551-
mariadb_connect_retries_delay: "{{ '1000' if mariadb_shards_info.shards.values() | map(attribute='hosts') | map('length') | select('<=', 1) | list | length > 0 else '1' }}"
552-
mariadb_connect_retries_on_failure: "{{ '20' if mariadb_shards_info.shards.values() | map(attribute='hosts') | map('length') | select('<=', 1) | list | length > 0 else '10' }}"
553532

554533
mariadb_datadir_volume: "mariadb"
555534

ansible/roles/loadbalancer/defaults/main.yml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,4 +205,31 @@ loadbalancer_copy_certs: "{{ kolla_copy_ca_into_containers | bool or kolla_enabl
205205
################
206206
# ProxySQL
207207
################
208+
mariadb_connect_timeout_client: ""
209+
mariadb_connect_timeout_server: ""
210+
mariadb_connect_timeout_server_max: ""
211+
# ProxySQL default is two minutes, which is most probably too much.
212+
mariadb_monitor_connect_interval: "2000"
213+
mariadb_monitor_connect_timeout: ""
214+
mariadb_monitor_galera_healthcheck_interval: ""
215+
mariadb_monitor_galera_healthcheck_timeout: ""
216+
mariadb_monitor_galera_healthcheck_max_timeout_count: ""
217+
mariadb_monitor_ping_interval: ""
218+
mariadb_monitor_ping_timeout: ""
219+
mariadb_monitor_ping_max_failures: ""
208220
mariadb_monitor_read_only_interval: ""
221+
#
222+
# Defaults preserved for multinode setup
223+
# Tweaked for single-node
224+
#
225+
# ProxySQL shuns servers on MySQL errors, which can cause failures
226+
# during upgrades or restarts. In single-node setups, ProxySQL can't reroute
227+
# traffic, leading to "Max connect timeout" errors. To avoid this in CI and
228+
# signle-node environments, delay error responses to clients by 10 seconds,
229+
# giving the backend time to recover without immediate failures.
230+
#
231+
# See ProxySQL docs for more: https://proxysql.com/documentation/global-variables/mysql-variables/#mysql-shun_on_failures
232+
mariadb_singlenode: "{{ mariadb_shards_info.shards.values() | map(attribute='hosts') | map('length') | select('<=', 1) | list | length > 0 }}"
233+
mariadb_shun_on_failures: "{{ '10' if mariadb_singlenode else '' }}"
234+
mariadb_connect_retries_delay: "{{ '1000' if mariadb_singlenode else '' }}"
235+
mariadb_connect_retries_on_failure: "{{ '20' if mariadb_singlenode else '' }}"

ansible/roles/loadbalancer/templates/proxysql/proxysql.yaml.j2

Lines changed: 38 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,25 +20,53 @@ mysql_variables:
2020
threads: {{ proxysql_workers }}
2121
max_connections: {{ proxysql_max_connections }}
2222
interfaces: "{{ kolla_internal_vip_address | put_address_in_context('url') }}:{{ database_port }}"
23-
connect_retries_delay: "{{ mariadb_connect_retries_delay }}"
24-
connect_retries_on_failure: "{{ mariadb_connect_retries_on_failure }}"
25-
shun_on_failures: "{{ mariadb_shun_on_failures }}"
26-
monitor_username: "{{ mariadb_monitor_user }}"
27-
monitor_password: "{{ mariadb_monitor_password }}"
28-
monitor_connect_interval: "{{ mariadb_monitor_connect_interval }}"
23+
{% if mariadb_connect_retries_delay | length > 0 %}
24+
connect_retries_delay: {{ mariadb_connect_retries_delay }}
25+
{% endif %}
26+
{% if mariadb_connect_retries_on_failure | length > 0 %}
27+
connect_retries_on_failure: {{ mariadb_connect_retries_on_failure }}
28+
{% endif %}
29+
{% if mariadb_connect_timeout_client | length > 0 %}
30+
connect_timeout_client: {{ mariadb_connect_timeout_client }}
31+
{% endif %}
32+
{% if mariadb_connect_timeout_server | length > 0 %}
33+
connect_timeout_server: {{ mariadb_connect_timeout_server }}
34+
{% endif %}
35+
{% if mariadb_connect_timeout_server_max | length > 0 %}
36+
connect_timeout_server_max: {{ mariadb_connect_timeout_server_max }}
37+
{% endif %}
38+
{% if mariadb_monitor_connect_interval | length > 0 %}
39+
monitor_connect_interval: {{ mariadb_monitor_connect_interval }}
40+
{% endif %}
41+
{% if mariadb_monitor_connect_timeout | length > 0 %}
42+
monitor_connect_timeout: {{ mariadb_monitor_connect_timeout }}
43+
{% endif %}
44+
{% if mariadb_monitor_galera_healthcheck_interval | length > 0 %}
2945
monitor_galera_healthcheck_interval: "{{ mariadb_monitor_galera_healthcheck_interval }}"
46+
{% endif %}
47+
{% if mariadb_monitor_galera_healthcheck_timeout | length > 0 %}
3048
monitor_galera_healthcheck_timeout: "{{ mariadb_monitor_galera_healthcheck_timeout }}"
49+
{% endif %}
50+
{% if mariadb_monitor_galera_healthcheck_max_timeout_count | length > 0 %}
3151
monitor_galera_healthcheck_max_timeout_count: "{{ mariadb_monitor_galera_healthcheck_max_timeout_count }}"
52+
{% endif %}
53+
{% if mariadb_monitor_ping_interval | length > 0 %}
3254
monitor_ping_interval: "{{ mariadb_monitor_ping_interval }}"
55+
{% endif %}
56+
{% if mariadb_monitor_ping_timeout | length > 0 %}
3357
monitor_ping_timeout: "{{ mariadb_monitor_ping_timeout }}"
58+
{% endif %}
59+
{% if mariadb_monitor_ping_max_failures | length > 0 %}
3460
monitor_ping_max_failures: "{{ mariadb_monitor_ping_max_failures }}"
61+
{% endif %}
3562
{% if mariadb_monitor_read_only_interval | length > 0 %}
3663
monitor_read_only_interval: {{ mariadb_monitor_read_only_interval }}
3764
{% endif %}
38-
monitor_connect_timeout: 6000
39-
connect_timeout_client: 100000
40-
connect_timeout_server: 30000
41-
connect_timeout_server_max: 100000
65+
monitor_username: "{{ mariadb_monitor_user }}"
66+
monitor_password: "{{ mariadb_monitor_password }}"
67+
{% if mariadb_shun_on_failures | length > 0 %}
68+
shun_on_failures: {{ mariadb_shun_on_failures }}
69+
{% endif %}
4270
{% if database_enable_tls_backend | bool %}
4371
ssl_p2s_ca: "/etc/proxysql/certs/root.crt"
4472
ssl_p2s_cert: "/etc/proxysql/certs/mariadb-cert.pem"
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
---
2+
upgrade:
3+
- |
4+
The following ``proxysql`` variables have been reverted to upstream
5+
defaults (unless overridden using Ansible variables).
6+
In case of ``shun_on_failures``, ``connect_retries_delay`` and
7+
``connect_retries_on_failure`` we still have own defaults for all-in-one
8+
deployments - but rely on upstream on multinode ones.
9+
10+
.. list-table::
11+
12+
* - Variable name
13+
- Kolla-Ansible default
14+
- ProxySQL (upstream) default
15+
* - connect_retries_delay
16+
- 1000 (aio) / 1
17+
- 1
18+
* - connect_retries_on_failure
19+
- 20 (aio) / 10
20+
- 10
21+
* - connect_timeout_client
22+
- 100000
23+
- 10000
24+
* - connect_timeout_server
25+
- 30000
26+
- 1000
27+
* - connect_timeout_server_max
28+
- 100000
29+
- 10000
30+
* - monitor_connect_timeout
31+
- 6000
32+
- 1000
33+
* - monitor_galera_healthcheck_interval
34+
- 4000
35+
- 5000
36+
* - monitor_galera_healthcheck_max_timeout_count
37+
- 2
38+
- 3
39+
* - monitor_galera_healthcheck_timeout
40+
- 1000
41+
- 800
42+
* - monitor_ping_interval
43+
- 3000
44+
- 8000
45+
* - monitor_ping_timeout
46+
- 2000
47+
- 1000
48+
* - monitor_ping_max_failures
49+
- 2
50+
- 3
51+
* - shun_on_failures
52+
- 10 (aio) / 5
53+
- 5

tests/templates/globals-default.j2

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ mariadb_wsrep_extra_provider_options:
4545
- "evs.inactive_timeout=PT30S"
4646
- "evs.keepalive_period=PT3S"
4747

48+
mariadb_monitor_connect_timeout: "6000"
49+
4850
nova_compute_virt_type: "{{ virt_type }}"
4951

5052
enable_openstack_core: "{{ openstack_core_enabled }}"

0 commit comments

Comments
 (0)