9f14ad651a
These affected both deploy (and reconfigure) and upgrade resulting in WSREP issues, failed deploys or need to recover the cluster. This patch makes sure k-a does not abruptly terminate nodes to break cluster. This is achieved by cleaner separation between stages (bootstrap, restart current, deploy new) and 3 phases for restarts (to keep the quorum). Upgrade actions, which operate on a healthy cluster, went to its section. Service restart was refactored. We no longer rely on the master/slave distinction as all nodes are masters in Galera. Closes-bug: #1857908 Closes-bug: #1859145 Change-Id: I83600c69141714fc412df0976f49019a857655f5
47 lines
1.4 KiB
YAML
47 lines
1.4 KiB
YAML
---
|
|
- name: Restart MariaDB container
|
|
vars:
|
|
service_name: "mariadb"
|
|
service: "{{ mariadb_services[service_name] }}"
|
|
become: true
|
|
kolla_docker:
|
|
action: "recreate_or_restart_container"
|
|
common_options: "{{ docker_common_options }}"
|
|
name: "{{ service.container_name }}"
|
|
image: "{{ service.image }}"
|
|
volumes: "{{ service.volumes }}"
|
|
dimensions: "{{ service.dimensions }}"
|
|
|
|
# NOTE(yoctozepto): We have to loop this to avoid breaking on connection resets
|
|
- name: Wait for MariaDB service port liveness
|
|
wait_for:
|
|
host: "{{ api_interface_address }}"
|
|
port: "{{ mariadb_port }}"
|
|
connect_timeout: 1
|
|
timeout: 60
|
|
search_regex: "MariaDB"
|
|
register: check_mariadb_port
|
|
until: check_mariadb_port is success
|
|
retries: 10
|
|
delay: 6
|
|
|
|
- name: Wait for MariaDB service to sync WSREP
|
|
become: true
|
|
command: >-
|
|
docker exec {{ mariadb_service.container_name }}
|
|
mysql -uroot -p{{ database_password }}
|
|
--silent --skip-column-names
|
|
-e 'SHOW STATUS LIKE "wsrep_local_state_comment"'
|
|
changed_when: false
|
|
register: result
|
|
until: result.stdout == "wsrep_local_state_comment\tSynced"
|
|
retries: 10
|
|
delay: 6
|
|
no_log: true
|
|
when:
|
|
# NOTE(yoctozepto): we don't want to wait for new nodes to fully sync
|
|
# with an existing cluster as this could take time
|
|
- not mariadb_cluster_exists or
|
|
(groups.mariadb_port_alive_True is defined and
|
|
inventory_hostname in groups.mariadb_port_alive_True)
|