The growing dependency of users on social media, telecommunication services, mobile applications, banking amenities, and other cloud services requires a plan that mitigates inevitable failures and ensures the always-on access to these services. This emanates high availability (HA) concerns regarding the adoption of cloud. To maintain HA, the cloud provider and/or user should design a system that is immune to both application and infrastructure failures. This paper proposes live migration approach to maintain service delivery upon a sudden failure, a virtual machine (VM)/infrastructure overload, or maintenance. It develops a mixed integer linear programming model that minimizes the migration downtime based on the VM memory pages and the optimal HA-aware placement of the VM. It also provides different design considerations to achieve HA-aware applications placement. The proposed placement is used in the migration approach to find new hosts for the VMs. It considers VMs/applications deployments in geographically distributed data centers and satisfies redundancy, applications interdependency, and other HA and performance requirements. Then the deployments are assessed using a formal Petri Net model to improve them in terms of HA. The HA-aware placement and migration approaches are evaluated on 3-tier web applications.