Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tutorial, hospedará una aplicación de inventario en Azure Kubernetes Service (AKS) y averiguará cómo puede usar la replicación geográfica activa para replicar datos en las instancias de Azure Cache for Redis Enterprise o Azure Managed Redis entre regiones de Azure.
Prerrequisitos
- Una suscripción de Azure. Si no tiene una suscripción a Azure, cree una cuenta gratuita.
- Un clúster de Azure Kubernetes Service: para más información sobre cómo crear un clúster, consulte Inicio rápido: Implementación de un clúster de Azure Kubernetes Service (AKS) mediante Azure Portal. Como alternativa, puede hospedar dos instancias de la aplicación de demostración en los dos clústeres de AKS diferentes. En un entorno de producción, usaría dos clústeres diferentes ubicados en las mismas regiones que sus clústeres para implementar dos versiones de la aplicación. En este tutorial, implementará ambas instancias de la aplicación en el mismo clúster de AKS.
Importante
En este tutorial se supone que está familiarizado con conceptos básicos de Kubernetes, como contenedores, pods y servicio.
Información general
En este tutorial se usa una página de inventario de ejemplo que muestra tres opciones de camiseta diferentes. El usuario puede "comprar" cada camiseta y ver la eliminación del inventario. Lo singular de esta demostración es que ejecutamos la aplicación de inventario en dos regiones diferentes. Normalmente, tendría que ejecutar la base de datos que almacena los datos de inventario en una sola región para que no haya problemas de coherencia. Con otros back-end de base de datos y sincronización, es posible que los clientes tengan una experiencia desagradable debido a una mayor latencia para las llamadas en diferentes regiones de Azure. Al usar Azure Cache for Redis Enterprise como back-end, puede vincular dos cachés junto con la replicación geográfica activa para que el inventario siga siendo coherente en ambas regiones mientras disfruta del rendimiento de baja latencia de Redis Enterprise en la misma región.
Configure dos instancias de Azure Redis
Cree una nueva instancia de Azure Cache for Redis Enterprise o Azure Managed Redis en la región Oeste de EE. UU. 2 mediante Azure Portal o la herramienta de la CLI preferida. Como alternativa, puede usar cualquier región de su elección. Use la guía de inicio rápido para empezar.
En la pestaña Avanzado:
- Habilitar Solo acceso sin TLS.
- Establezca Directivas de clúster en Enterprise
- Configure un nuevo grupo de replicación geográfica activa mediante esta guía. Finalmente, agregará ambas memorias caché al mismo grupo de replicación. Cree el nombre del grupo con la primera caché y agregue la segunda caché al mismo grupo.
Importante
En este tutorial se usa un puerto que no es TLS para la demostración, pero se recomienda encarecidamente usar un puerto TLS para cualquier cosa en producción.
Configure otra Azure Cache for Redis Enterprise en la región Este de EE. UU. con la misma configuración que la primera caché. Como alternativa, puede usar cualquier región de su elección. Asegúrese de elegir el mismo grupo de replicación que la primera caché.
Preparación de archivos de implementación de Kubernetes
Cree dos archivos .yml mediante el procedimiento siguiente. Un archivo para cada caché que creó en las dos regiones.
Para demostrar la replicación de datos entre regiones, ejecutamos dos instancias de la misma aplicación en regiones diferentes. Vamos a hacer que una instancia se ejecute en Seattle, espacio de nombres oeste, mientras que la segunda se ejecuta en Nueva York, espacio de nombres este.
Espacio de nombres oeste
Actualice los siguientes campos en el siguiente archivo YAML y guárdelo como app_west.yaml.
- Actualice la variable
REDIS_HOST
con la dirección URL del valor del punto de conexión después de quitar el sufijo de puerto: 10000 - Actualice
REDIS_PASSWORD
con la clave de acceso de la caché Oeste de EE. UU. 2. - Actualice
APP_LOCATION
para mostrar la región en la que se está ejecutando esta instancia de aplicación. Para esta caché, configureAPP_LOCATION
enSeattle
para indicar que esta instancia de aplicación se está ejecutando en Seattle. - Compruebe que el valor de la variable
namespace
eswest
en ambos lugares del archivo.
Debería ser similar al código siguiente:
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
Espacio de nombres este
Guarde otra copia del mismo archivo YAML como app_east.yaml. Esta vez, use los valores correspondientes a la segunda memoria caché.
- Actualice la variable
REDIS_HOST
con el valor del punto de conexión después de quitar el sufijo de puerto: 10000 - Actualice
REDIS_PASSWORD
con la clave de acceso de la caché Este de EE. UU. 2. - Actualice
APP_LOCATION
para mostrar la región en la que se está ejecutando esta instancia de aplicación. Para esta caché, configureAPP_LOCATION
en Nueva York para indicar que esta instancia de aplicación se ejecuta en Nueva York. - Compruebe que el valor de la variable
namespace
eseast
en ambos lugares del archivo.
Debería ser similar al código siguiente:
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
Instalación de la CLI de Kubernetes y conexión al clúster de AKS
En esta sección, primero instalará la CLI de Kubernetes y, después, se conectará a un clúster de AKS.
Nota:
Se requiere un clúster de Azure Kubernetes Service para este tutorial. Las dos instancias de la aplicación se implementan en el mismo clúster de AKS.
Instalación de la CLI de Kubernetes
Use la CLI de Kubernetes, _kubectl, para conectarse al clúster de Kubernetes desde la máquina local. Si se ejecuta localmente, puede usar el siguiente comando para instalar kubectl.
az aks install-cli
Si usa Azure Cloud Shell, kubectl ya está instalado y puede omitir este paso.
Conexión a los clústeres de AKS en dos regiones
Use el portal para copiar el grupo de recursos y el nombre del clúster de AKS en la región Oeste de EE. UU. 2. Para configurar kubectl para que se conecte a su clúster AKS, use el siguiente comando con su grupo de recursos y nombre de clúster:
az aks get-credentials --resource-group myResourceGroup --name myClusterName
Para comprobar que puede conectarse al clúster, ejecute el siguiente comando:
kubectl get nodes
Debería ver una salida similar en la que se muestra la lista de los nodos del clúster.
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
Implementación y prueba de la aplicación
Necesita dos espacios de nombres para que las aplicaciones se ejecuten en el clúster de AKS. Cree un oeste y, a continuación, implemente la aplicación.
Ejecute el siguiente comando para implementar la instancia de aplicación en el clúster de AKS en el espacio de nombres oeste :
kubectl create namespace west
kubectl apply -f app_west.yaml
Recibirá una respuesta que indica que se ha creado la implementación y el servicio:
deployment.apps/shoppingcart-app created
service/shoppingcart-svc created
Para probar la aplicación, ejecute el siguiente comando para comprobar si el pod se está ejecutando:
kubectl get pods -n west
Verá que el pod se ejecuta correctamente como:
NAME READY STATUS RESTARTS AGE
shoppingcart-app-5fffdcb5cd-48bl5 1/1 Running 0 68s
Ejecute el siguiente comando para obtener el punto de conexión de la aplicación:
kubectl get service -n west
Es posible que vea que EXTERNAL-IP tiene el estado <pending>
durante unos minutos. Siga reintentando hasta que el estado sea reemplazado por una dirección 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
Una vez que la IP externa esté disponible, abra un explorador web en la dirección IP externa de su servicio y verá la aplicación.
Ejecute los mismos pasos de implementación e implemente una instancia de la aplicación de demostración para que se ejecute en la región Este de EE. UU.
kubectl create namespace east
kubectl apply -f app_east.yml
kubectl get pods -n east
kubectl get service -n east
Con cada uno de los dos servicios abiertos en un explorador, verá que el cambio del inventario en una región se refleja casi al instante en la otra región. Los datos de inventario se almacenan en las instancias de Redis Enterprise que replican datos entre regiones.
Lo ha conseguido. Haga clic en los botones y explore la demostración.
Para restablecer el recuento, agregue /reset
después de la dirección URL:
<IP address>/reset
Limpieza de la implementación
Para limpiar el clúster, ejecute el comando siguiente:
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
Limpieza de recursos
Si desea seguir usando los recursos que creó en este artículo, mantenga el grupo de recursos.
De lo contrario, si ya ha terminado con los recursos, puede eliminar el grupo de recursos de Azure que ha creado para evitar cargos.
Importante
La eliminación de un grupo de recursos es irreversible. Cuando elimine un grupo de recursos, todos los recursos contenidos en él se eliminan permanentemente. Asegúrese de no eliminar por accidente el grupo de recursos o los recursos equivocados. Si ha creado los recursos en un grupo de recursos existente que contiene recursos que desea conservar, puede eliminar cada recurso individualmente en lugar de eliminar el grupo de recursos.
Para eliminar un grupo de recursos
Inicie sesión en Azure Portal y después seleccione Grupos de recursos.
Seleccione el grupo de recursos que desea eliminar.
Si hay muchos grupos de recursos, use el cuadro Filtro para cualquier campo... y escriba el nombre del grupo de recursos que creó para este artículo. Seleccione el grupo de recursos en la lista de resultados.
Seleccione Eliminar grupo de recursos.
Se le pedirá que confirme la eliminación del grupo de recursos. Escriba el nombre del grupo de recursos para confirmar y, después, seleccione Eliminar.
Transcurridos unos instantes, el grupo de recursos y todos sus recursos se eliminan.