Cluster é um conceito onde dois ou mais servidores gerenciados trabalham em conjunto, como se fossem um. Estes servidores podem estar em uma máquina física ou em várias. Os deploys serão feitos apontando para o cluster, que irá distribuir as aplicações para as diversas máquinas que podem fazer parte dele.
Caso um dos servidores pare de responder, outro membro do cluster irá responder em seu lugar, evitando falhas na utilização do sistema, isto é chamado de alta disponibilidade. Ele também tem a capacidade de replicar certas informações, de forma que o usuário não perceba uma mudança de servidores, quando um deles para de responder.
Vamos imaginar que você esta se cadastrando num site e já digitou várias informações, este site é feito em Java e o ambiente esta configurado em cluster. O servidor que estava atendendo a sua tela, por alguma falha, para de funcionar. Outro servidor assume o serviço com os dados que foram replicados pelo servidor que falhou. Desta forma, o usuário final nem percebe que houve uma falha e o ambiente ficou disponível todo o tempo. Por isto chamamos de alta disponibilidade e também sistema tolerante a falhas.
A configuração de servidores em cluster aumenta a disponibilidade de aplicações e geralmente são acompanhadas por um sistema de load balancing ou de hardware específico que vai distribuir as solicitações de forma balanceada ora para um servidor, ora para outro. Caso um servidor não esteja disponível quando uma solicitação é feita, o balanceador é capaz de encaminhar esta solicitação para outro servidor, de forma transparente ao usuário, sem que se perceba que um servidor se tornou indisponível.