There are a few different methods of taking care of this. If you're using a cloud provider (EC2 / OpenStack / Google Compute Engine) there is the concept of a floating IP which can be moved via an API call. This gets rid of having to use things like VRRP directly.
In the long run this is best handled by utilizing DNS entries with a short TTL. Using that method also allows you the greater flexibility of having location aware applications (where DNS in different regions can route to the closest location), easy transition to IPv6, and failover across physical locations without needing to maintain your own internal routing infrastructure.