[ClusterLabs] Antw: Interacting with Pacemaker from my code

Ken Gaillot kgaillot at redhat.com
Tue Jul 16 09:48:09 EDT 2019

On Tue, 2019-07-16 at 12:28 +0530, Nishant Nakate wrote:
> On Tue, Jul 16, 2019 at 11:33 AM Ulrich Windl <
> Ulrich.Windl at rz.uni-regensburg.de> wrote:
> > >>> Nishant Nakate <technonsquare at gmail.com> schrieb am 16.07.2019
> > um 05:37 in
> > Nachricht
> > <CANTAVSkfNnx=ZQv+UftaKs76Htk3VU+kO=bqHrOj4ssZx+Ou4A at mail.gmail.com
> > >:
> > > Hi All,
> > > 
> > > I am new to this community and HA tools. Need some guidance on my
> > current
> > > handling pacemaker.
> > > 
> > > For one of my projects, I am using pacekmaker for high
> > availability.
> > > Following the instructions provided in setup document, I am able
> > to create
> > > a new cluster with three nodes. Tested the failover and it works
> > as
> > > expected. Now, I need to run our own code on this nodes. I am
> > going to use
> > > Active-Pasive topology for our system architecture.
> > > 
> > > I would like to know, how can I detect from my code if DC has
> > changed ? So
> > > that tools running on new DC can take over the controll of
> > application
> > > logic.
> > 
> > Why would you need that? crm_mon shows where ther DC is.
> > 
> Thanks you Ulrich for your quick response.
> I will give you a quick overview of the system. There would be 3
> nodes configured in a cluster. One would act as a leader and others
> as followers. Our system would be actively running on all the three
> nodes and serve external services assigned to them. On top of that,
> the Leader would have some services running. In case the leader node
> (DC) fails, load of failed leader needs to be distributed among
> followers. One should get elected as next leader and start the
> additional services the previous leader was running. 

In pacemaker, this is a typical promotable (master/slave) clone
workload. See the Pacemaker Explained section on clones:


(That's for pacemaker 2.0, the syntax is slightly different but the
concepts are the same for 1.1.)

As others have mentioned, you don't need to care about the DC for this
-- pacemaker will automatically select one of your nodes to be your

> In this case, a our system daemon running on the next node
> (designated as new coordinater) needs to know that DC has changed and
> start the additional services. Hope this clarifies my need.
> AFAIK, crm_mon (or dcs) needs to be run from command line. Are you
> suggesting that I create a service which runs crm_mon and parse the
> ourput in a loop to check changes in DC/resources ?
> > > Also, how to configure my processes (tools) as resources so that
> > Pacemaker
> > > can make them HA.
> > 
> > You'll have to write an RA (resource agent) at least, but more
> > importantly the application has the be designed for HA to be
> > effective.
> We are currently designing the services which are all stateless. If
> you have any quick suggestions to be considered, please let me know.
> Also, what type of RA would be helpful in this case. My services
> would be written in C++. 

You can keep your services in C++ and write a small OCF agent as a
shell script wrapper (almost identical to an init script, if you're
familiar with those). See the Pacemaker Administration section on OCF


That's pretty basic; you can find more guides elsewhere online. You can
start with the Stateful dummy resource agent shipped with pacemaker as
a template.

One thing that's not covered in detail is master scores. Your agent has
to set a master score for each node, and the node with the highest
master score will be chosen as master. Your agent uses the crm_master
command to do this (see its man page for details).

Good luck, and let us know how it goes.

> > > 
> > > Please let me know if you need any clarification or any other
> > information.
> > > 
> > > Thanks in advance !!!
Ken Gaillot <kgaillot at redhat.com>

More information about the Users mailing list