1

I am creating a cloud based cluster so for now am using uni cast to connect to other pacemaker/corosync nodes.I was able to create a cluster using private IP's. To create a cross region cluster , I wanted to use public IP's. I tried using a generic configuration by giving public IP for memberaddr and node's public IP for bindnetaddr. Something like this

  interface {

           member {
             memberaddr: <public ip 1>
           }
           member {
              memberaddr: <public ip 2>
           }
           member {
              memberaddr: <public ip 3>
           }
           ringnumber: 0
           bindnetaddr: <current nodes public Ip>
           mcastport: 5405
           ttl: 1
  }
  transport: udpu

This isn't working. Am I doing something wrong ? all the references I could find for are for corosync 2.x

Thank you

nwarriorch
  • 13
  • 3

2 Answers2

0

If the Corosync configuration worked for your private network, it should work for your public network as well. I would verify that there are firewall rules in place that allow UDP ports 5404 and 5405 to communicate between nodes.

Also, bindnetaddr isn't necessarily an IP address; it's looking for a network address. Just be certain that you're using the correct network address for your netmask.

From the Corosync.conf man page:

bindnetaddr
          This specifies the network address the corosync executive should
          bind to.

          bindnetaddr should be an IP address configured on the system, or
          a network address.

          For example, if the local interface is 192.168.5.92 with netmask
          255.255.255.0, you should set  bindnetaddr  to  192.168.5.92  or
          192.168.5.0.   If  the local interface is 192.168.5.92 with net‐
          mask  255.255.255.192,  set  bindnetaddr  to   192.168.5.92   or
          192.168.5.64, and so forth.

          This  may also be an IPV6 address, in which case IPV6 networking
          will be used.  In this case, the exact address must be specified
          and  there  is  no  automatic selection of the network interface
          within a specific subnet as with IPv4.

          If IPv6 networking is used, the nodeid field in nodelist must be
          specified.
Matt Kereczman
  • 1,899
  • 9
  • 12
  • I tried changing bind address to my eth0 interfaces inet address and their network address. In both cases the corosyinc on all nodes are adding themselves and the ones that are in the same subnet. The ones in other subnets but accessible with public Ip's are not being added. – nwarriorch Oct 12 '16 at 21:06
0

I almost forgot about this, If any one is trying to get corosync 1.4 working on the cloud with public IP's. Corosync binds to the interfaces according to the bound address you have provided and generates a bound-to address which would be your interface address.

From what I understand it is broadcasting this IP to all the nodes who in turn respond to this address instead of address from where it received the packet.

so if your public IP is not on the box like it is on some clouds , then it might not be possible to use Corosync as is with public ip's

nwarriorch
  • 13
  • 3