diff options
| author | SamYaple <sam@yaple.net> | 2016-03-19 13:58:19 +0000 |
|---|---|---|
| committer | Sam Yaple <sam@yaple.net> | 2016-03-21 12:23:00 +0000 |
| commit | afce10dea418dcf691e8f4539f5fb7dc766235a3 (patch) | |
| tree | 992267417b513d2940d9b4b9a404dcf4c1c15410 | |
| parent | 05b6995f6340099bc531561f61fb85a1795f5f0d (diff) | |
| download | kolla-afce10dea418dcf691e8f4539f5fb7dc766235a3.tar.gz kolla-afce10dea418dcf691e8f4539f5fb7dc766235a3.zip | |
Fix mysql bootstrap
The lightsout recover patch broke multinode mysql. Also the lightsout
recovery didnt probably pass the --wsrep-new-cluster flag. This
updates the mariadb bootstrap to work with multinode again.
Closes-Bug: #1559480
Related-Id: I903c3bcd069af39814bcabcef37684b1f043391f
Change-Id: I1ec91a8b2144930ea8f04cc1c201b53712352e4e
| -rw-r--r-- | ansible/roles/mariadb/tasks/bootstrap_cluster.yml | 32 | ||||
| -rw-r--r-- | ansible/roles/mariadb/tasks/recover_cluster.yml | 2 | ||||
| -rw-r--r-- | ansible/roles/mariadb/templates/galera.cnf.j2 | 2 | ||||
| -rw-r--r-- | docker/mariadb/extend_start.sh | 8 |
4 files changed, 27 insertions, 17 deletions
diff --git a/ansible/roles/mariadb/tasks/bootstrap_cluster.yml b/ansible/roles/mariadb/tasks/bootstrap_cluster.yml index 6c3c8537f..1c9aab453 100644 --- a/ansible/roles/mariadb/tasks/bootstrap_cluster.yml +++ b/ansible/roles/mariadb/tasks/bootstrap_cluster.yml @@ -1,31 +1,37 @@ --- -- name: Starting MariaDB bootstrap container +- name: Running MariaDB bootstrap container kolla_docker: action: "start_container" common_options: "{{ docker_common_options }}" + detach: False environment: KOLLA_BOOTSTRAP: KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}" DB_ROOT_PASSWORD: "{{ database_password }}" DB_MAX_TIMEOUT: "{{ database_max_timeout }}" - ARGS: "--wsrep-new-cluster" image: "{{ mariadb_image_full }}" labels: BOOTSTRAP: - name: "mariadb" + name: "bootstrap_mariadb" restart_policy: "never" volumes: - "{{ node_config_directory }}/mariadb/:{{ container_config_directory }}/:ro" - "kolla_logs:/var/log/kolla/" - "mariadb:/var/lib/mysql" -- name: Waiting for MariaDB service to be ready - command: "docker exec mariadb ls /var/lib/mysql/{{ item }}" - register: bootstrap_result - until: bootstrap_result | success - changed_when: False - retries: 6 - delay: 10 - with_items: - - cluster.exists - - mariadb.pid +- name: Starting first MariaDB container + kolla_docker: + action: "start_container" + common_options: "{{ docker_common_options }}" + environment: + KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}" + BOOTSTRAP_ARGS: "--wsrep-new-cluster" + image: "{{ mariadb_image_full }}" + labels: + BOOTSTRAP: + name: "mariadb" + restart_policy: "never" + volumes: + - "{{ node_config_directory }}/mariadb/:{{ container_config_directory }}/:ro" + - "kolla_logs:/var/log/kolla/" + - "mariadb:/var/lib/mysql" diff --git a/ansible/roles/mariadb/tasks/recover_cluster.yml b/ansible/roles/mariadb/tasks/recover_cluster.yml index 2a19c11ac..6c2fccb72 100644 --- a/ansible/roles/mariadb/tasks/recover_cluster.yml +++ b/ansible/roles/mariadb/tasks/recover_cluster.yml @@ -20,7 +20,7 @@ common_options: "{{ docker_common_options }}" environment: KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}" - ARGS: "--wsrep-new-cluster" + BOOTSTRAP_ARGS: "--wsrep-new-cluster" image: "{{ mariadb_image_full }}" labels: BOOTSTRAP: diff --git a/ansible/roles/mariadb/templates/galera.cnf.j2 b/ansible/roles/mariadb/templates/galera.cnf.j2 index 095652d84..a4210fa9c 100644 --- a/ansible/roles/mariadb/templates/galera.cnf.j2 +++ b/ansible/roles/mariadb/templates/galera.cnf.j2 @@ -13,7 +13,7 @@ datadir=/var/lib/mysql/ wsrep_cluster_address=gcomm://{% if (groups['mariadb'] | length) > 1 %}{% for host in groups['mariadb'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ mariadb_wsrep_port }}{% if not loop.last %},{% endif %}{% endfor %}{% endif %} -wsrep_provider_options="gmcast.listen_addr=tcp://{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}:{{ mariadb_wsrep_port }};ist.recv_addr={{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}:{{ mariadb_ist_port }}" +wsrep_provider_options=gmcast.listen_addr=tcp://{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}:{{ mariadb_wsrep_port }};ist.recv_addr={{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}:{{ mariadb_ist_port }} wsrep_node_address={{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}:{{ mariadb_wsrep_port }} wsrep_sst_receive_address={{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}:{{ mariadb_sst_port }} diff --git a/docker/mariadb/extend_start.sh b/docker/mariadb/extend_start.sh index 3d826c4e8..e5d9632b9 100644 --- a/docker/mariadb/extend_start.sh +++ b/docker/mariadb/extend_start.sh @@ -32,8 +32,12 @@ if [[ $(stat -c %a /var/log/kolla/mariadb) != "755" ]]; then fi # This catches all cases of the BOOTSTRAP variable being set, including empty -if [[ "${!KOLLA_BOOTSTRAP[@]}" ]] && [[ ! -e /var/lib/mysql/cluster.exists ]]; then +if [[ "${!KOLLA_BOOTSTRAP[@]}" ]]; then mysql_install_db bootstrap_db - touch /var/lib/mysql/cluster.exists + exit 0 +fi + +if [[ "${!BOOTSTRAP_ARGS[@]}" ]]; then + ARGS="${BOOTSTRAP_ARGS}" fi |
