<div dir="ltr">Hello.<div><br></div><div>I have configured corosync with 2 nodes and added a qdevice to help with the quorum.</div><div><br></div><div>On node1 I added firewall rules to block connections from node2 and the qdevice, trying to simulate a network issue.</div><div><br></div><div>The problem I'm having is that one node1 I can see it dropping the service (the IP), but on node2 it never gets the IP, it is like the qdevice is not voting.</div><div><br></div><div>This is my corosync.conf:</div><div><br></div><div>totem {<br>        version: 2<br>        cluster_name: cluster1<br>        token: 3000<br>        token_retransmits_before_loss_const: 10<br>        clear_node_high_bit: yes<br>        crypto_cipher: none<br>        crypto_hash: none<br>}<br>        interface {<br>                ringnumber: 0<br>                bindnetaddr: X.X.X.X<br>                mcastaddr: 239.255.43.2<br>                mcastport: 5405<br>                ttl: 1<br>        }<br>        nodelist{<br>                node {<br>                        ring0_addr: X.X.X.2<br>                        name: <a href="http://node1.domain.com">node1.domain.com</a><br>                        nodeid: 2<br>                }<br>                node {<br>                        ring0_addr: X.X.X.3<br>                        name: <a href="http://node2.domain.com">node2.domain.com</a><br>                        nodeid: 3<br>                }<br>        }<br><br>logging {<br>    to_logfile: yes<br>    logfile: /var/log/cluster/corosync.log<br>    to_syslog: yes<br>}<br><br>#}<br><br>quorum {<br>  provider: corosync_votequorum<br>  device {<br>    votes: 1<br>    model: net<br>    net {<br>      tls: off<br>      host: <a href="http://qdevice.domain.com">qdevice.domain.com</a><br>      algorithm: lms<br>    }<br>    heuristics {<br>      mode: on<br>      exec_ping: /usr/bin/ping -q -c 1 "<a href="http://qdevice.domain.com">qdevice.domain.com</a>"<br>    }<br>  }<br>}<br></div><div><br></div><div><br></div><div>I'm getting this on the qdevice host (before adding the firewall rules), so looks like the cluster is properly configured:</div><div><br></div><div>pcs qdevice status net --full<br>QNetd address:                       *:5403<br>TLS:                            Supported (client certificate required)<br>Connected clients:             2<br>Connected clusters:          1<br>Maximum send/receive size:   32768/32768 bytes<br>Cluster "cluster1":<br>    Algorithm:              LMS<br>    Tie-breaker: Node with lowest node ID<br>    Node ID 3:<br>        Client address:         ::ffff:X.X.X.3:59746<br>        HB interval:          8000ms<br>        Configured node list:       2, 3<br>        Ring ID:              2.95d<br>        Membership node list:        2, 3<br>        Heuristics:           Pass (membership: Pass, regular: Undefined)<br>        TLS active:            No<br>        Vote:                   ACK (ACK)<br>    Node ID 2:<br>        Client address:                ::ffff:X.X.X.2:33944<br>        HB interval:          8000ms<br>        Configured node list:       2, 3<br>        Ring ID:              2.95d<br>        Membership node list:        2, 3<br>        Heuristics:           Pass (membership: Pass, regular: Undefined)<br>        TLS active:            No<br>        Vote:                   ACK (ACK)<br></div><div><br></div><div>These are partial logs on node2 after activating the firewall rules on node1. These logs repeats all the time until I remove the firewall rules:</div><div><br></div><div>Mar 18 12:48:56 [7202] <a href="http://node2.domain.com">node2.domain.com</a> stonith-ng:     info: crm_cs_flush:    Sent 0 CPG messages  (1 remaining, last=16): Try again (6)<br>Mar 18 12:48:56 [7201] <a href="http://node2.domain.com">node2.domain.com</a>        cib:     info: crm_cs_flush:      Sent 0 CPG messages  (2 remaining, last=87): Try again (6)<br>Mar 18 12:48:56 [7202] <a href="http://node2.domain.com">node2.domain.com</a> stonith-ng:     info: crm_cs_flush:  Sent 0 CPG messages  (1 remaining, last=16): Try again (6)<br>Mar 18 12:48:56 [7185] <a href="http://node2.domain.com">node2.domain.com</a> pacemakerd:     info: crm_cs_flush:  Sent 0 CPG messages  (1 remaining, last=13): Try again (6)<br>[7177] <a href="http://node2.domain.com">node2.domain.com</a> corosyncinfo    [VOTEQ ] waiting for quorum device Qdevice poll (but maximum for 30000 ms)<br>[7177] <a href="http://node2.domain.com">node2.domain.com</a> corosyncnotice  [TOTEM ] A new membership (X.X.X.3:2469) was formed. Members<br>[7177] <a href="http://node2.domain.com">node2.domain.com</a> corosyncwarning [CPG   ] downlist left_list: 0 received<br>[7177] <a href="http://node2.domain.com">node2.domain.com</a> corosyncwarning [TOTEM ] Discarding JOIN message during flush, nodeid=3<br>Mar 18 12:48:56 [7201] <a href="http://node2.domain.com">node2.domain.com</a>        cib:     info: crm_cs_flush:      Sent 0 CPG messages  (2 remaining, last=87): Try again (6)<br>Mar 18 12:48:56 [7202] <a href="http://node2.domain.com">node2.domain.com</a> stonith-ng:     info: crm_cs_flush:  Sent 0 CPG messages  (1 remaining, last=16): Try again (6)<br>Mar 18 12:48:56 [7185] <a href="http://node2.domain.com">node2.domain.com</a> pacemakerd:     info: crm_cs_flush:  Sent 0 CPG messages  (1 remaining, last=13): Try again (6)<br>Mar 18 12:48:56 [7201] <a href="http://node2.domain.com">node2.domain.com</a>        cib:     info: crm_cs_flush:      Sent 0 CPG messages  (2 remaining, last=87): Try again (6)<br>Mar 18 12:48:56 [7185] <a href="http://node2.domain.com">node2.domain.com</a> pacemakerd:     info: crm_cs_flush:  Sent 0 CPG messages  (1 remaining, last=13): Try again (6)<br><br>Also on node2:</div><div><br>pcs quorum status<br>Error: Unable to get quorum status: Unable to get node address for nodeid 2: CS_ERR_NOT_EXIST <br><br>And these are the logs on the qdevice host:</div><div><br></div><div>Mar 18 12:48:50 debug   algo-lms: membership list from node 3 partition (3.99d)<br>Mar 18 12:48:50 debug   algo-util: all_ring_ids_match: seen nodeid 2 (client 0x55a99ce070d0) ring_id (2.995)<br>Mar 18 12:48:50 debug   algo-util: nodeid 2 in our partition has different ring_id (2.995) to us (3.99d)<br>Mar 18 12:48:50 debug   algo-lms: nodeid 3: ring ID (3.99d) not unique in this membership, waiting<br>Mar 18 12:48:50 debug   Algorithm result vote is Wait for reply<br>Mar 18 12:48:52 debug   algo-lms: Client 0x55a99cdfe590 (cluster cluster1, node_id 3) Timer callback<br>Mar 18 12:48:52 debug   algo-util: all_ring_ids_match: seen nodeid 2 (client 0x55a99ce070d0) ring_id (2.995)<br>Mar 18 12:48:52 debug   algo-util: nodeid 2 in our partition has different ring_id (2.995) to us (3.99d)<br>Mar 18 12:48:52 debug   algo-lms: nodeid 3: ring ID (3.99d) not unique in this membership, waiting<br>Mar 18 12:48:52 debug   Algorithm for client ::ffff:X.X.X.3:59762 decided to reschedule timer and not send vote with value Wait for reply<br>Mar 18 12:48:53 debug   Client closed connection<br>Mar 18 12:48:53 debug   Client ::ffff:X.X.X.2:33960 (init_received 1, cluster cluster1, node_id 2) disconnect<br>Mar 18 12:48:53 debug   algo-lms: Client 0x55a99ce070d0 (cluster cluster1, node_id 2) disconnect<br>Mar 18 12:48:53 info    algo-lms:   server going down 0<br>Mar 18 12:48:54 debug   algo-lms: Client 0x55a99cdfe590 (cluster cluster1, node_id 3) Timer callback<br>Mar 18 12:48:54 debug   algo-util: partition (3.99d) (0x55a99ce07780) has 1 nodes<br>Mar 18 12:48:54 debug   algo-lms: Only 1 partition. This is votequorum's problem, not ours<br>Mar 18 12:48:54 debug   Algorithm for client ::ffff:X.X.X.3:59762 decided to not reschedule timer and send vote with value ACK<br>Mar 18 12:48:54 debug   Sending vote info to client ::ffff:X.X.X.3:59762 (cluster cluster1, node_id 3) <br>Mar 18 12:48:54 debug     msg seq num = 1<br>Mar 18 12:48:54 debug     vote = ACK<br>Mar 18 12:48:54 debug   Client ::ffff:X.X.X.3:59762 (cluster cluster1, node_id 3) replied back to vote info message<br>Mar 18 12:48:54 debug     msg seq num = 1<br>Mar 18 12:48:54 debug   algo-lms: Client 0x55a99cdfe590 (cluster cluster1, node_id 3) replied back to vote info message<br>Mar 18 12:48:54 debug   Client ::ffff:X.X.X.3:59762 (cluster cluster1, node_id 3) sent membership node list.<br>Mar 18 12:48:54 debug     msg seq num = 8<br>Mar 18 12:48:54 debug     ring id = (3.9a1)<br>Mar 18 12:48:54 debug     heuristics = Pass <br>Mar 18 12:48:54 debug     node list:<br>Mar 18 12:48:54 debug       node_id = 3, data_center_id = 0, node_state = not set<br>Mar 18 12:48:54 debug    <br>Mar 18 12:48:54 debug   algo-lms: membership list from node 3 partition (3.9a1)<br>Mar 18 12:48:54 debug   algo-util: partition (3.99d) (0x55a99ce073f0) has 1 nodes<br>Mar 18 12:48:54 debug   algo-lms: Only 1 partition. This is votequorum's problem, not ours<br>Mar 18 12:48:54 debug   Algorithm result vote is ACK<br>Mar 18 12:48:58 debug   Client ::ffff:X.X.X.3:59762 (cluster cluster1, node_id 3) sent membership node list.<br>Mar 18 12:48:58 debug     msg seq num = 9<br>Mar 18 12:48:58 debug     ring id = (3.9a5)<br>Mar 18 12:48:58 debug     heuristics = Pass <br>Mar 18 12:48:58 debug     node list:<br>Mar 18 12:48:58 debug       node_id = 3, data_center_id = 0, node_state = not set<br><br><br>I'm running it on CentOS7 servers and tried to follow the RH7 official docs, but I found a few issues there, and a bug that they won't correct, since there is a workaround. In the end, looks like it is working fine, except for this voting issue.</div><div><br></div><div>After lots of time looking for answers on Google, I decided to send a message here, and hopefully you can help me to fix it (it is probably a silly mistake).</div><div><br></div><div>Any help will be appreciated.</div><div><br></div><div>Thank you.<br><br></div><div><br></div><div><div><div><br></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div style="font-size:13px"><div style="font-size:12.8px;direction:inherit"><div style="font-size:small;direction:inherit"><div style="direction:inherit"><div style="color:rgb(34,34,34);direction:inherit"><div style="direction:inherit"><b style="background-color:rgba(255,255,255,0)">Kind regards,</b></div><div><span style="background-color:rgba(255,255,255,0)">Marcelo Terres</span></div><div><b><br></b></div><div><div><span style="background-color:rgba(255,255,255,0)"><b>To contact us: </b><b><a href="mailto:support@nta.co.uk" style="color:rgb(17,85,204)" target="_blank">support@nta.co.uk</a></b> or call us on <b>Tel: </b>01708 39 39 39 or <b><a>100</a></b> from your<i> VoIP</i> handset</span><span style="background-color:rgba(255,255,255,0)"> </span></div><div><span style="background-color:rgba(255,255,255,0)"><br></span></div><div><span style="background-color:rgba(255,255,255,0)"><br></span></div><div><a href="https://nta.co.uk/mobex/" style="color:rgb(17,85,204)" target="_blank"><img src="https://nta.co.uk/nta_footer/footer_012021_1.jpg" width="219" height="152" style="margin:auto 0px auto auto"></a> <a href="https://nta.co.uk/handsets/" style="color:rgb(17,85,204)" target="_blank"><img src="https://nta.co.uk/nta_footer/footer_012021_2.jpg" width="221" height="151" style="margin:auto 0px auto auto"></a> <a href="https://nta.co.uk/" style="color:rgb(17,85,204)" target="_blank"><img src="https://nta.co.uk/nta_footer/footer_012021_3.jpg" width="219" height="152" style="margin:auto 0px auto auto"></a><br></div><div><br></div><div><span style="color:rgb(38,50,56);font-family:Roboto,sans-serif;font-size:13px">Contact us today to find out how you can have your own branded handset.</span></div><div><a href="https://nta.co.uk/legal/privacy_policy/" style="color:rgb(17,85,204)" target="_blank">Privacy Policy</a><span style="background-color:rgba(255,255,255,0);color:rgb(0,0,0)"> | </span><a href="https://nta.co.uk/legal/terms_and_conditions/" style="color:rgb(17,85,204)" target="_blank">Terms and Conditions</a></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>