<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Title" content="">
<meta name="Keywords" content="">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"MS 明朝";}
@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;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:Calibri;
        color:windowtext;}
span.msoIns
        {mso-style-type:export-only;
        mso-style-name:"";
        text-decoration:underline;
        color:teal;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:872808727;
        mso-list-type:hybrid;
        mso-list-template-ids:-1022316106 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style>
</head>
<body bgcolor="white" lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">I can’t answer all of this because I’m still working out how to do fencing, but I’ve been setting up a Pacemaker cluster in Amazon Web Services across two separate availability zones. Naturally,
 this means that I have to bridge subnets, so I’ve battled through a good bit of this already.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">Imagine that you have a cluster node in each of two IP subnets: 10.100.0.0/24 and 10.200.0.0/24. This configuration prevents you from doing two things:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri"><o:p> </o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-.25in;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="font-size:11.0pt;font-family:Calibri"><span style="mso-list:Ignore">1.<span style="font:7.0pt "Times New Roman"">      
</span></span></span><![endif]><span style="font-size:11.0pt;font-family:Calibri">You can’t use multicast<o:p></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-.25in;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="font-size:11.0pt;font-family:Calibri"><span style="mso-list:Ignore">2.<span style="font:7.0pt "Times New Roman"">      
</span></span></span><![endif]><span style="font-size:11.0pt;font-family:Calibri">You can’t pick an IP in either subnet as the cluster VIP<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">The way that I got around this was to pick an arbitrary subnet that exists _<i>outside</i>_ of all configured subnets in my environment: 10.0.0.0/24. I then created routes from each of
 my cluster node subnets to VIP(s) (I’m trying to make my cluster Active/Active, so I want 2) on this subnet:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">Destination                          Target<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">10.0.0.100/32                     network interface for cluster node 1<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">10.0.0.101/32                     network interface for cluster node 2<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">I then set up Pacemaker cluster resources for the VIPs:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">pcs resource create cluster_vip1 ocf:heartbeat:IPAddr2 ip=10.0.0.100 cidr_netmask=32 nic=eth0 op monitor interval=15s<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">pcs resource create cluster_vip2 ocf:heartbeat:IPAddr2 ip=10.0.0.101 cidr_netmask=32 nic=eth0 op monitor interval=15s<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">The voodoo in this is that you specify the device name of the network interface that you’re mapping to rather than just the IP address. Otherwise Pacemaker will throw an error about how
 10.0.0.100 isn’t an address that exists on the cluster nodes. Then you need to make sure that the right VIP is running on the right cluster node by probably moving resources around.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">pcs resource move cluster_vip1 clusternode1<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">pcs resource move cluster_vip2 clusternode2<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">At this point, if everything is working properly, you should be able to ping (assuming no firewall rules are in the way) the VIP IPs as long as they are associated with the appropriate
 node and the routes are correct. You’ll find that if you move the VIP to another node without updating the routing table, the pings will no longer work. Success! Well, almost…<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">While I know logically that to make this work I need to sort out a fencing method that detects node failure and then have a fencing script that updates the routing table as appropriate
 to get the traffic moving around properly to the failover node in the event of a…well…event…
</span><span style="font-size:11.0pt;font-family:Wingdings">J</span><span style="font-size:11.0pt;font-family:Calibri"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">#!/bin/bash<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">sudo -u hacluster aws ec2 replace-route --route-table-id rtb-99999999 --destination-cidr-block 10.0.0.100/32 --network-interface-id eni-11111111<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">pcs resource move cluster_vip1 clusternode2<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">Obviously, this would only work in an AWS deployment, and, like I said, I still haven’t figured out how to detect an outage to make this failover occur. Hopefully, though, this should get
 you pointed in the right direction.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:#1F4E79">--</span><span style="font-size:11.0pt;font-family:Calibri;color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:#1F4E79"> </span><span style="font-size:11.0pt;font-family:Calibri;color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><b><span style="font-size:14.0pt;font-family:Calibri;color:#27628C">[ jR ]</span></b><span style="font-size:14.0pt;font-family:Calibri;color:#27628C"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:#1F4E79">  M: +1 (703) 628-2621</span><span style="font-size:11.0pt;font-family:Calibri;color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:#1F4E79">  @: <a href="mailto:jason@eramsey.org"><span style="color:blue">jason@eramsey.org</span></a></span><span style="font-size:11.0pt;font-family:Calibri;color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:#1F4E79"> </span><span style="font-size:11.0pt;font-family:Calibri;color:black"><o:p></o:p></span></p>
</div>
<p class="MsoNormal"><span style="font-family:Calibri;color:#1F4E79">  </span><i><span style="font-size:9.0pt;font-family:Calibri;color:#1F4E79">there is no path to greatness; greatness is the path</span></i><span style="font-size:11.0pt;font-family:Calibri"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri"><o:p> </o:p></span></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-family:Calibri;color:black">From: </span>
</b><span style="font-family:Calibri;color:black">"bhargav M.P" <mpbhargav@gmail.com><br>
<b>Reply-To: </b>Cluster Labs - All topics related to open-source clustering welcomed <users@clusterlabs.org><br>
<b>Date: </b>Tuesday, August 9, 2016 at 2:40 PM<br>
<b>To: </b>"users@clusterlabs.org" <users@clusterlabs.org><br>
<b>Subject: </b>[ClusterLabs] Can Pacemaker monitor geographical separated servers<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<div>
<p class="MsoNormal">Hi All, <o:p></o:p></p>
<div>
<p class="MsoNormal">I have deployment where we have two Linux servers that are geographically separated and they are across different subnets . I want the server to work in  Active/Standby mode . I would like to use pacemaker-corsync for performing switch
 over when active fails. <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">My requirement:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><b> would like to have a single virtual IP address for accessing the Linux servers and only active must have VIP(virtual IP address)</b><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><b>Can pacemaker transfer the virtual IP address to new active  when the current active fails.? If so,  how can the same virtual IP address be accessible from the client since it has now moved to a different subnet.? </b><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><b>If the above use case cannot be supported by the pacemaker what are the possible options i need to look at.?</b><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Thank you so much for the help,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Bhargav<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
</body>
</html>