<div dir="ltr"><div>Hello experts.</div><div><br></div><div>I previously played with a dummy resource and it worked as expected. Now I'm switching to a Lustre OST resource and cannot make it. Neither can I understand.<br></div><div><br></div><div><br></div><div>### Initial setup:</div><div># pcs resource defaults update resource-stickness=110<br># for i in {1..4}; do pcs cluster node add-remote lustre$i reconnect_interval=60; done <br># for i in {1..4}; do pcs constraint location lustre$i prefers lustre-mgs lustre-mds1 lustre-mds2; done<br># pcs resource create OST3 ocf:lustre:Lustre target=/dev/disk/by-id/wwn-0x6000c291b7f7147f826bb95153e2eaca mountpoint=/lustre/oss3<br># pcs resource create OST4 ocf:lustre:Lustre target=/dev/disk/by-id/wwn-0x6000c292c41eaae60bccdd3a752913b3 mountpoint=/lustre/oss4<br>(I also tried ocf:heartbeat:Filesystem device=... directory=... fstype=lustre force_unmount=safe --> same behavior)<br><br># pcs constraint location OST3 prefers lustre3=100<br># pcs constraint location OST3 prefers lustre4=100<br># pcs constraint location OST4 prefers lustre3=100<br># pcs constraint location OST4 prefers lustre4=100<br># for i in lustre-mgs lustre-mds1 lustre-mds2 lustre{1..2}; do pcs constraint location OST3 avoids $i; done<br># for i in lustre-mgs lustre-mds1 lustre-mds2 lustre{1..2}; do pcs constraint location OST4 avoids $i; done</div><div><br></div><div>### Checking all is good</div><div># crm_simulate --simulate --live-check --show-scores<br>pcmk__primitive_assign: OST4 allocation score on lustre3: 100<br>pcmk__primitive_assign: OST4 allocation score on lustre4: 210<br># pcs status<br>  * OST3        (ocf::lustre:Lustre):    Started lustre3<br>  * OST4        (ocf::lustre:Lustre):    Started lustre4</div><div><br></div><div>### VM with lustre4 (OST4) is OFF</div><div><br></div><div># crm_simulate --simulate --live-check --show-scores<br>pcmk__primitive_assign: OST4 allocation score on lustre3: 100<br>pcmk__primitive_assign: OST4 allocation score on lustre4: 100<br>Start      OST4    ( lustre3 )<br>Resource action: OST4            start on lustre3<br>Resource action: OST4            monitor=20000 on lustre3<br># pcs status<br>  * OST3        (ocf::lustre:Lustre):    Started lustre3<br>  * OST4        (ocf::lustre:Lustre):    Stopped</div><div><br></div><div>1) I see crm_simulate guesed that it has to restart failed OST4 on lustre3. After making such decision I suspect it evaluates 100:100 scores of both lustre3 and lustre4, but lustre3 is already running a service. So it decides to run OST4 again on lustre4, which is failed. Thus it cannot restart on surviving nodes. Right?<br>2) Ok, let's try not to give specific score - nothing changed, see below:<br>### did remove old constraints; clear all resources; cleanup all resources; cluster stop; cluster start<br><br># pcs constraint location OST3 prefers lustre3 lustre4<br># pcs constraint location OST4 prefers lustre3 lustre4<br># for i in lustre-mgs lustre-mds1 lustre-mds2 lustre{1..2}; do pcs constraint location OST3 avoids $i; done<br># for i in lustre-mgs lustre-mds1 lustre-mds2 lustre{1..2}; do pcs constraint location OST4 avoids $i; done<br># crm_simulate --simulate --live-check --show-scores<br>pcmk__primitive_assign: OST4 allocation score on lustre3: INFINITY<br>pcmk__primitive_assign: OST4 allocation score on lustre4: INFINITY<br># pcs status<br>  * OST3        (ocf::lustre:Lustre):    Started lustre3<br>  * OST4        (ocf::lustre:Lustre):    Started lustre4<br><br>### VM with lustre4 (OST4) is OFF<br><br># crm_simulate --simulate --live-check --show-scores<br>pcmk__primitive_assign: OST4 allocation score on lustre3: INFINITY<br>pcmk__primitive_assign: OST4 allocation score on lustre4: INFINITY<br>Start      OST4    ( lustre3 )<br>Resource action: OST4            start on lustre3<br>Resource action: OST4            monitor=20000 on lustre3<br># pcs status<br>  * OST3        (ocf::lustre:Lustre):    Started lustre3<br>  * OST4        (ocf::lustre:Lustre):    Stopped<br><br>3) Ok lets try to set different scores with preference to nodes and affect it with pingd:<br>### did remove old constraints; clear all resources; cleanup all resources; cluster stop; cluster start<br><br># pcs constraint location OST3 prefers lustre3=100<br># pcs constraint location OST3 prefers lustre4=90<br># pcs constraint location OST4 prefers lustre3=90<br># pcs constraint location OST4 prefers lustre4=100<br># for i in lustre-mgs lustre-mds1 lustre-mds2 lustre{1..2}; do pcs constraint location OST3 avoids $i; done<br># for i in lustre-mgs lustre-mds1 lustre-mds2 lustre{1..2}; do pcs constraint location OST4 avoids $i; done<br># pcs resource create ping ocf:pacemaker:ping dampen=5s host_list=192.168.34.250 op monitor interval=3s timeout=7s meta target-role="started" globally-unique="false" clone<br># for i in lustre-mgs lustre-mds{1..2} lustre{1..4}; do pcs constraint location ping-clone prefers $i; done<br># pcs constraint location OST3 rule score=0 pingd lt 1 or not_defined pingd<br># pcs constraint location OST4 rule score=0 pingd lt 1 or not_defined pingd<br># pcs constraint location OST3 rule score=125 defined pingd<br># pcs constraint location OST4 rule score=125 defined pingd<br><br>###  same home base:<br># crm_simulate --simulate --live-check --show-scores<br>pcmk__primitive_assign: OST4 allocation score on lustre3: 90<br>pcmk__primitive_assign: OST4 allocation score on lustre4: 210<br># pcs status<br>  * OST3        (ocf::lustre:Lustre):    Started lustre3<br>  * OST4        (ocf::lustre:Lustre):    Started lustre4<br><br>### VM with lustre4 (OST4) is OFF. <br><br># crm_simulate --simulate --live-check --show-scores<br>pcmk__primitive_assign: OST4 allocation score on lustre3: 90<br>pcmk__primitive_assign: OST4 allocation score on lustre4: 100<br>Start      OST4    ( lustre3 )<br>Resource action: OST4            start on lustre3<br>Resource action: OST4            monitor=20000 on lustre3<br># pcs status<br>  * OST3        (ocf::lustre:Lustre):    Started lustre3<br>  * OST4        (ocf::lustre:Lustre):    Stopped<br><br>Again lustre3 seems unable to overrule due to lower score and pingd DOESN'T help at all!<br><br></div><div><br></div><div>4) Can I make a reliable HA failover without pingd to keep things as simple as possible?</div><div>5) Pings might help to affect cluster decisions in case GW is lost, but its not working as all the guides say. Why?<br></div><div><br></div><div><br></div><div>Thanks in advance,</div><div>Artem<br></div></div>