Проблема:

Перечень проблем, которые могут указывать на проблему с кластером Galera:

1) В EMS во вкладке "Информация" → "Состояние систем резервирования" → "MySQL" имеется одна из следующих ситуаций:

  • Одна из нод недоступна
Репликация нарушена : 
mysqladmin: connect to server at '192.168.1.2' failed
error: 'Can't connect to server on '192.168.1.2' (115)'
Check that mariadbd is running and that the socket: '/run/mysqld/mysqld.sock' exists!
[Error nodes state] Количество нод кластера '192.168.1.1' Galera Cluster уменьшилось до '1'

[192.168.1.1]
wsrep_cluster_size = 1
wsrep_cluster_status = Primary
wsrep_local_state_comment = Synced
  • Разрушился кластер (SplitBrain) и каждая нода считает себя мастером
Репликация нарушена : 
[Error nodes state] Количество нод кластера '192.168.1.1' Galera Cluster уменьшилось до '1'
[Error nodes state] Количество нод кластера '192.168.1.2' Galera Cluster уменьшилось до '1'

[192.168.1.1]
wsrep_cluster_size = 1
wsrep_cluster_status = Primary
wsrep_local_state_comment = Synced

[192.168.1.2]
wsrep_cluster_size = 1
wsrep_cluster_status = Primary
wsrep_local_state_comment = Synced
  • База данных недоступна
Репликация нарушена : 
mysqladmin: connect to server at '192.168.1.1' failed
error: 'Can't connect to server on '192.168.1.1' (115)'
Check that mariadbd is running and that the socket: '/run/mysqld/mysqld.sock' exists!
mysqladmin: connect to server at '192.168.1.2' failed
error: 'Can't connect to server on '192.168.1.2' (115)'
Check that mariadbd is running and that the socket: '/run/mysqld/mysqld.sock' exists!

2) В логах Ansible имеются ошибки, вида:

MSG:

The container "eltex-mariadb" has been paused (409 Client Error for http+docker://localhost/v1.51/containers/eltex-mariadb/exec: Conflict ("Container 4b53422d36d4e8cf83bd6f76948e5693cc8dfe27e6e878e56c37fd0c31d8da83 is restarting, wait until the container is running"))

3) При выводе команды docker ps -a контейнеры eltex-mariadb находятся в состоянии Restarting или не работают дольше 1 минуты без рестарта.

Решение:

Обратите внимание, что некоторые способы могут не работать на старых версиях плейбуков. Проверьте актуальность версии и, при необходимсти, обновите плейбуки до актуальной версии

v1.37_Обновление SoftWLC Docker с использованием Ansible

Для решения данных проблем можно воспользоваться одной из следующих команд, в зависимости от ситуации:

  • Остановка только баз данных, не затрагивая сервисы (мастер на первую ноду; данные базы - с последней живой ноды или той, которая отказала/была остановлена последней):
cd /opt/eltex-softwlc/				    # НА ВСЕХ НОДАХ С БАЗОЙ ДАННЫХ
sudo docker compose down eltex-mariadb	# НА ВСЕХ НОДАХ С БАЗОЙ ДАННЫХ
cd /home/user/ansible/
sudo ./eltex-softwlc-helper-ansible-latest.sh --run

Является рекомендуемым способом в связи с минимализацией downtime услуг


  • Остановка всех сервисов на обоих нодах и последовательное восстановление Galera и сервисов (мастер на первую ноду; данные базы - с последней живой ноды или той, которая отказала/была остановлена последней):
sudo ./eltex-softwlc-helper-ansible-latest.sh --restore-galera

Является рекомендуемым способом, при условии возможности downtime сервисов больше 10 минут на их рестарт и поднятие


  • Восстановление репликации путём обнуления grastate.dat, остановкой только баз данных и последующее их восстановление (мастер на первую ноду; данные базы - с первой ноды):
cd /opt/eltex-softwlc/					    					  # НА ВСЕХ НОДАХ С БАЗОЙ ДАННЫХ
sudo docker compose down eltex-mariadb						    # НА ВСЕХ НОДАХ С БАЗОЙ ДАННЫХ
sudo rm /opt/eltex-softwlc/volumes/mysql/datadir/grastate.dat	# НА ВСЕХ НОДАХ С БАЗОЙ ДАННЫХ
cd /home/user/ansible/
sudo ./eltex-softwlc-helper-ansible-latest.sh --run

Обратите внимание, что при отказе базы данных на первой ноде раньше, чем были остановлены/потеряны другие, при восстановлении данным способом данные могут быть утеряны


  • Нет меток