Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Neste tutorial, você hospedará um aplicativo de inventário no AKS (Serviço de Kubernetes do Azure) e descobrirá como usar a replicação geográfica ativa para replicar dados nas suas instâncias do Azure Cache for Redis Enterprise ou Redis Gerenciado do Azure em regiões do Azure.
Pré-requisitos
- Uma assinatura do Azure. Caso não tenha uma assinatura do Azure, crie uma conta gratuita.
- Um cluster do Serviço de Kubernetes do Azure — para mais informações sobre como criar um cluster, confira Início rápido: Implantar um cluster do Serviço de Kubernetes do Azure (AKS) usando o portal do Azure. Como alternativa, é possível hospedar duas instâncias do aplicativo de demonstração em dois clusters diferentes do AKS. Em um ambiente de produção, você usaria dois clusters diferentes, localizados nas mesmas regiões dos seus clusters, para implantar duas versões do aplicativo. Neste tutorial, você implanta as duas instâncias do aplicativo no mesmo cluster do AKS.
Importante
Este tutorial pressupõe que você esteja familiarizado com conceitos básicos do Kubernetes, como contêineres, pods e serviço.
Visão geral
Este tutorial usa uma página de inventário de amostra que mostra três opções diferentes de camisetas. O usuário pode “comprar” cada camiseta e ver o inventário diminuir. O diferencial desta demonstração é que executamos o aplicativo de inventário em duas regiões diferentes. Normalmente, seria necessário executar o banco de dados que armazena os dados de inventário em uma única região, para evitar problemas de consistência. Com outros back-ends de banco de dados e sincronização, os clientes podem ter uma experiência ruim devido à latência maior nas chamadas entre diferentes regiões do Azure. Ao usar o Cache do Azure para Redis Enterprise como back-end, é possível vincular dois caches com replicação geográfica ativa, mantendo o inventário consistente entre as regiões e aproveitando o desempenho de baixa latência do Redis Enterprise na mesma região.
Configurar duas instâncias do Azure Redis
Crie uma nova instância do Cache do Azure para Redis Enterprise ou Redis Gerenciado do Azure na região Oeste dos EUA 2 usando o portal do Azure ou sua ferramenta de CLI preferida. Como alternativa, você pode usar qualquer região de sua preferência. Use o guia de início rápido para começar.
Na guia Avançado:
- Habilitar Acesso somente sem TLS.
- Definir Política de Clustering como Enterprise
- Configurar um novo grupo de replicação geográfica ativa usando este guia. Por fim, adicione ambos os caches ao mesmo grupo de replicação. Crie o nome do grupo com o primeiro cache e adicione o segundo cache ao mesmo grupo.
Importante
Este tutorial usa uma porta sem TLS para demonstração, mas recomendamos fortemente usar uma porta TLS em qualquer ambiente de produção.
Configurar outro Cache do Azure para Redis Enterprise na região Leste dos EUA, com a mesma configuração do primeiro cache. Como alternativa, você pode usar qualquer região de sua preferência. Certifique-se de escolher o mesmo grupo de replicação do primeiro cache.
Preparar arquivos de implantação do Kubernetes
Criar dois arquivos .yml seguindo o procedimento a seguir. Um arquivo para cada cache criado nas duas regiões.
Para demonstrar a replicação de dados entre regiões, executamos duas instâncias do mesmo aplicativo em regiões diferentes. Vamos fazer uma instância rodar em Seattle, no namespace oeste, e a segunda em Nova York, no namespace leste.
Namespace oeste
Atualizar os seguintes campos no arquivo YAML abaixo e salvá-lo como app_west.yaml.
- Atualizar a variável
REDIS_HOSTcom o valor do ponto de extremidade, removendo o sufixo da porta: 10000 - Atualizar
REDIS_PASSWORDcom a chave de acesso do seu cache na região Oeste dos EUA 2. - Atualizar
APP_LOCATIONpara exibir a região onde esta instância do aplicativo está em execução. Para este cache, configureAPP_LOCATIONcomoSeattlepara indicar que esta instância do aplicativo está em execução em Seattle. - Verificar se o valor da variável
namespaceéwestem ambos os locais do arquivo.
O código deve ficar assim:
apiVersion: apps/v1
kind: Deployment
metadata:
name: shoppingcart-app
namespace: west
spec:
replicas: 1
selector:
matchLabels:
app: shoppingcart
template:
metadata:
labels:
app: shoppingcart
spec:
containers:
- name: demoapp
image: mcr.microsoft.com/azure-redis-cache/redisactivereplicationdemo:latest
resources:
limits:
cpu: "0.5"
memory: "250Mi"
requests:
cpu: "0.5"
memory: "128Mi"
env:
- name: REDIS_HOST
value: "DemoWest.westus2.redisenterprise.cache.azure.net"
- name: REDIS_PASSWORD
value: "myaccesskey"
- name: REDIS_PORT
value: "10000" # redis enterprise port
- name: HTTP_PORT
value: "8080"
- name: APP_LOCATION
value: "Seattle, WA"
---
apiVersion: v1
kind: Service
metadata:
name: shoppingcart-svc
namespace: west
spec:
type: LoadBalancer
ports:
- protocol: TCP
port: 80
targetPort: 8080
selector:
app: shoppingcart
Namespace leste
Salvar outra cópia do mesmo arquivo YAML como app_east.yaml. Desta vez, use os valores correspondentes ao seu segundo cache.
- Atualize a variável
REDIS_HOSTcom o valor do ponto de extremidade, removendo o sufixo da porta: 10000 - Atualize
REDIS_PASSWORDcom a chave de acesso do seu cache na região Leste dos EUA. - Atualizar
APP_LOCATIONpara exibir a região onde esta instância do aplicativo está em execução. Para este cache, configureAPP_LOCATIONcomo Nova York para indicar que esta instância do aplicativo está em execução em Nova York. - Verificar se o valor da variável
namespaceéeastem ambos os locais do arquivo.
O código deve ficar assim:
apiVersion: apps/v1
kind: Deployment
metadata:
name: shoppingcart-app
namespace: east
spec:
replicas: 1
selector:
matchLabels:
app: shoppingcart
template:
metadata:
labels:
app: shoppingcart
spec:
containers:
- name: demoapp
image: mcr.microsoft.com/azure-redis-cache/redisactivereplicationdemo:latest
resources:
limits:
cpu: "0.5"
memory: "250Mi"
requests:
cpu: "0.5"
memory: "128Mi"
env:
- name: REDIS_HOST
value: "DemoEast.eastus.redisenterprise.cache.azure.net"
- name: REDIS_PASSWORD
value: "myaccesskey"
- name: REDIS_PORT
value: "10000" # redis enterprise port
- name: HTTP_PORT
value: "8080"
- name: APP_LOCATION
value: "New York, NY"
---
apiVersion: v1
kind: Service
metadata:
name: shoppingcart-svc
namespace: east
spec:
type: LoadBalancer
ports:
- protocol: TCP
port: 80
targetPort: 8080
selector:
app: shoppingcart
Instalar a CLI do Kubernetes e conectar-se ao seu cluster do AKS
Nesta seção, primeiro você instala a CLI do Kubernetes e, em seguida, conecta-se a um cluster do AKS.
Observação
Um cluster do Serviço de Kubernetes do Azure é necessário para este tutorial. Implante as duas instâncias do aplicativo no mesmo cluster do AKS.
Instalar a CLI Kubernetes
Use a CLI do Kubernetes, _kubectl, para conectar-se ao cluster do Kubernetes a partir do seu computador local. Se estiver executando localmente, use o seguinte comando para instalar o kubectl.
az aks install-cli
Se você usar o Azure Cloud Shell, o kubectl já estará instalado, e será possível ignorar essa etapa.
Conectar-se aos clusters do AKS em duas regiões
Usar o portal para copiar o grupo de recursos e o nome do cluster do seu cluster do AKS na região Oeste dos EUA 2. Para configurar o kubectl para conectar-se ao seu cluster do AKS, use o seguinte comando com seu grupo de recursos e nome do cluster:
az aks get-credentials --resource-group myResourceGroup --name myClusterName
Verifique se você consegue se conectar ao cluster executando o seguinte comando:
kubectl get nodes
Você deverá ver uma saída semelhante mostrando a lista de nós de cluster.
NAME STATUS ROLES AGE VERSION
aks-agentpool-21274953-vmss000001 Ready agent 1d v1.24.15
aks-agentpool-21274953-vmss000003 Ready agent 1d v1.24.15
aks-agentpool-21274953-vmss000006 Ready agent 1d v1.24.15
Implantar e testar o aplicativo
São necessários dois namespaces para que seus aplicativos sejam executados no cluster do AKS. Criar um namespace oeste e, em seguida, implantar o aplicativo.
Executar o seguinte comando para implantar a instância do aplicativo no seu cluster do AKS no namespace oeste:
kubectl create namespace west
kubectl apply -f app_west.yaml
Você obtém uma resposta indicando que sua implantação e serviço foram criados:
deployment.apps/shoppingcart-app created
service/shoppingcart-svc created
Para testar o aplicativo, execute o seguinte comando para marcar se o pod estiver em execução:
kubectl get pods -n west
Você verá seu pod em execução com êxito, como:
NAME READY STATUS RESTARTS AGE
shoppingcart-app-5fffdcb5cd-48bl5 1/1 Running 0 68s
Execute o seguinte comando para obter o ponto de extremidade do seu aplicativo:
kubectl get service -n west
Pode acontecer de EXTERNAL-IP ficar com status <pending> por alguns minutos. Continuar tentando até que o status seja substituído por um endereço IP.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
shoppingcart-svc LoadBalancer 10.0.166.147 20.69.136.105 80:30390/TCP 90s
Quando External-IP estiver disponível, abra um navegador da Web no endereço IP externo do seu serviço para ver o aplicativo.
Execute as mesmas etapas de implantação e implante uma instância do aplicativo de demonstração para execução na região Leste dos EUA.
kubectl create namespace east
kubectl apply -f app_east.yml
kubectl get pods -n east
kubectl get service -n east
Com cada um dos dois serviços abertos em um navegador, é possível ver que alterar o inventário em uma região se reflete quase instantaneamente na outra. Os dados de inventário são armazenados nas instâncias do Redis Enterprise que replicam os dados entre regiões.
Você conseguiu! Clicar nos botões e explorar a demonstração.
Para redefinir a contagem, adicione /reset após a URL:
<IP address>/reset
Limpar sua implantação
Para limpar o cluster, execute este comando:
kubectl delete deployment shoppingcart-app -n west
kubectl delete service shoppingcart-svc -n west
kubectl delete deployment shoppingcart-app -n east
kubectl delete service shoppingcart-svc -n east
Limpar os recursos
Se você quiser continuar a usar os recursos criados neste artigo, mantenha o grupo de recursos.
Caso contrário, se tiver terminado de usar os recursos, é possível excluir o grupo de recursos do Azure criado para evitar encargos.
Importante
A exclusão de um grupo de recursos é irreversível. Ao excluir o grupo de recursos, todos os recursos nele são excluídos permanentemente. Certifique-se de que não exclua acidentalmente o grupo de recursos ou os recursos incorretos. Se você criou os recursos dentro de um grupo de recursos existente que contém recursos que você deseja manter, é possível excluir cada recurso individualmente em vez de excluir o grupo de recursos.
Para excluir um grupo de recursos
Entre no portal do Azure e selecione Grupos de recursos.
Selecione o grupo de recursos que você quer excluir.
Se houver muitos grupos de recursos, use a caixa Filtrar por qualquer campo... digite o nome do grupo de recursos que você criou para este artigo. Selecione o grupo de recursos na lista de resultados.
Selecione Excluir grupo de recursos.
Você receberá uma solicitação para confirmar a exclusão do grupo de recursos. Digite o nome do grupo de recursos para confirmar e selecione Excluir.
Após alguns instantes, o grupo de recursos, e todos os recursos nele são excluídos.