티스토리 뷰

문제상황

정확한 원인은 분석해봐야 하겠지만 mysql recovery가 이루어지면서 아래와 같이 MySQL is not running이 발생되는 경우가 있다. 해당 상황은 controller 3대가 pacemaker로 clustering 되어 있는 상황으로 galera가 사용되어 모든 node가 master로 동작중이었다. 

galera(galera)[30956]: INFO: MySQL is not running

위와 같은 에러 메세지가 /var/log/message에 출력되었고 결론은 해당 controller는 모든 resource가 stop되어 동작하지 않았다.


문제상황이 발생될 경우 아래와 같은 pacemaker 현황

 Master/Slave Set: galera-master [galera]

     galera     (ocf::heartbeat:galera):        FAILED Master overcloud-controller-0 (blocked)

     Masters: [ overcloud-controller-1 overcloud-controller-2 ]


실제 ps -ef 로 process check를 해보면 recovery와 관련된 문구가 포함된 process list를 확인할 수 있다.

[root@overcloud-controller-0 heat-admin]# ps -ef | grep [r]ecover

mysql    11194 10324  2 01:21 ?        00:06:38 /usr/libexec/mysqld --defaults-file=/etc/my.cnf --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --wsrep-provider=/usr/lib64/galera/libgalera_smm.so --wsrep-cluster-address=gcomm://overcloud-controller-0,overcloud-controller-1,overcloud-controller-2 --log-error=/var/log/mysqld.log --open-files-limit=16384 --pid-file=/var/run/mysql/mysqld.pid --socket=/var/lib/mysql/mysql.sock --port=3306 --wsrep_recover --log_error=/var/lib/mysql/wsrep_recovery.jS2uvm --pid-file=/var/lib/mysql/overcloud-controller-0.localdomain-recover.pid

(참고로 위 recover 작업은 약 7시간이 소요됬다... )


정상상황에서는 pcs status로 확인해보면 master로 모든 controller가 등록되어 있다.

 Master/Slave Set: galera-master [galera]

     Masters: [ overcloud-controller-0 overcloud-controller-1 overcloud-controller-2 ]


실제 정상동작하는 process는 아래와 같다.

[root@overcloud-controller-0 heat-admin]# ps -ef | grep mysql

root     11844 11093  0 05:24 pts/0    00:00:00 grep --color=auto mysql

root     17757     1  0 03:06 ?        00:00:00 /bin/sh /usr/bin/mysqld_safe --defaults-file=/etc/my.cnf --pid-file=/var/run/mysql/mysqld.pid --socket=/var/lib/mysql/mysql.sock --datadir=/var/lib/mysql --log-error=/var/log/mysqld.log --user=mysql --open-files-limit=16384 --wsrep-cluster-address=gcomm://overcloud-controller-0,overcloud-controller-1,overcloud-controller-2

mysql    19348 17757  0 03:28 ?        00:00:31 /usr/libexec/mysqld --defaults-file=/etc/my.cnf --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --wsrep-provider=/usr/lib64/galera/libgalera_smm.so --wsrep-cluster-address=gcomm://overcloud-controller-0,overcloud-controller-1,overcloud-controller-2 --log-error=/var/log/mysqld.log --open-files-limit=16384 --pid-file=/var/run/mysql/mysqld.pid --socket=/var/lib/mysql/mysql.sock --port=3306 --wsrep_start_position=0b92674b-44f9-11e7-84fd-de7616332c0f:7190542


사실 해당 문제는 

pacemaker를 통해 cluster 전체를 down 했다가 up하는 과정중에 발생되었고 특정 하나의 controller가 galera master로 동작하지 않았다. openstack 버전은 다르지만 아래의 이슈와 동일한 현상이었다.

- https://bugzilla.redhat.com/show_bug.cgi?id=1284526


실제로 위 과정중에 mysql_safe command를 이용해 recovery를 수행했고 이로 인한 delay가 있었는지도 모른다.

명확하지는 않지만 현상은 동일하고 mysql is not running이 계속 되고 결론은 timeout이 되는 현상이라면 

위 이슈에서 제안된 galera resource의 cleanup과 만약 이로도 해결이 안된다면 mysql_safe를 통한 recovery를 수행하는 것을 추천한다.


# 기존에 ps -ef 로 recover 여부를 확인해보고 만약 없을 경우 진행한다.

mysql_safe --wsrep-recover


# 아래 실행은 redhat bugzilla 에서 권고된 command로 정확히 어떤 뜻인지 확인한후 사용해야할 것 같아 우선 주석으로 남겨놓는다.

# mysql_safe --user=mysql --datadir=/var/lib/mysql --tc-heuristic-recover commit --wsrep-recover


실제 cleanup 과정

#아래 과정은 상당시간 소요가 된다. 필자의 경우 약 2시간정도 소요되었음

[overcloud-controller-0 ~]# mysqld_safe --user=mysql --datadir=/var/lib/mysql --tc-heuristic-recover commit --wsrep-recover


# cleanup 을 하면 자동으로 resource는 fail count를 지우고 새로 시작을 한다.

[overcloud-controller-0 ~]# pcs resource cleanup galera


# 위 cleanup 과정에 대한 log는 /var/log/cluster/corosync.log 에서 확인이 가능하다.

# 다음과 같은 에러가 발생될수도 있다. "generic_get_metadata: Failed to receive meta-data for ocf:heartbeat:galera"

# 위 에러는 quorum이 맞지 않아 발생되는 케이스로 cluster가 2개 이상이 되도록 해야한다.


# 만약 위상황으로도 안되면 pcs resouce disable/enable 을 수행한다.

[overcloud-controller-0 ~]# pcs resource disable galera

[overcloud-controller-0 ~]# pcs resource enable galera


참고사이트

https://bugzilla.redhat.com/show_bug.cgi?id=1288514

'' 카테고리의 다른 글

openstack client  (0) 2017.07.03
spice console  (0) 2017.06.19
error message about mysql is not running with galera  (0) 2017.06.15
no valid host error  (0) 2017.06.13
can not delete loadbalancer by pending_create state  (0) 2017.04.25
autoscaling with heat  (3) 2017.01.23
댓글
댓글쓰기 폼