Configurar a georreplicação ativa para instâncias do Azure Managed Redis (pré-visualização)
Neste artigo, você aprenderá a configurar um cache replicado geograficamente ativo usando o portal do Azure.
A georreplicação ativa agrupa até cinco instâncias do Azure Managed Redis (pré-visualização) numa única cache que abrange as regiões do Azure. Todas as instâncias atuam como caches locais e principais. Uma aplicação decide qual a instância ou instâncias a utilizar para os pedidos de leitura e escrita.
Nota
A transferência de dados entre regiões do Azure é cobrada a taxas de largura de banda padrão.
Como funciona a replicação geográfica ativa
A replicação geográfica ativa usa CRDTs (tipos de dados replicados sem conflitos) para distribuir dados perfeitamente entre instâncias Redis que podem ser distribuídos entre continentes. Essas instâncias são conectadas em uma configuração ativa-ativa, onde as gravações em uma instância são refletidas automaticamente nas outras instâncias do mesmo grupo de replicação geográfica. Essa replicação de dados bidirecional difere das abordagens de replicação ativo-passiva unidirecional, em que os dados são replicados da réplica primária para uma réplica geográfica, mas não da outra direção. Esta é uma ferramenta poderosa que é comumente usada de várias maneiras:
- Fornecer latência local distribuindo o cache mais perto dos usuários. Usando uma rede de instâncias Redis ativas replicadas geograficamente, você pode colocar caches geograficamente mais próximos dos usuários em cada região, reduzindo a latência e melhorando o desempenho do aplicativo.
- Sincronização de aplicações globais. Como os caches replicados geograficamente aparecem como uma única instância do Redis, você pode distribuir dados globalmente sem precisar segmentar dados por regiões. Por exemplo, você pode usar um único conjunto de classificação Redis para fornecer uma tabela de classificação de jogos para todos os usuários em todo o mundo, em vez de fornecer uma tabela de classificação separada para cada região geográfica.
- Reduzir o tempo de inatividade e o risco de interrupções regionais. Como cada instância do Redis no grupo de replicação geográfica está sendo constantemente atualizada com os dados mais recentes das outras instâncias do grupo, os dados são bem preservados no caso de uma interrupção regional. Os aplicativos podem alternar temporariamente para usar uma das outras instâncias do grupo e, quando a região voltar a ficar online, a instância do Redis será automaticamente recarregada com dados de outros caches replicados geograficamente.
Para obter um detalhamento mais detalhado de como funciona a replicação geográfica ativa, consulte Distribuição geográfica ativa-ativa (baseada em CRDTS)
Âmbito da disponibilidade
Escalão de serviço | Otimizada para memória, Equilibrada, Otimizada para computação | Otimizada para Flash |
---|---|---|
Disponível | Sim (exceto B0 e B1) | Sim |
Importante
As SKU Equilibradas B0 e B1 não suportam a georreplicação ativa.
Pré-requisitos de georreplicação ativa
Existem algumas restrições quando se utiliza a georreplicação ativa:
- A georreplicação ativa apenas é suportada quando o Azure Managed Redis está numa configuração de elevada disponibilidade (ou seja, está a utilizar replicação).
- Apenas são suportados os módulos RediSearch e RedisJSON
- No escalão Otimizada para Flash, apenas pode ser utilizada a política de expulsão Nenhuma Expulsão. Todas as políticas de expulsão são suportadas nos outros escalões.
- A persistência de dados não é suportada porque a georreplicação ativa proporciona uma experiência superior.
- Todas as caches num grupo de georreplicação devem ter a mesma configuração. Por exemplo, todas as caches têm de ter a mesma SKU, capacidade, política de expulsão, política de agrupamento, módulos e definição do TLS.
- Se uma instância em um grupo de replicação geográfica for dimensionada, as outras instâncias desse grupo deverão ser dimensionadas para o mesmo tamanho antes que qualquer dimensionamento adicional possa ocorrer. Consulte Dimensionamento de instâncias num grupo de georreplicação para obter mais informações.
- Não pode utilizar os comandos
FLUSHALL
eFLUSHDB
do Redis quando utilizar a georreplicação ativa. A proibição dos comandos evita a eliminação não intencional de dados. Em vez disso, utilize a operação de remoção.
Criar ou associar um grupo de georreplicação ativa
Ao criar um novo recurso do Azure Managed Redis, selecione a opção Avançadas. Preencha a primeira parte do formulário, incluindo a política de agrupamento. Para mais informações sobre como escolher a Política de agrupamento, consulte Agrupamento no Azure Managed Redis.
Selecione Configurar para configurar a georreplicação ativa.
Crie um novo grupo de replicação para uma primeira instância de cache. Ou, selecione uma existente da lista.
Selecione Configurar para concluir.
Aguarde até que a primeira cache seja criado com êxito. Quando terminar, irá ver Configurado definido como Georreplicação ativa. Repita os passos acima para cada instância de cache no grupo de georreplicação.
Adicionar uma instância existente a um grupo de georreplicação ativa
Para adicionar uma instância de cache existente a um grupo de georreplicação ativa, pode utilizar a API REST para executar uma ação de associação forçada.
Todos os dados na instância de cache que está a ser ligada serão eliminados. A instância também ficará temporariamente indisponível durante vários minutos enquanto se associa ao grupo de georreplicação. O suporte do portal e da CLI ainda não está disponível para esta funcionalidade.
Remover de um grupo de georreplicação ativa
Para remover uma instância de cache de um grupo de georreplicação ativa, basta eliminar a instância. As restantes instâncias reconfiguram-se então automaticamente.
Forçar a desassociaçao se existir uma indisponibilidade na região
A georreplicação ativa é uma funcionalidade poderosa para aumentar drasticamente a disponibilidade ao utilizar o Azure Managed Redis. No entanto, deve tomar medidas para preparar as suas caches no caso de indisponibilidade regional.
Por exemplo, considere estas sugestões:
- Identifique antecipadamente qual a outra cache do grupo de georreplicação para a qual se deve mudar no caso de indisponibilidade de uma região.
- Certifique-se de que as firewalls estão definidas de modo a que quaisquer aplicações e clientes possam aceder à cache da cópia de segurança identificada.
- Cada cache do grupo de georreplicação tem a sua própria chave de acesso. Determine como a aplicação muda para chaves de acesso diferentes ao visar uma cache da cópia de segurança.
- Se uma cache do grupo de georreplicação ficar inativa, começa a ocorrer uma acumulação de metadados em todas as caches do grupo de georreplicação. Os metadados não podem ser eliminados até que as gravações possam ser sincronizadas novamente em todas as caches. Pode evitar a acumulação de metadados forçando a desassociação da cache que está inativa. Considere monitorizar a memória disponível na cache e desassociar se existir pressão da memória, especialmente para cargas de trabalho de escrita intensiva.
Também é possível utilizar um padrão de disjuntor. Utilize o padrão para redirecionar automaticamente o tráfego de uma cache com indisponibilidade numa região para uma cache da cópia de segurança no mesmo grupo de georreplicação. Utilize os serviços do Azure, tais como Gestor de Tráfego do Azure ou Balanceador de Carga do Azure para ativar o redirecionamento.
No caso de uma das caches do seu grupo de replicação estar indisponível devido a uma indisponibilidade na região, pode forçar a remoção da cache indisponível do grupo de replicação.
Deve remover a cache indisponível porque as restantes caches do grupo de replicação começam a armazenar os metadados que não foram partilhados com a cache indisponível. Quando isto acontece, as caches disponíveis no seu grupo de replicação podem ficar sem memória.
Aceda ao portal do Azure e selecione uma das caches no grupo de replicação que ainda está disponível.
Selecione a georreplicação ativa no menu Recursos no lado esquerdo para ver as definições no painel de trabalho.
Selecione a cache na qual necessita de forçar a desassociação, marcando a caixa.
Selecione Forçar desassociação e, em seguida, OK para confirmar.
Quando a disponibilidade da região afetada for restaurada, tem de eliminar a cache afetada e recriá-la para a adicionar novamente ao grupo de replicação.
Configurar a georreplicação ativa utilizando a CLI do Azure ou o PowerShell
CLI do Azure
Utilize a CLI do Azure para criar uma nova cache e um grupo de georreplicação, ou para adicionar uma nova cache a um grupo de georreplicação existente. Para obter mais informações, consulte criar az redisenterprise.
Criar uma nova instância do Azure Managed Redis num novo grupo de georreplicação utilizando a CLI do Azure
Este exemplo cria uma nova instância Equilibrada B10 do Azure Managed Redis chamada Cache1 na região EUA Leste. Em seguida, a cache é adicionada a um novo grupo de georreplicação ativa chamado replicationGroup:
az redisenterprise create --location "East US" --cluster-name "Cache1" --sku "Balanced_B10" --resource-group "myResourceGroup" --group-nickname "replicationGroup" --linked-databases id="/subscriptions/34b6ecbd-ab5c-4768-b0b8-bf587aba80f6/resourceGroups/myResourceGroup/providers/Microsoft.Cache/redisEnterprise/Cache1/databases/default"
Para configurar corretamente a georreplicação ativa, o ID da instância de cache que está a ser criada deve ser adicionado com o parâmetro --linked-databases
. O ID está no formato:
/subscriptions/<your-subscription-ID>/resourceGroups/<your-resource-group-name>/providers/Microsoft.Cache/redisEnterprise/<your-cache-name>/databases/default
Criar uma nova instância do Azure Managed Redis num grupo de georreplicação existente utilizando a CLI do Azure
Este exemplo cria uma nova instância de cache Equilibrada B10 chamada Cache2 na região EUA Oeste. Em seguida, o script adiciona a cache ao replicationGroup
grupo de georreplicação ativa criado num procedimento anterior. Desta forma, está associado numa configuração ativo-ativo com Cache1.
az redisenterprise create --location "West US" --cluster-name "Cache2" --sku "Balanced_B10" --resource-group "myResourceGroup" --group-nickname "replicationGroup" --linked-databases id="/subscriptions/34b6ecbd-ab5c-4768-b0b8-bf587aba80f6/resourceGroups/myResourceGroup/providers/Microsoft.Cache/redisEnterprise/Cache1/databases/default" --linked-databases id="/subscriptions/34b6ecbd-ab5c-4768-b0b8-bf587aba80f6/resourceGroups/myResourceGroup/providers/Microsoft.Cache/redisEnterprise/Cache2/databases/default"
Tal como anteriormente, tem de listar a Cache1 e Cache2 utilizando o parâmetro --linked-databases
.
Azure PowerShell
Utilize o Azure PowerShell para criar uma nova cache e um grupo de georreplicação, ou para adicionar uma nova cache a um grupo de georreplicação existente. Para obter mais informações, consulte New-AzRedisEnterpriseCache.
Criar uma nova instância do Azure Managed Redis num novo grupo de georreplicação utilizando o PowerShell
Este exemplo cria uma nova instância de cache Equilibrada B10 do Azure Managed Redis chamada Cache1 na região EUA Leste. Em seguida, a cache é adicionada a um novo grupo de georreplicação ativa chamado replicationGroup:
New-AzRedisEnterpriseCache -Name "Cache1" -ResourceGroupName "myResourceGroup" -Location "East US" -Sku "Balanced_B10" -GroupNickname "replicationGroup" -LinkedDatabase '{id:"/subscriptions/34b6ecbd-ab5c-4768-b0b8-bf587aba80f6/resourceGroups/myResourceGroup/providers/Microsoft.Cache/redisEnterprise/Cache1/databases/default"}'
Para configurar corretamente a georreplicação ativa, o ID da instância de cache que está a ser criada deve ser adicionado com o parâmetro -LinkedDatabase
. O ID está no formato:
/subscriptions/<your-subscription-ID>/resourceGroups/<your-resource-group-name>/providers/Microsoft.Cache/redisEnterprise/<your-cache-name>/databases/default
Criar uma nova instância do Azure Managed Redis num grupo de georreplicação existente utilizando o PowerShell
Este exemplo cria uma nova instância de cache Equilibrada B10 chamada Cache2 na região EUA Oeste. Em seguida, o script adiciona a cache ao grupo de georreplicação ativa, "replicationGroup", criado no procedimento anterior. O resultado são as duas caches, Cache1 e Cache2, associadas numa configuração ativo-ativo.
New-AzRedisEnterpriseCache -Name "Cache2" -ResourceGroupName "myResourceGroup" -Location "West US" -Sku "Balanced_B10" -GroupNickname "replicationGroup" -LinkedDatabase '{id:"/subscriptions/34b6ecbd-ab5c-4768-b0b8-bf587aba80f6/resourceGroups/myResourceGroup/providers/Microsoft.Cache/redisEnterprise/Cache1/databases/default"}', '{id:"/subscriptions/34b6ecbd-ab5c-4768-b0b8-bf587aba80f6/resourceGroups/myResourceGroup/providers/Microsoft.Cache/redisEnterprise/Cache2/databases/default"}'
Tal como anteriormente, tem de listar a Cache1 e Cache2 utilizando o parâmetro -LinkedDatabase
.
Dimensionamento de instâncias num grupo de georreplicação
É possível dimensionar instâncias que estão configuradas para utilizar a georreplicação ativa. No entanto, um grupo de georreplicação com uma mistura de diferentes tamanhos de cache pode criar problemas. Para evitar que estes problemas ocorram, todas as caches num grupo de georreplicação têm de ter o mesmo tamanho e escalão de desempenho.
Uma vez que o dimensionamento requer a alteração do tamanho ou do escalão e é difícil dimensionar simultaneamente todas as instâncias no grupo de georreplicação, o Azure Managed Redis tem um mecanismo de bloqueio. Se dimensionar uma instância num grupo de georreplicação, a VM subjacente será dimensionada, mas a memória disponível será limitada ao tamanho original até que as outras instâncias também sejam dimensionadas. E quaisquer outras operações de dimensionamento para as instâncias restantes são bloqueadas até que correspondam à mesma configuração da primeira cache a ser dimensionada.
Exemplo de dimensionamento
Por exemplo, pode ter três instâncias no seu grupo de georreplicação, todas instâncias M10 otimizadas para memória:
Nome da Instância | Redis00 | Redis01 | Redis02 |
---|---|---|---|
Type | M10 Otimizada para Memória | M10 Otimizada para Memória | M10 Otimizada para Memória |
Digamos que pretende dimensionar cada instância neste grupo de georreplicação para uma instância X20 otimizada para computação. Primeiro, tem de dimensionar uma das caches para uma X20:
Nome da Instância | Redis00 | Redis01 | Redis02 |
---|---|---|---|
Type | X20 Otimizada para Computação | M10 Otimizada para Memória | M10 Otimizada para Memória |
Neste ponto, as instâncias Redis01
e Redis02
apenas podem dimensionar uma instância X20 Otimizada para Computação. Todas as outras operações de dimensionamento são bloqueadas.
Nota
A instância Redis00
não está impedida de ser mais dimensionada neste momento. Mas será bloqueada quando for dimensionada Redis01
ou Redis02
para ser uma X20 Otimizada para Computação.
Quando cada instância tiver sido dimensionada para o mesmo escalão e tamanho, todos os bloqueios de dimensionamento são removidos:
Nome da Instância | Redis00 | Redis01 | Redis02 |
---|---|---|---|
Type | X20 Otimizada para Computação | X20 Otimizada para Computação | X20 Otimizada para Computação |
Operação de limpeza
Devido à possibilidade de perda inadvertida de dados, não é possível utilizar os comandos FLUSHALL
e FLUSHDB
do Redis com qualquer instância de cache que resida num grupo de georreplicação. Em vez disso, utilize o botão Limpar Cache(s) localizado na parte superior do painel de trabalho Georreplicação ativa.
Limpar caches utilizando a CLI do Azure ou o PowerShell
A CLI do Azure e o PowerShell também podem ser utilizados para ativar uma operação de limpeza. Para obter mais informações sobre como utilizar a CLI do Azure, consulte limpar base de dados az redisenterprise. Para obter mais informações sobre como utilizar o PowerShell, consulte Invoke-AzRedisEnterpriseCacheDatabaseFlush.
Importante
Tenha cuidado ao utilizar a funcionalidade Limpar Caches. Selecionar o botão remove todos os dados da cache atual e de TODAS as caches associadas no grupo de georreplicação.
Faça a gestão do acesso à funcionalidade utilizando Controlo de acesso baseado em funções do Azure. Apenas os utilizadores autorizados devem ter acesso para limpar todas as caches.