<html><head><style type='text/css'>p { margin: 0; }</style></head><body><div style='font-family: Arial; font-size: 10pt; color: #000000'>To add to what Pascal said:<br><br>To find out where a specific resource is running you can also <span name="x"></span>run something like:<br>crm resource status name_of_resource<br><br>Which will yield something like this for a primitive (Condor is a node name in this case):<br>resource p_ip_dns is running on: Condor<br>Or for a DRBD master/slave resource:<br>resource ms_drbd_samba is running on: Condor Master<br>resource ms_drbd_samba is running on: Vulture<br><br>There is also a crm shell in addition to the command line.&nbsp; The shell supports tab command completion and has a very robust help system for every command which is very helpful.&nbsp; To access it just type crm without any arguments.<br>Then you can type help to get general help<br>help &lt;command&gt; to get command specific help<br>&lt;tab&gt; &lt;tab&gt; will list commands available<br>quit or exit to leave the shell<br>you can descend into each level by typing that command<br>Once in a level up will bring you back and help and &lt;tab&gt; &lt;tab&gt; will show the commands available at the current level<br><br>As an example to get to the resource section and get help on migrate you would type "crm" which would put you in the shell, then "resource" would descend into the resource section of the shell, then "help migrate" would show the following information about migrating resources:<br><br>crm(live)resource# help migrate<br><br>Migrate a resource to a different node. If node is left out, the<br>resource is migrated by creating a constraint which prevents it from<br>running on the current node. Additionally, you may specify a<br>lifetime for the constraint---once it expires, the location<br>constraint will no longer be active.<br><br>Usage:<br>...............<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; migrate &lt;rsc&gt; [&lt;node&gt;] [&lt;lifetime&gt;] [force]<br>...............<br><br>And the "migrate" above is the command Pascal referred to about moving resources between nodes.&nbsp; Make sure you understand the move or migrate commands thoroughly before using as they can also prevent resources from failing back because "migrate" can create location constraints infinitely preventing the resource(s) from running on the node you migrated away from without manual intervention.<br><br>HTH<br><br>Jake<br><hr id="zwchr"><div style="color: rgb(0, 0, 0); font-weight: normal; font-style: normal; text-decoration: none; font-family: Helvetica,Arial,sans-serif; font-size: 12pt;"><b>From: </b>"Pascal BERTON" &lt;pascal.berton3@free.fr&gt;<br><b>To: </b>"Elias Chatzigeorgiou" &lt;echatzig@gmail.com&gt;, drbd-user@lists.linbit.com<br><b>Sent: </b>Thursday, January 5, 2012 6:14:51 AM<br><b>Subject: </b>Re: [DRBD-user] HA DRBD setup - graceful failover/active node&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;detection<br><br><style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0cm;
        margin-right:0cm;
        margin-bottom:0cm;
        margin-left:36.0pt;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
span.apple-tab-span
        {mso-style-name:apple-tab-span;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:1518470976;
        mso-list-type:hybrid;
        mso-list-template-ids:-1621048680 67895313 67895321 67895323 67895311 67895321 67895323 67895311 67895321 67895323;}
