В сценарии оболочки мы в настоящее время вызываем /usr/sbin/pcs status cluster
а потом grep -qE
для 'Current DC:.*partition with quorum'
чтобы узнать, в порядке ли кластер.
Я хотел бы знать, есть ли более быстрый способ, потому что pcs status cluster
заставляет его запрашивать у всех узлов их статус PCSD, что занимает время, около полутора секунд, и я хочу выполнить эту проверку перед выполнением определенных операций, которые должны выполняться довольно часто.
Бы pcs status nodes both
и подсчет количества онлайн-узлов одинаково хорош для определения того, работает ли кластер без проблем?
Это занимает ~ 2 секунды: pcs status cluster 2>&1 | grep -qE 'Current DC:.*partition with quorum'
Это занимает ~ 0,2 секунды: pcs status nodes both | grep -cE 'Online: [a-z]+ [a-z]+ [a-z]+'
(В кластере 5 узлов, отсюда и три имени узла в регулярном выражении).
РЕДАКТИРОВАТЬ:
Это занимает ~ 0,02 секунды: corosync-quorumtool 2>&1 | grep -q -E '^Quorate:.*Yes$'
Спасибо Мэтт Керечман!
Предполагая, что вы используете Corosync, вы можете использовать corosync-quorumtool
:
# corosync-quorumtool -s
Quorum information
------------------
Date: Wed Sep 27 07:16:18 2017
Quorum provider: corosync_votequorum
Nodes: 2
Node ID: 1
Ring ID: 76
Quorate: Yes
Votequorum information
----------------------
Expected votes: 2
Highest expected: 2
Total votes: 2
Quorum: 1
Flags: 2Node Quorate WaitForAll
Membership information
----------------------
Nodeid Votes Name
1 1 172.16.7.100 (local)
2 1 172.16.7.101
РЕДАКТИРОВАТЬ: А затем просто проверьте, что Quorate
отчеты Yes
.