Alta disponibilidade de máquinas virtuais

Olá pessoal,

Hoje vou falar um pouco sobre como manter alta disponibilidade de suas máquinas virtuais no Windows Azure. O primeiro ponto, é utilizar múltiplas máquinas virtuais para a mesma responsabilidade, por exemplo, utilizar mais de uma máquina como um Web Server na sua aplicação. Com isso, é possível manter a sua aplicação no ar mesmo em caso de falhas de hardware local, como uma falha de rede e disco, ou por algum downtime planejado para atualização da plataforma (sim, as máquinas físicas do Windows Azure também passam por processos de atualização).

Para permitir a alta disponibilidade de máquinas virtuais, foi criada uma funcionalidade chamada availability set, ou conjunto de disponibilidade na tradução para português. De maneira bastante resumida, o availability set é uma maneira de indicar para o Windows Azure não alocar as máquinas no mesmo ambiente físico, para evitar que uma falha de hardware afete todo o ambiente, o que é conhecido como fault domain, e também para não realizar manutenção ao mesmo tempo nos ambiente que as máquinas virtuais estiverem rodando, o que conhecido como Update Domain, ou UD na imagem abaixo.

Update domains

De modo à garantir a alta disponibilidade do ambiente web do meu cenário, é necessário configurar um availability set nos meus servidores de IIS e também balanceamento de carga entre essas máquinas para garantir que ambos atendam requisições dos usuários. Não vou entrar em detalhes sobre o ambiente de banco de dados com SQL Server, mas no geral seriam aplicados os mesmos conceitos, com exceção do balanceamento de carga já que o SQL Server não funciona desta maneira. Se você tiver curiosidade sobre o assunto, recomendo a seguinte documentação Alta disponibilidade e recuperação de desastres para o SQL Server em máquinas virtuais do Windows Azure.

Para configurar o availability set, o primeiro passo é criar uma máquina virtual. Na criação do primeiro web server, escolho a opção de criar uma máquina virtual autônoma e no último passo do wizard de criação escolho a opção de criar o availability set, conforme imagem abaixo:

 image

Na criação da segunda máquina, escolho a opção de conectar a máquina à uma máquina existente

image

E no último passo do wizard de criação de máquina escolher um conjunto de disponibilidade existente

image

Se vc já criou as máquinas virtuais mas não fez a configuração de availability sets, ainda assim é possível realizar a configuração. Basta ir na aba configurar da máquina virtual, conforme abaixo:

image

Agora, para habilitar o balanceamento de carga, é necessário adicionar o mesmo ponto de extremidade (endpoint) nas duas máquinas para fazê-lo ser respondido através do load balancer. Na primeira máquina, adicione o ponto de extremidade, conforme telas abaixo:

image

E

image

Agora na segunda máquina, ao adicionar um novo ponto de extremidade é possível escolher a opção de balanceamento de carga:

image

Abraços,

RG