在一个shell脚本中,我们目前调用/usr/sbin/pcs status cluster ,然后用grep -qE查找'Current DC:.*partition with quorum' 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' pcs status cluster 2>&1 | grep -qE 'Current DC:.*partition with quorum'
这需要约0.2秒: pcs status nodes both | grep -cE 'Online: [az]+ [az]+ [az]+' pcs status nodes both | grep -cE 'Online: [az]+ [az]+ [az]+'
(该集群有5个节点,因此正则expression式中有三个节点名称)。
编辑:
这花费0.02秒: corosync-quorumtool 2>&1 | grep -q -E '^Quorate:.*Yes$' corosync-quorumtool 2>&1 | grep -q -E '^Quorate:.*Yes$'
谢谢Matt Kereczman !
假设你正在使用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 。