From 63d72ea7e8b1418ccdaddd45b788ab98fb541c21 Mon Sep 17 00:00:00 2001 From: Michal Arbet Date: Mon, 23 Aug 2021 13:31:26 +0200 Subject: [PATCH] Use Docker healthchecks for mariadb-server service This change enables the use of Docker healthchecks for mariadb-server service. Depends-On: https://review.opendev.org/c/openstack/kolla/+/805613 Change-Id: I893687a0501ea0f281b879df3141a354bff9eca6 --- ansible/roles/mariadb/defaults/main.yml | 19 +++++++++++++++++++ .../roles/mariadb/tasks/check-containers.yml | 2 ++ .../roles/mariadb/tasks/recover_cluster.yml | 2 ++ .../roles/mariadb/tasks/restart_services.yml | 2 ++ ...s-for-mariadb-server-cd9d1a4ddaf432ee.yaml | 6 ++++++ 5 files changed, 31 insertions(+) create mode 100644 releasenotes/notes/implement-docker-healthchecks-for-mariadb-server-cd9d1a4ddaf432ee.yaml diff --git a/ansible/roles/mariadb/defaults/main.yml b/ansible/roles/mariadb/defaults/main.yml index 5ab183c395..5e8c7d9a1b 100644 --- a/ansible/roles/mariadb/defaults/main.yml +++ b/ansible/roles/mariadb/defaults/main.yml @@ -7,6 +7,12 @@ mariadb_services: image: "{{ mariadb_image_full }}" volumes: "{{ mariadb_default_volumes + mariadb_extra_volumes }}" dimensions: "{{ mariadb_dimensions }}" + healthcheck: "{{ mariadb_healthcheck }}" + environment: + MYSQL_USERNAME: "{{ mariadb_monitor_user }}" + MYSQL_PASSWORD: "{% if enable_proxysql | bool %}{{ mariadb_monitor_password }}{% endif %}" + MYSQL_HOST: "{{ api_interface_address }}" + AVAILABLE_WHEN_DONOR: "1" haproxy: mariadb: enabled: "{{ enable_mariadb | bool and not enable_external_mariadb_load_balancer | bool }}" @@ -87,6 +93,19 @@ mariadb_clustercheck_default_volumes: mariadb_extra_volumes: "{{ default_extra_volumes }}" mariadb_clustercheck_extra_volumes: "{{ default_extra_volumes }}" +mariadb_enable_healthchecks: "{{ enable_container_healthchecks }}" +mariadb_healthcheck_interval: "{{ default_container_healthcheck_interval }}" +mariadb_healthcheck_retries: "{{ default_container_healthcheck_retries }}" +mariadb_healthcheck_start_period: "{{ default_container_healthcheck_start_period }}" +mariadb_healthcheck_test: ["CMD-SHELL", "/usr/bin/clustercheck"] +mariadb_healthcheck_timeout: "{{ default_container_healthcheck_timeout }}" +mariadb_healthcheck: + interval: "{{ mariadb_healthcheck_interval }}" + retries: "{{ mariadb_healthcheck_retries }}" + start_period: "{{ mariadb_healthcheck_start_period }}" + test: "{% if mariadb_enable_healthchecks | bool %}{{ mariadb_healthcheck_test }}{% else %}NONE{% endif %}" + timeout: "{{ mariadb_healthcheck_timeout }}" + ######################################## # Vars used within recover_cluster.yml ######################################## diff --git a/ansible/roles/mariadb/tasks/check-containers.yml b/ansible/roles/mariadb/tasks/check-containers.yml index ddaeee60a2..e7a65d60eb 100644 --- a/ansible/roles/mariadb/tasks/check-containers.yml +++ b/ansible/roles/mariadb/tasks/check-containers.yml @@ -8,6 +8,8 @@ image: "{{ item.value.image }}" volumes: "{{ item.value.volumes }}" dimensions: "{{ item.value.dimensions }}" + environment: "{{ item.value.environment | default(omit) }}" + healthcheck: "{{ item.value.healthcheck | default(omit) }}" when: - inventory_hostname in groups[item.value.group] - item.value.enabled | bool diff --git a/ansible/roles/mariadb/tasks/recover_cluster.yml b/ansible/roles/mariadb/tasks/recover_cluster.yml index 21aef27ac7..e02fd726ff 100644 --- a/ansible/roles/mariadb/tasks/recover_cluster.yml +++ b/ansible/roles/mariadb/tasks/recover_cluster.yml @@ -175,6 +175,7 @@ volumes: "{{ item.value.volumes }}" dimensions: "{{ item.value.dimensions }}" environment: "{{ item.value.environment | default({}) }}" + healthcheck: "{{ item.value.healthcheck | default(omit) }}" with_dict: "{{ mariadb_services }}" when: - bootstrap_host is defined @@ -205,6 +206,7 @@ volumes: "{{ item.value.volumes }}" dimensions: "{{ item.value.dimensions }}" environment: "{{ item.value.environment | default({}) }}" + healthcheck: "{{ item.value.healthcheck | default(omit) }}" with_dict: "{{ mariadb_services }}" when: - bootstrap_host is defined diff --git a/ansible/roles/mariadb/tasks/restart_services.yml b/ansible/roles/mariadb/tasks/restart_services.yml index dff5cafb10..f4970fd1de 100644 --- a/ansible/roles/mariadb/tasks/restart_services.yml +++ b/ansible/roles/mariadb/tasks/restart_services.yml @@ -11,6 +11,8 @@ image: "{{ service.image }}" volumes: "{{ service.volumes }}" dimensions: "{{ service.dimensions }}" + environment: "{{ service.environment | default(omit) }}" + healthcheck: "{{ service.healthcheck | default(omit) }}" # NOTE(yoctozepto): We have to loop this to avoid breaking on connection resets - name: Wait for MariaDB service port liveness diff --git a/releasenotes/notes/implement-docker-healthchecks-for-mariadb-server-cd9d1a4ddaf432ee.yaml b/releasenotes/notes/implement-docker-healthchecks-for-mariadb-server-cd9d1a4ddaf432ee.yaml new file mode 100644 index 0000000000..81572e17c8 --- /dev/null +++ b/releasenotes/notes/implement-docker-healthchecks-for-mariadb-server-cd9d1a4ddaf432ee.yaml @@ -0,0 +1,6 @@ +--- +features: + - | + Implements container healthchecks for mariadb-server service. + See `blueprint + `__