Praqma / LearnKubernetes

Notes and resources collected together to help learn Kubernetes. This will eventually become a tutorial and later a blog post for praqma website (hopefully!)
528 stars 223 forks source link

Virtual IP /HA setup using PaceMaker+Corosync does not work on AWS #7

Open KamranAzeem opened 7 years ago

KamranAzeem commented 7 years ago

On AWS, the pacemaker+corosync setup works to an end where it assigns an extra IP address to one of the HA cluster nodes , but that extra IP is not visible to any node on that subnet.

KamranAzeem commented 7 years ago

From https://www.quora.com/How-do-I-do-custom-VIP-failover-between-EC2-instances-in-an-AWS-VPC

When using EC2 instances it's not sufficient to simply assign the (secondary/VIP) address from inside the instances using "ifconfig" or "ip addr" commands. The SDN (software defined networking) infrastructure at AWS doesn't work like a normal, physical ethernet collision domain and you can't so a gratuitous ARP to announce your (virtual) NICs new address to the (virtual) switches.

On AWS, this means that even though our pacemaker+corosync setup itself works perfectly to assign and float an IP from one node to another, that VIP is not visible to any other node, except the node it is setup on. We have to resort to using AWS own LB mechanisms to achieve HA.

This makes it pointless to setup HA on AWS, using pacemaker and corosync. We must resort to using AWS own mechanisms to achieve HA.

KamranAzeem commented 7 years ago

How this is supposed to be done is explained:

psachin-ic commented 7 years ago

Hello,

I am facing the similar issue in our environment, VIP assigned as secondary IP doesnt work very well on AWS and do a cluster unstability.

klaypigeon commented 4 years ago

I know this is an old issue, but I believe this can be solved by using the ocf_heartbeat_awsvip resource which was created to move a secondary IP around. https://www.mankier.com/7/ocf_heartbeat_awsvip

sergey-safarov commented 4 years ago

I about one year try this issue in AWS cloud. The more easy and correct way is to create a network interface with the required static IP and then assign this network interface in instance in the zone.