<a id="high-availability"></a>

# High availability (HA)

See also:

- [Make a controller highly available](https://documentation.ubuntu.com/juju/4.0/howto/manage-controllers.md#make-a-controller-highly-available)
- [Make an application highly available](https://documentation.ubuntu.com/juju/4.0/howto/manage-applications.md#make-an-application-highly-available)

In the context of a cloud deployment in general, **high availability (HA)** is the concept of making software resilient to failures by means of running multiple replicas with shared and synchronised software context – something usually achieved through coordinated [scaling (out and up)](https://documentation.ubuntu.com/juju/4.0/reference/scaling.md#scaling). In Juju, it is supported for controllers on machine clouds and for regular applications on both machine and Kubernetes clouds

![Juju - Controller high availability (machines)](reference/high-availability.png)

 ***Controller high availability (machine clouds).** Juju controllers can be made highly-available by enabling more than one machine to each run a separate controller unit with a separate controller agent instance, where each machine effectively becomes an instance of the controller. This set of Juju agents collectively use a database replicaset to achieve data synchronisation amongst them.*
