From 3d07a246d5d9300d2ee3e8befbebba454dc4bcf8 Mon Sep 17 00:00:00 2001 From: Jonathan Rosser Date: Wed, 10 Feb 2021 18:05:41 +0000 Subject: [PATCH] Install xinetd clustercheck after mariadb is installed and setup The configuration of mariadb is done mostly in handlers and previously the code would install the xinetd clustercheck script before calling flush_handlers to bootstrap and initialise the database. This leads to a situation where the clustercheck may be attempting to interact with the database during bootstrapping and before the monitoring user has been created. This change moves the setup tasks for the clustercheck service until after the database has been bootstrapped and the users created. This means that any healthchecks from the loadbalancer will not be seen by the database until after the setup is completed during the initial deployment. Change-Id: Ibd55306a5c17bc0a4333e43725f1637420a2c9d9 --- tasks/galera_server_main.yml | 6 +++++ tasks/galera_server_post_install.yml | 40 ---------------------------- tasks/galera_server_xinetd.yml | 36 +++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 40 deletions(-) create mode 100644 tasks/galera_server_xinetd.yml diff --git a/tasks/galera_server_main.yml b/tasks/galera_server_main.yml index e0b07642..38943b0c 100644 --- a/tasks/galera_server_main.yml +++ b/tasks/galera_server_main.yml @@ -92,6 +92,12 @@ tags: - galera_server-config +- include_tasks: tasks/galera_server_xinetd.yml + tags: + - galera_server-config + when: + - galera_monitoring_check_enabled | bool + - include_tasks: galera_server_backups.yml when: - galera_mariadb_backups_enabled | bool diff --git a/tasks/galera_server_post_install.yml b/tasks/galera_server_post_install.yml index 2492591e..175f3652 100644 --- a/tasks/galera_server_post_install.yml +++ b/tasks/galera_server_post_install.yml @@ -166,43 +166,3 @@ src: "galera_new_cluster.j2" dest: "/usr/local/bin/galera_new_cluster" mode: "0750" - -# TODO: (nicolasbock) This task can be removed in T but is necessary -# for S and earlier because deployments prior to this change will not -# have the xinetd service enabled because the handler task runs only -# for new deployments. -# NOTE(cloudnull): If `galera_monitoring_check_enabled` is set false -# the xinetd service will be disabled and stopped. -# using the handler. -- name: Enable xinetd service - service: - name: xinetd - enabled: "{{ galera_monitoring_check_enabled | bool }}" - notify: - - Restart xinetd - -- name: Cluster check block - block: - - name: Create clustercheck script - template: - src: "clustercheck.j2" - dest: "/usr/local/bin/clustercheck" - mode: "0755" - - - name: Create mysqlchk config - template: - src: "mysqlchk.j2" - dest: "/etc/xinetd.d/mysqlchk" - mode: "0644" - notify: - - Restart xinetd - - - name: Add galera service check to services - lineinfile: - dest: /etc/services - state: present - regexp: '^mysqlchk' - line: 'mysqlchk 9200/tcp # MySQL check' - backup: yes - when: - - galera_monitoring_check_enabled | bool diff --git a/tasks/galera_server_xinetd.yml b/tasks/galera_server_xinetd.yml new file mode 100644 index 00000000..c9d7fed1 --- /dev/null +++ b/tasks/galera_server_xinetd.yml @@ -0,0 +1,36 @@ +--- +# Copyright 2021, BBC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +- name: Create clustercheck script + template: + src: "clustercheck.j2" + dest: "/usr/local/bin/clustercheck" + mode: "0755" + +- name: Create mysqlchk config + template: + src: "mysqlchk.j2" + dest: "/etc/xinetd.d/mysqlchk" + mode: "0644" + notify: + - Restart xinetd + +- name: Add galera service check to services + lineinfile: + dest: /etc/services + state: present + regexp: '^mysqlchk' + line: 'mysqlchk 9200/tcp # MySQL check' + backup: yes