<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Hello,</p>
    <p>I originally posted this in the Azure forums first but have had
      no replies. Trying here instead in case anyone has encountered it.</p>
    <p>I am trying to setup up a High Availability Cluster in Azure
      using CentOS 8, Pacemaker and Corosync. Everything is deployed
      using terraform. </p>
    <p>For our application, we need to migrate a floating IP address, a
      shared storage and our daemon between nodes. These resources are
      grouped into a service and these are successfully migrating
      between nodes as required. We are also using a private DNS zone
      and there is no firewall on either server. There is a DNS entry
      for the floating IP and that is resolvable by both servers and
      client.</p>
    <p>The problem is that floating IP address is only pingable on the
      server which has the floating IP address assigned as a secondary
      address. All other nodes in the same subnet will get the error
      Destination Host Unreachable, but pings to the primary address
      will succeed. All the IP addresses are in the same subnet
      (172.16.31.0/24). Auto-registration is enabled for the servers and
      client which makes up the test environment. The floating address
      was a somewhat arbitrary choice, but remains in that same subnet
      and would not be otherwise allocated. I mentioned the auto
      registration because the floating IP is <strong>not</strong>
      auto-registered.</p>
    <p>If I migrate the service to the other server node, the roles are
      reversed, the server which could not ping the address can now do
      so and the server which could, cannot.</p>
    <p>Any insight would be welcome.</p>
    <p>Additional detail considering the audience:</p>
    <div style="color: #d4d4d4;background-color: #1e1e1e;font-family: Consolas, 'Courier New', monospace;font-weight: normal;font-size: 14px;line-height: 19px;white-space: pre;"><div><span style="color: #ce9178;">pcs host auth -u hacluster -p ******** haswmfs-lin-vm-000 haswmfs-lin-vm-001</span></div><div><span style="color: #ce9178;">pcs cluster setup haswmfs haswmfs-lin-vm-000 haswmfs-lin-vm-001</span></div><div><span style="color: #ce9178;">pcs cluster enable --all</span></div><div><span style="color: #ce9178;">pcs cluster start --all</span></div><div><span style="color: #ce9178;">sleep 30</span></div>