@list l0:level1
        {mso-level-text:"%1\)";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--><div class="WordSection1"><p class="MsoNormal"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31, 73, 125);">Hi Elias&nbsp;!</span></p><p class="MsoNormal"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31, 73, 125);">&nbsp;</span></p><p class="MsoNormal"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31, 73, 125);" lang="EN-US">“crm status” will tell you on which node a given resource is active. You can also use “crm_mon” (underscore!) which will present the same thing in real time (crm status is a one shot run).</span></p><p class="MsoNormal"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31, 73, 125);" lang="EN-US">Basically, crm is the command to use to do everything you intend to do.</span></p><p class="MsoNormal"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31, 73, 125);" lang="EN-US">Regarding the iSCSI target daemon, you have declared an IP resource in your cluster, the one that your remote iSCSI initiators point to. Since the IP resource is a resource, you will see it in the crm status report, and you will know which node owns it.</span></p><p class="MsoNormal"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31, 73, 125);" lang="EN-US">&nbsp;</span></p><p class="MsoNormal"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31, 73, 125);" lang="EN-US">In order to failover your resources, guess what, you may use crm too! </span><span style="font-size: 11pt; font-family: Wingdings; color: rgb(31, 73, 125);" lang="EN-US">J</span><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31, 73, 125);" lang="EN-US"> As far as I remember, it’s something like “crm resource migrate &lt;res_name&gt; &lt;target_host&gt;”. Have a look to the crm man pages for more details.</span></p><p class="MsoNormal"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31, 73, 125);" lang="EN-US">You may also manually modify the cib config within the cluster to change the scores of your resources. This is what I use to do, although I’m not sure it is actually a best practice… To make short, the “score” is sort of a “weight” that you give to your resource on a given host. The host on which the weight/score is the highest is the host on which the resource is tied to. Change the scores, the resource moves.</span></p><p class="MsoNormal"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31, 73, 125);" lang="EN-US">&nbsp;</span></p><p class="MsoNormal"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31, 73, 125);" lang="EN-US">You must read at least 2 docs to better understand that complex stuff :</span></p><p class="MsoListParagraph" style="text-indent: -18pt;"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31, 73, 125);" lang="EN-US"><span style="">1)<span style="font: 7pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31, 73, 125);" lang="EN-US">“Pacemaker 1.0 Configuration Explained”, by Andrew Beekhof. There might be a more recent release, but I don’t know of it… I had to read it twice, but it gives valuable information regarding the way a Pacemaker cluster is structured and works. This manual worths gold!</span></p><p class="MsoListParagraph" style="text-indent: -18pt;"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31, 73, 125);" lang="EN-US"><span style="">2)<span style="font: 7pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31, 73, 125);" lang="EN-US">And then the “CRM CLI guide” (not sure which version is the latest, I have the 0.94) by Dejan Muhamedagic and Yan Gao, to understand all crm is able to achieve, and that’s not few!</span></p><p class="MsoNormal"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31, 73, 125);" lang="EN-US">Also, the “Cluster from scratch” manual is a good introduction. </span><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31, 73, 125);">An dit contains DRBD examples. </span><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31, 73, 125);" lang="EN-US">May be you might start by it, to catch the first concepts… It is easier to read than the “Pacemaker 1.0 Configuration Explained” I mentioned above.</span></p><p class="MsoListParagraph"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31, 73, 125);" lang="EN-US">&nbsp;</span></p><p class="MsoNormal"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31, 73, 125);" lang="EN-US">You’ll find all this on the web of course!</span></p><p class="MsoNormal"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31, 73, 125);" lang="EN-US">&nbsp;</span></p><p class="MsoNormal"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31, 73, 125);" lang="EN-US">HTH!</span></p><p class="MsoNormal"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31, 73, 125);" lang="EN-US">&nbsp;</span></p><p class="MsoNormal"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31, 73, 125);" lang="EN-US">Best regards,</span></p><p class="MsoNormal"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31, 73, 125);" lang="EN-US">&nbsp;</span></p><p class="MsoNormal"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31, 73, 125);" lang="EN-US">Pascal.</span></p><p class="MsoNormal"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31, 73, 125);" lang="EN-US">&nbsp;</span></p><div style="border-right: medium none; border-width: 1pt medium medium; border-style: solid none none; border-color: rgb(181, 196, 223) -moz-use-text-color -moz-use-text-color; padding: 3pt 0cm 0cm;"><p class="MsoNormal"><b><span style="font-size: 10pt; font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;">De&nbsp;:</span></b><span style="font-size: 10pt; font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;"> drbd-user-bounces@lists.linbit.com [mailto:drbd-user-bounces@lists.linbit.com] <b>De la part de</b> Elias Chatzigeorgiou<br><b>Envoyé&nbsp;:</b> jeudi 5 janvier 2012 03:14<br><b>À&nbsp;:</b> drbd-user@lists.linbit.com<br><b>Objet&nbsp;:</b> [DRBD-user] HA DRBD setup - graceful failover/active node detection</span></p></div><p class="MsoNormal">&nbsp;</p><div><p class="MsoNormal">&nbsp;</p></div><div><p class="MsoNormal">I have a two-node active/passive cluster, with DRBD controlled by corosync/pacemaker.&nbsp;</p></div><div><p class="MsoNormal">All storage is based on LVM.</p></div><div><p class="MsoNormal">&nbsp;</p></div><div><p class="MsoNormal">&nbsp;</p></div><div><p class="MsoNormal">------------------------------------------------------------------------------------</p></div><div><p class="MsoNormal">a) How do I know, which node of the cluster is currently active?&nbsp;</p></div><div><p class="MsoNormal">&nbsp; &nbsp;How can I check if a node is currently in use by the iSCSI-target daemon?</p></div><div><p class="MsoNormal">&nbsp;</p></div><div><p class="MsoNormal">&nbsp; &nbsp;I can try to deactivate a volume group using:</p></div><div><p class="MsoNormal">&nbsp;</p></div><div><p class="MsoNormal">[root@node1 ~]# vgchange -an data</p></div><div><p class="MsoNormal">&nbsp; Can't deactivate volume group "data" with 3 open logical volume(s)<span class="apple-tab-span">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p></div><div><p class="MsoNormal">&nbsp;</p></div><div><p class="MsoNormal">In which case, if I get a message like the above then I know that&nbsp;</p></div><div><p class="MsoNormal">node1 is the active node, but is there a better (non-intrusive)</p></div><div><p class="MsoNormal">way to check?</p></div><div><p class="MsoNormal">&nbsp;</p></div><div><p class="MsoNormal">A better option seems to be 'pvs -v'. If the node is active then it shows the volume names:</p></div><div><p class="MsoNormal">[root@node1 ~]# pvs -v</p></div><div><p class="MsoNormal">&nbsp; &nbsp; Scanning for physical volume names</p></div><div><p class="MsoNormal">&nbsp; PV &nbsp; &nbsp; &nbsp; &nbsp; VG &nbsp; &nbsp; &nbsp;Fmt &nbsp;Attr PSize &nbsp; PFree DevSize PV UUID</p></div><div><p class="MsoNormal">&nbsp; /dev/drbd1 data &nbsp; &nbsp;lvm2 a- &nbsp; 109.99g &nbsp; &nbsp;0 &nbsp;110.00g c40m9K-tNk8-vTVz-tKix-UGyu-gYXa-gnKYoJ</p></div><div><p class="MsoNormal">&nbsp; /dev/drbd2 tempdb &nbsp;lvm2 a- &nbsp; &nbsp;58.00g &nbsp; &nbsp;0 &nbsp; 58.00g 4CTq7I-yxAy-TZbY-TFxa-3alW-f97X-UDlGNP</p></div><div><p class="MsoNormal">&nbsp; /dev/drbd3 distrib lvm2 a- &nbsp; &nbsp;99.99g &nbsp; &nbsp;0 &nbsp;100.00g l0DqWG-dR7s-XD2M-3Oek-bAft-d981-UuLReC</p></div><div><p class="MsoNormal">&nbsp;</p></div><div><p class="MsoNormal">where on the inactive node it gives errors:</p></div><div><p class="MsoNormal">[root@node2 ~]# pvs -v</p></div><div><p class="MsoNormal">&nbsp; &nbsp; Scanning for physical volume names</p></div><div><p class="MsoNormal">&nbsp; /dev/drbd0: open failed: Wrong medium type</p></div><div><p class="MsoNormal">&nbsp; /dev/drbd1: open failed: Wrong medium type</p></div><div><p class="MsoNormal">&nbsp;</p></div><div><p class="MsoNormal">Any further ideas/comments/suggestions?</p></div><div><p class="MsoNormal">&nbsp;</p></div><div><p class="MsoNormal">------------------------------------------------------------------------------------</p></div><div><p class="MsoNormal">&nbsp;</p></div><div><p class="MsoNormal">b) how can I gracefully failover to the other node ? Up to now, the only way I</p></div><div><p class="MsoNormal">&nbsp; &nbsp;know is forcing the active node to reboot (by entering two subsequent 'reboot'</p></div><div><p class="MsoNormal">&nbsp; &nbsp;commands). This however breaks the DRBD synchronization, and I need to&nbsp;</p></div><div><p class="MsoNormal">&nbsp; &nbsp;use a fix-split-brain procedure to bring back the DRBD in sync.</p></div><div><p class="MsoNormal">&nbsp;</p></div><div><p class="MsoNormal">&nbsp; &nbsp;On the other hand, if I try to stop the corosync service on the active node,</p></div><div><p class="MsoNormal">&nbsp; &nbsp;the command takes forever! I understand that the suggested procedure should be</p></div><div><p class="MsoNormal">&nbsp; &nbsp;to disconnect all clients from the active node and then stop services,&nbsp;</p></div><div><p class="MsoNormal">&nbsp; &nbsp;is it a better approach to shut down the public network interface before</p></div><div><p class="MsoNormal">&nbsp; &nbsp;stopping the corosync service (in order to forcibly close client connections)?</p></div><div><p class="MsoNormal">&nbsp;</p></div><div><p class="MsoNormal">Thanks</p></div><div><p class="MsoNormal">&nbsp;</p></div><div><p class="MsoNormal">&nbsp;</p></div><div><p class="MsoNormal">&nbsp;</p></div></div><br>_______________________________________________<br>drbd-user mailing list<br>drbd-user@lists.linbit.com<br>http://lists.linbit.com/mailman/listinfo/drbd-user<br></div><br></div></body></html>