Este documento resume as opções de alta disponibilidade e failover no HornetQ, incluindo replicação de dados e armazenamento compartilhado. A replicação de dados replica journals de um servidor para outro de forma assíncrona, enquanto o armazenamento compartilhado usa um diretório comum acessível por ambos os servidores.
2. Agenda
• Alta Disponibilidade e Failover
– Overview
– Modos de Alta Disponibilidade
– Configuração – Replicação de Dados
– Configuração – Armazenamento Compartilhado
3. Alta Disponibilidade e Failover
• Overview
– Alta disponibilidade é a capacidade de um sistema
continuar funcionando depois da falha de um ou mais
servidores.
– Failover é uma característica da alta disponibilidade
que pode ser definida como a capacidade dos clientes
migrarem de um servidor para o outro depois de um
evento de falha e continuarem funcionando.
– O HornetQ suporta alta disponibilidade com o
mecanismo de Live – Backup Pair.
– É possível configura um servidor de Backup por
servidor Live.
4. Alta Disponibilidade e Failover
• Overview
– No modelo Live Backup – Pair o servidor de backup
torna-se ativo quando o cliente falha na comunicação
com o servidor principal, ativando assim, o servidor
de backup.
5. Alta Disponibilidade e Failover
• Modos de Alta Disponibilidade
– O HornetQ fornece dois modelos de alta
disponibilidade, são eles:
• Replicação de Dados
• Armazenamento Compartilhado
Apenas mensagens persistentes sobreviverão a falhas.
6. Alta Disponibilidade e Failover
• Modos de Alta Disponibilidade
– Replicação de Dados
• Os journals são replicados de um servidor para o outro.
• Apenas os journals e outras operações persistentes
serão replicadas.
• A replicação acontece de forma assíncrona entre o
servidor live o backup.
• Do lado do cliente, quando ele é informado que uma
transação foi confirmada ou desfeita, é garantido que a
mensagens alcançou o servidor de backup.
7. Alta Disponibilidade e Failover
• Modos de Alta Disponibilidade
– Replicação de Dados
• Um ponto negativo desse modelo é o overhead
causado pelas operações de replicação.
• Em contrapartida esse modelo é mais rápido que o
Shared Store, uma vez que os journals não precisam ser
carregados quando um evento de falha ocorrer.
8. Alta Disponibilidade e Failover
• Modos de Alta Disponibilidade
– Replicação de Dados
Pipelines de replicação e
respostas são assíncronos,
permitindo uma melhor
performance.
9. Alta Disponibilidade e Failover
• Modos de Alta Disponibilidade
– Armazenamento Compartilhado
• Nesse modelo os servidores Live e Backup
compartilham os mesmo diretórios de dados.
• Quando uma falha ocorre o servidor de backup assume,
carregando os dados do diretório compartilhado.
• É necessário que haja um diretório comum acessível
tanto pelo servidor Live quanto pelo de Backup.
10. Alta Disponibilidade e Failover
• Modos de Alta Disponibilidade
– Armazenamento Compartilhado
• É aconselhável o uso de um mecanismo de
armazenamento de alta performance.
• Os desenvolvedores do produto não recomendam o
uso do NAS – Network Attached Storage e nem do NFS
por serem lentos.
• Uma grande vantagem desse modelo é que não existe
penalidade na performance por não haver necessidade
de replicação de dados.
• A desvantagem é que o servidor ao ser ativado
necessita carregar os dados compartilhados, podendo
sofrer lentidão dependendo do volume dos journals.
11. Alta Disponibilidade e Failover
• Modos de Alta Disponibilidade
– Armazenamento Compartilhado
É necessário utilizar um
mecanismo de
compartilhamento de alta
performance para que não haja
penalidade nas operações.
12. Alta Disponibilidade e Failover
• Configuração – Replicação de Dados
– Configuração do servidor Live
• No arquivo hornet-configuration.xml criar um novo
<connector> associando-o ao servidor de backup.
• No arquivo hornet-configuration.xml criar e associar um
elemento <backup-connector-ref> ao <connector> criado no
passo anterior.
– Configuração do servidor de Backup
• No arquivo hornetq-configuration.xml criar um novo
<acceptor>.
• No arquivo hornetq-configuration.xml configurar os
elementos <backup> para true e <shared-store> para false.
13. Alta Disponibilidade e Failover
• Configuração – Replicação de Dados
– Configuração do servidor Live
– Configuração do servidor de Backup
14. Alta Disponibilidade e Failover
• Configuração – Armazenamento Compartilhado
– Configuração do servidor Live
• No arquivo hornet-configuration.xml criar e configurar o
elemento <shared-store> para true.
– Configuração do servidor de Backup
• No arquivo hornetq-configuration.xml criar e configurar o
elemento <backup> para true.
Os elementos <paging-directory>, <bindings-directory>, <journal-directory> e <large-messagesdirectory> devem ser configurando para o mesmo local.
15. Alta Disponibilidade e Failover
• Configuração – Armazenamento Compartilhado
– Configuração do servidor Live
– Configuração do servidor de Backup