<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>Hello,</div><div><br></div><div>Thanks Digimer for letting me about the tool. I was unaware of any such tools!! And because of that I was able to search clufter-cli tool for the migration.</div><div><br></div><div>Thanks a lot John for explaining each and everything in detailed manner. I am really admired the knowledge you guys have!!</div><div><br></div><div>I also noticed that clufter tool is written by you :). I am very thankful to you as it would save the ass of millions people like me who may have had difficulties in migration of their legacy programs from CMAN to Pacemaker.</div><div><br></div><div>As suggested I tried to migrate my existing cluster.conf file from CMAN to Pacemaker through the use of clufter. But have couple of queries going forward, would appreciate if you could answer these.</div><div><br></div><div>Please find In-line queries:</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><br></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><br>
Message: 2<br>
Date: Fri, 22 Jan 2016 21:52:17 +0100<br>
From: Jan Pokorn? <<a href="mailto:jpokorny@redhat.com">jpokorny@redhat.com</a>><br>
To: Cluster Labs - All topics related to open-source clustering<br>
        welcomed        <<a href="mailto:users@clusterlabs.org">users@clusterlabs.org</a>><br>
Subject: Re: [ClusterLabs] Cluster resources migration from CMAN to<br>
        Pacemaker<br>
Message-ID: <<a href="mailto:20160122205217.GE28856@redhat.com">20160122205217.GE28856@redhat.com</a>><br>
Content-Type: text/plain; charset="us-ascii"<br>
<br>
Hello,<br>
<br>
yes, as Digimer mentioned, clufter is the tool you may want to look<br>
at.  Do not expect fully automatic miracles from it, though.<br>
It's meant to show the conversion path, but one has to be walk it<br>
very carefully and make adjustments every here and there.<br>
In part because there is not a large overlap between resource agents<br>
of both kinds.<br>
<br>
On 22/01/16 17:32 +0530, jaspal singla wrote:<br>
> I desperately need some help in order to migrate my cluster configuration<br>
> from CMAN (RHEL-6.5) to PACEMAKER (RHEL-7.1).<br>
><br>
> I have tried to explore a lot but couldn't find similarities configuring<br>
> same resources (created in CMAN's cluster.conf file) to Pacemaker.<br>
><br>
> I'd like to share cluster.conf of RHEL-6.5 and want to achieve the same<br>
> thing through Pacemaker. Any help would be greatly appreciable!!<br>
><br>
> *Cluster.conf file*<br>
><br>
> ######################################################################<br>
><br>
<br>
[reformatted configuration file below for better readability and added<br>
some comment in-line]<br>
<br>
> <?xml version="1.1"?><br>
                 ^^^<br>
                 no, this is not the way to increase config version<br>
<br>
This seems to be quite frequented mistake; looks like configuration<br>
tools should have strictly refrained from using this XML declaration<br>
in the first place.<br>
<br>
> <cluster config_version="1" name="HA1-105_CLUSTER"><br>
>   <fence_daemon clean_start="0" post_fail_delay="0" post_join_delay="3"/><br>
>   <clusternodes><br>
>     <clusternode name="<a href="http://ha1-105.test.com" rel="noreferrer" target="_blank">ha1-105.test.com</a>" nodeid="1" votes="1"><br>
>       <fence/><br>
>     </clusternode><br>
<br>
(I suppose that other nodes were omitted)<br></blockquote><div><br></div><div>No, its Single-Node Cluster Geographical Redundancy Configuration. </div><div><br></div><div>The geographical redundancy configuration allows us to locate two Prime Optical instances at geographically remote sites. One server instance is active; the other server instance is standby. The HA agent switches to the standby Element Management System (EMS) instance if an unrecoverable failure occurs on the active EMS instance. In a single-node cluster geographical redundancy configuration, there are two clusters with different names (one on each node), each containing a server.<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
>   </clusternodes><br>
>   <cman/><br>
>   <fencedevices/><br>
>   <rm log_facility="local4" log_level="7"><br>
>     <failoverdomains><br>
>       <failoverdomain name="Ha1-105_Domain" nofailback="0" ordered="0" restricted="0"/><br>
<br>
TODO: have to check what does it mean when FOD is not saturated<br>
      with any cluster node references<br></blockquote><div><br></div><div>No worries of using FOD as I don't think, it will be in use as we have groups in pacemaker.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
>     </failoverdomains><br>
>     <resources><br>
>       <script file="/data/Product/HA/bin/ODG_IFAgent.py" name="REPL_IF"/><br>
<br>
General LSB-compliance-assumed commands are currently using a path hack<br>
with lsb:XYZ resource specification.  In this very case, it means<br>
the result after the conversion refers to<br>
"lsb:../../..//data/Product/HA/bin/FsCheckAgent.py".<br>
<br>
Agreed, there should be a better way to support arbitrary locations</blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
beside /etc/init.d/XYZ.<br></blockquote><div><br></div><div>Configured resources as LSB as you suggested.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
>       <script file="/data/Product/HA/bin/ODG_ReplicatorAgent.py" name="ORACLE_REPLICATOR"/><br>
>       <script file="/data/Product/HA/bin/OracleAgent.py" name="CTM_SID"/><br>
>       <script file="/data/Product/HA/bin/NtwIFAgent.py" name="NTW_IF"/><br>
>       <script file="/data/Product/HA/bin/FsCheckAgent.py" name="FSCheck"/><br>
>       <script file="/data/Product/HA/bin/ApacheAgent.py" name="CTM_APACHE"/><br>
>       <script file="/data/Product/HA/bin/CtmAgent.py" name="CTM_SRV"/><br>
>       <script file="/data/Product/HA/bin/RsyncAgent.py" name="CTM_RSYNC"/><br>
>       <script file="/data/Product/HA/bin/HeartBeat.py" name="CTM_HEARTBEAT"/><br>
>       <script file="/data/Product/HA/bin/FlashBackMonitor.py" name="FLASHBACK"/><br>
>     </resources><br>
>     <service autostart="0" domain="Ha1-105_Domain" exclusive="0" name="ctm_service" recovery="disable"><br>
<br>
autostart="0" discovered a bug in processing towards "pcs commands"<br>
output:<br>
<a href="https://pagure.io/clufter/57ebc50caf2deddbc6c12042753ce0573a4a260c" rel="noreferrer" target="_blank">https://pagure.io/clufter/57ebc50caf2deddbc6c12042753ce0573a4a260c</a></blockquote><div><br></div><div>I don't want to start my some of the configured services when Pacemaker starts ( like it had happen in RGManager), I want to manually starts the services. Is their any way I can do that?</div><div><br></div><div><br></div><div>Also, I am trying to start the cluster but "Resource Group: SERVICE-ctm_service-GROUP" is going into unmanaged state and cannot be started. Could you please give me some clue of it like why its going in unamanged state and how it can be rectified?</div><div><br></div><div><br></div><div>Here is the resource group snip:</div><div><br></div><div><div>Resource Group: SERVICE-ctm_service-GROUP</div><div>     RESOURCE-script-FSCheck    (lsb:../../..//cisco/PrimeOpticalServer/HA/bin/FsCheckAgent.py):        Started <a href="http://ha1-103.cisco.com">ha1-103.cisco.com</a> (unmanaged)</div><div>     RESOURCE-script-NTW_IF     (lsb:../../..//cisco/PrimeOpticalServer/HA/bin/NtwIFAgent.py):  Stopped (unmanaged)</div><div>     RESOURCE-script-CTM_RSYNC  (lsb:../../..//cisco/PrimeOpticalServer/HA/bin/RsyncAgent.py):  Stopped (unmanaged)</div><div>     RESOURCE-script-REPL_IF    (lsb:../../..//cisco/PrimeOpticalServer/HA/bin/ODG_IFAgent.py): Stopped (unmanaged)</div><div>     RESOURCE-script-ORACLE_REPLICATOR  (lsb:../../..//cisco/PrimeOpticalServer/HA/bin/ODG_ReplicatorAgent.py): Stopped (unmanaged)</div><div>     RESOURCE-script-CTM_SID    (lsb:../../..//cisco/PrimeOpticalServer/HA/bin/OracleAgent.py): (target-role:Stopped) Started <a href="http://ha1-103.cisco.com">ha1-103.cisco.com</a> (unmanaged)</div><div>     RESOURCE-script-CTM_SRV    (lsb:../../..//cisco/PrimeOpticalServer/HA/bin/CtmAgent.py):    Stopped (unmanaged)</div><div>     RESOURCE-script-CTM_APACHE (lsb:../../..//cisco/PrimeOpticalServer/HA/bin/ApacheAgent.py): FAILED <a href="http://ha1-103.cisco.com">ha1-103.cisco.com</a> (unmanaged)</div><div> Resource Group: SERVICE-ctm_heartbeat-GROUP</div><div>     RESOURCE-script-CTM_HEARTBEAT      (lsb:../../..//cisco/PrimeOpticalServer/HA/bin/HeartBeat.py):   Started <a href="http://ha1-103.cisco.com">ha1-103.cisco.com</a></div><div> Resource Group: SERVICE-ctm_monitoring-GROUP</div><div>     RESOURCE-script-FLASHBACK  (lsb:../../..//cisco/PrimeOpticalServer/HA/bin/FlashBackMonitor.py):    Started <a href="http://ha1-103.cisco.com">ha1-103.cisco.com</a></div></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><br>
<br>
>       <script ref="FSCheck"/><br>
>       <script ref="NTW_IF"/><br>
>       <script __independent_subtree="2" __max_restarts="20" __restart_expire_time="900" ref="CTM_RSYNC"/><br>
>       <script __independent_subtree="2" __max_restarts="10" __restart_expire_time="900" ref="REPL_IF"/><br>
<br>
__independent_subtree is currently not supported<br>
<br>
>       <script __independent_subtree="2" ref="ORACLE_REPLICATOR"/><br>
>       <script ref="CTM_SID"><br>
>         <script ref="CTM_SRV"><br>
>           <script ref="CTM_APACHE"/><br>
>         </script><br>
>       </script><br>
>     </service><br>
>     <service autostart="1" exclusive="0" max_restarts="3" name="ctm_heartbeat" recovery="restart" restart_expire_time="900"><br>
<br>
recovery/restart parameters were not supported until now:<br>
<a href="https://pagure.io/clufter/0bddf45587588db38086c6b6498ab77004fa59b4" rel="noreferrer" target="_blank">https://pagure.io/clufter/0bddf45587588db38086c6b6498ab77004fa59b4</a></blockquote><div><br></div><div>What should we use instead of "__independent_subtree="2" in Pacemaker? Is their any other way  to achieve the previous behavior?  Please suggest.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><br>
<br>
>       <script ref="CTM_HEARTBEAT"/><br>
>     </service><br>
>     <service autostart="1" exclusive="0" max_restarts="3" name="ctm_monitoring" recovery="restart" restart_expire_time="900"><br>
>       <script ref="FLASHBACK"/><br>
>     </service><br>
>   </rm><br>
> </cluster><br>
><br>
> ###############################################<br>
><br>
><br>
> * Quries/concerns:*<br>
><br>
> -> How can I specifically mentioned above 10 resources through Pacemaker?<br>
<br>
Using the newest code from the next branch of linked repository<br>
(will make a standard release shortly) the suggestion that still<br>
require manual review(!) is a sequence of commands like this:<br>
<br>
$ clufter ccs2pcscmd -gqs jaspal.conf<br>
> pcs cluster auth <a href="http://ha1-105.test.com" rel="noreferrer" target="_blank">ha1-105.test.com</a><br>
> pcs cluster setup --start --name HA1-105_CLUSTER <a href="http://ha1-105.test.com" rel="noreferrer" target="_blank">ha1-105.test.com</a> \<br>
>   --consensus 12000 --token 10000 --join 60<br>
> sleep 60<br>
> pcs cluster cib tmp-cib.xml --config<br>
> pcs -f tmp-cib.xml property set stonith-enabled=false<br>
> pcs -f tmp-cib.xml \<br>
>   resource create RESOURCE-script-FSCheck \<br>
>   lsb:../../..//data/Product/HA/bin/FsCheckAgent.py \<br>
>   op monitor id=RESOURCE-script-FSCheck-OP-monitor name=monitor \<br>
>   interval=30s<br>
> pcs -f tmp-cib.xml \<br>
>   resource create RESOURCE-script-NTW_IF \<br>
>   lsb:../../..//data/Product/HA/bin/NtwIFAgent.py \<br>
>   op monitor id=RESOURCE-script-NTW_IF-OP-monitor name=monitor \<br>
>   interval=30s<br>
> pcs -f tmp-cib.xml \<br>
>   resource create RESOURCE-script-CTM_RSYNC \<br>
>   lsb:../../..//data/Product/HA/bin/RsyncAgent.py \<br>
>   op monitor id=RESOURCE-script-CTM_RSYNC-OP-monitor name=monitor \<br>
>   interval=30s<br>
> pcs -f tmp-cib.xml \<br>
>   resource create RESOURCE-script-REPL_IF \<br>
>   lsb:../../..//data/Product/HA/bin/ODG_IFAgent.py \<br>
>   op monitor id=RESOURCE-script-REPL_IF-OP-monitor name=monitor \<br>
>   interval=30s<br>
> pcs -f tmp-cib.xml \<br>
>   resource create RESOURCE-script-ORACLE_REPLICATOR \<br>
>   lsb:../../..//data/Product/HA/bin/ODG_ReplicatorAgent.py \<br>
>   op monitor id=RESOURCE-script-ORACLE_REPLICATOR-OP-monitor \<br>
>   name=monitor interval=30s<br>
> pcs -f tmp-cib.xml \<br>
>   resource create RESOURCE-script-CTM_SID \<br>
>   lsb:../../..//data/Product/HA/bin/OracleAgent.py \<br>
>   op monitor id=RESOURCE-script-CTM_SID-OP-monitor name=monitor \<br>
>   interval=30s<br>
> pcs -f tmp-cib.xml \<br>
>   resource create RESOURCE-script-CTM_SRV \<br>
>   lsb:../../..//data/Product/HA/bin/CtmAgent.py \<br>
>   op monitor id=RESOURCE-script-CTM_SRV-OP-monitor name=monitor \<br>
>   interval=30s<br>
> pcs -f tmp-cib.xml \<br>
>   resource create RESOURCE-script-CTM_APACHE \<br>
>   lsb:../../..//data/Product/HA/bin/ApacheAgent.py \<br>
>   op monitor id=RESOURCE-script-CTM_APACHE-OP-monitor name=monitor \<br>
>   interval=30s<br>
> pcs -f tmp-cib.xml \<br>
>   resource create RESOURCE-script-CTM_HEARTBEAT \<br>
>   lsb:../../..//data/Product/HA/bin/HeartBeat.py \<br>
>   op monitor id=RESOURCE-script-CTM_HEARTBEAT-OP-monitor name=monitor \<br>
>   interval=30s<br>
> pcs -f tmp-cib.xml \<br>
>   resource create RESOURCE-script-FLASHBACK \<br>
>   lsb:../../..//data/Product/HA/bin/FlashBackMonitor.py \<br>
>   op monitor id=RESOURCE-script-FLASHBACK-OP-monitor name=monitor \<br>
>   interval=30s<br>
> pcs -f tmp-cib.xml \<br>
>   resource group add SERVICE-ctm_service-GROUP RESOURCE-script-FSCheck \<br>
>   RESOURCE-script-NTW_IF RESOURCE-script-CTM_RSYNC \<br>
>   RESOURCE-script-REPL_IF RESOURCE-script-ORACLE_REPLICATOR \<br>
>   RESOURCE-script-CTM_SID RESOURCE-script-CTM_SRV \<br>
>   RESOURCE-script-CTM_APACHE<br>
> pcs -f tmp-cib.xml resource \<br>
>   meta SERVICE-ctm_service-GROUP is-managed=false<br>
> pcs -f tmp-cib.xml \<br>
>   resource group add SERVICE-ctm_heartbeat-GROUP \<br>
>   RESOURCE-script-CTM_HEARTBEAT<br>
> pcs -f tmp-cib.xml resource \<br>
>   meta SERVICE-ctm_heartbeat-GROUP migration-threshold=3 \<br>
>   failure-timeout=900<br>
> pcs -f tmp-cib.xml \<br>
>   resource group add SERVICE-ctm_monitoring-GROUP \<br>
>   RESOURCE-script-FLASHBACK<br>
> pcs -f tmp-cib.xml resource \<br>
>   meta SERVICE-ctm_monitoring-GROUP migration-threshold=3 \<br>
>   failure-timeout=900<br>
> pcs cluster cib-push tmp-cib.xml --config<br>
<br>
> -> the services being used in <service> section are not init.d services,<br>
> these services uses script reference of above defined resources. So, how<br>
> could I do the same thing in Pacemaker?<br>
<br>
see above around "FsCheckAgent.py"<br>
<br>
> Couple of concerns I have:<br>
> -> How do I create failover domains in pacemaker and link resources to it?<br>
<br>
In Pacemaker, there is no direct equivalent of failover domains.<br>
The constraints and temporal behavior cooked into the concept<br>
of failover domains are split into orthogonal properties in the<br>
Pacemaker world[*] and it's true some traits are very hard to model<br>
there, if achievable without external support (like in the resource<br>
agent directly) at all.<br>
<br>
Also note that failover domains allow for easy mixing of symmetric<br>
and assymetric behavior within the subset of nodes for particular<br>
resources, something really not straightforward in Pacemaker.<br>
<br>
On the other hand, Pacemaker offers very fine-grained approach to<br>
customizing the behavior of the cluster so forgetting about concept<br>
of failover domain should be relatively painless.<br>
<br>
[*] search for failoverdomain in<br>
    <a href="https://pagure.io/clufter/blob/master/f/__root__/doc/rgmanager-pacemaker.02.resources.txt" rel="noreferrer" target="_blank">https://pagure.io/clufter/blob/master/f/__root__/doc/rgmanager-pacemaker.02.resources.txt</a><br>
<br>
> -> By default there are several pre-defined resource API's given in<br>
> Pacemaker and we can use them if our requirements match with pre-defined<br>
> API's like IPADDR2, Apache etc. But what if I have some python scripts and<br>
> want to use those scripts as resources? Is their any way to do that?<br>
<br>
If they are one-off launchers of some long-running process, you may<br>
want to use ocf:anything resource (contained in resource-agents package):<br>
<br>
<a href="https://github.com/ClusterLabs/resource-agents/blob/master/heartbeat/anything" rel="noreferrer" target="_blank">https://github.com/ClusterLabs/resource-agents/blob/master/heartbeat/anything</a><br>
<br>
and refer to them via binfile parameter.<br>
<br>
Or you may consider making your scripts OCF compliant:<br>
<a href="http://www.linux-ha.org/doc/dev-guides/ra-dev-guide.html" rel="noreferrer" target="_blank">http://www.linux-ha.org/doc/dev-guides/ra-dev-guide.html</a><br>
<br>
--<br>
Jan (Poki)<br>
-------------- next part --------------<br>
A non-text attachment was scrubbed...<br>
Name: not available<br>
Type: application/pgp-signature<br>
Size: 819 bytes<br>
Desc: not available<br>
URL: <<a href="http://clusterlabs.org/pipermail/users/attachments/20160122/d48e17c5/attachment-0001.sig" rel="noreferrer" target="_blank">http://clusterlabs.org/pipermail/users/attachments/20160122/d48e17c5/attachment-0001.sig</a>><br>
<br>
------------------------------<br>
<br>
_______________________________________________<br>
Users mailing list<br>
<a href="mailto:Users@clusterlabs.org">Users@clusterlabs.org</a><br>
<a href="http://clusterlabs.org/mailman/listinfo/users" rel="noreferrer" target="_blank">http://clusterlabs.org/mailman/listinfo/users</a><br>
<br>
<br>
End of Users Digest, Vol 12, Issue 39<br>
*************************************<br></blockquote><div><br></div><div>Thanks</div><div>Jaspal</div><div> </div></div><br></div></div>