<div><span style="color: #ce9178;">pcs property set stonith-enabled=false</span></div>
<div><span style="color: #ce9178;">pcs resource create haswmfs-fs ocf:heartbeat:Filesystem device=/dev/sdc directory=/mnt/smallworld fstype=xfs</span></div>
<div><span style="color: #ce9178;">pcs resource create haswmfs-daemon lsb:smallworld_GIS</span></div>
<div><span style="color: #ce9178;">pcs resource create haswmfs-ip ocf:heartbeat:IPaddr2 ip=</span><span style="color: #569cd6;">${</span><span style="color: #ce9178;">var</span><span style="color: #d4d4d4;">.</span><span style="color: #9cdcfe;">virtual_ip</span><span style="color: #569cd6;">}</span><span style="color: #ce9178;"> cidr_netmask=24 nic=eth0 iflabel=haswmfs op monitor interval=30s</span></div>
<div><span style="color: #ce9178;">pcs resource group add haswmfs-service haswmfs-ip haswmfs-daemon haswmfs-fs</span></div>
<div><span style="color: #ce9178;">fence_azure_arm -l </span><span style="color: #569cd6;">${</span><span style="color: #ce9178;">var</span><span style="color: #d4d4d4;">.</span><span style="color: #9cdcfe;">app_id</span><span style="color: #569cd6;">}</span><span style="color: #ce9178;"> -p </span><span style="color: #569cd6;">${</span><span style="color: #ce9178;">data</span><span style="color: #d4d4d4;">.</span><span style="color: #9cdcfe;">external</span><span style="color: #d4d4d4;">.</span><span style="color: #9cdcfe;">service_principal</span><span style="color: #d4d4d4;">.</span><span style="color: #9cdcfe;">result</span><span style="color: #d4d4d4;">.</span><span style="color: #9cdcfe;">password</span><span style="color: #569cd6;">}</span><span style="color: #ce9178;"> --resourceGroup </span><span style="color: #569cd6;">${</span><span style="color: #ce9178;">var</span><span style="color: #d4d4d4;">.</span><span style="color: #9cdcfe;">resource_group_name</span><span style="color: #569cd6;">}</span><span style="color: #ce9178;"> --tenantId </span><span style="color: #569cd6;">${</span><span style="color: #ce9178;">data</span><span style="color: #d4d4d4;">.</span><span style="color: #9cdcfe;">azurerm_client_config</span><span style="color: #d4d4d4;">.</span><span style="color: #9cdcfe;">current</span><span style="color: #d4d4d4;">.</span><span style="color: #9cdcfe;">tenant_id</span><span style="color: #569cd6;">}</span><span style="color: #ce9178;"> --subscriptionId </span><span style="color: #569cd6;">${</span><span style="color: #ce9178;">data</span><span style="color: #d4d4d4;">.</span><span style="color: #9cdcfe;">azurerm_client_config</span><span style="color: #d4d4d4;">.</span><span style="color: #9cdcfe;">current</span><span style="color: #d4d4d4;">.</span><span style="color: #9cdcfe;">subscription_id</span><span style="color: #569cd6;">}</span><span style="color: #ce9178;"> -o list</span></div><span style="color: #ce9178;">pcs stonith create haswmfs-fence fence_azure_arm login=</span><span style="color: #569cd6;">${</span><span style="color: #ce9178;">var</span><span style="color: #d4d4d4;">.</span><span style="color: #9cdcfe;">app_id</span><span style="color: #569cd6;">}</span><span style="color: #ce9178;"> passwd=</span><span style="color: #569cd6;">${</span><span style="color: #ce9178;">data</span><span style="color: #d4d4d4;">.</span><span style="color: #9cdcfe;">external</span><span style="color: #d4d4d4;">.</span><span style="color: #9cdcfe;">service_principal</span><span style="color: #d4d4d4;">.</span><span style="color: #9cdcfe;">result</span><span style="color: #d4d4d4;">.</span><span style="color: #9cdcfe;">password</span><span style="color: #569cd6;">}</span><span style="color: #ce9178;"> resourceGroup=</span><span style="color: #569cd6;">${</span><span style="color: #ce9178;">var</span><span style="color: #d4d4d4;">.</span><span style="color: #9cdcfe;">resource_group_name</span><span style="color: #569cd6;">}</span><span style="color: #ce9178;">  tenantId=</span><span style="color: #569cd6;">${</span><span style="color: #ce9178;">data</span><span style="color: #d4d4d4;">.</span><span style="color: #9cdcfe;">azurerm_client_config</span><span style="color: #d4d4d4;">.</span><span style="color: #9cdcfe;">current</span><span style="color: #d4d4d4;">.</span><span style="color: #9cdcfe;">tenant_id</span><span style="color: #569cd6;">}</span><span style="color: #ce9178;"> subscriptionId=</span><span style="color: #569cd6;">${</span><span style="color: #ce9178;">data</span><span style="color: #d4d4d4;">.</span><span style="color: #9cdcfe;">azurerm_client_config</span><span style="color: #d4d4d4;">.</span><span style="color: #9cdcfe;">current</span><span style="color: #d4d4d4;">.</span><span style="color: #9cdcfe;">subscription_id</span><span style="color: #569cd6;">}</span><span style="color: #ce9178;"> pcmk_host_list="haswmfs-lin-vm-000 haswmfs-lin-vm-001" power_timeout=240 pcmk_reboot_timeout=480 pcmk_reboot_retries=4 pcmk_reboot_action=reboot # op monitor interval=60s</span>
<div><span style="color: #ce9178;">pcs property set stonith-enabled=true</span></div><div><span style="color: #ce9178;">pcs property config --all | egrep "stonith|quorum"</span></div>
<div><span style="color: #ce9178;">sleep 60</span></div>
<div><span style="color: #ce9178;">pcs cluster verify --full # should be blank if ok</span></div><div><span style="color: #ce9178;">crm_verify -LV # should be blank if ok</span></div>
<div><span style="color: #ce9178;">pcs cluster config</span></div><div><span style="color: #ce9178;">pcs resource config haswmfs-service</span></div><div><span style="color: #ce9178;">pcs stonith config</span></div><span style="color: #ce9178;">pcs status</span>
</div>
    <p>As mentioned in the original post, everything is failing over as
      expected and the only issue is the pinging of the virtual IP.<br>
    </p>
    <p> Thanks</p>
    -paul
  </body>
</html>