Inicio rápido: Configuración de un clúster de varias regiones con Azure Managed Instance for Apache Cassandra
Azure Managed Instance for Apache Cassandra es un servicio totalmente administrado para clústeres de Apache Cassandra de código abierto puros. El servicio también permite invalidar las configuraciones, en función de las necesidades específicas de cada carga de trabajo, lo que permite la máxima flexibilidad y control cuando sea necesario.
En este inicio rápido se muestra cómo usar los comandos de la CLI de Azure para configurar un clúster de varias regiones en Azure.
Requisitos previos
Use el entorno de Bash en Azure Cloud Shell. Para más información, consulte Inicio rápido para Bash en Azure Cloud Shell.
Si prefiere ejecutar comandos de referencia de la CLI localmente, instale la CLI de Azure. Si utiliza Windows o macOS, considere la posibilidad de ejecutar la CLI de Azure en un contenedor Docker. Para más información, vea Ejecución de la CLI de Azure en un contenedor de Docker.
Si usa una instalación local, inicie sesión en la CLI de Azure mediante el comando az login. Siga los pasos que se muestran en el terminal para completar el proceso de autenticación. Para ver otras opciones de inicio de sesión, consulte Inicio de sesión con la CLI de Azure.
En caso de que se le solicite, instale las extensiones de la CLI de Azure la primera vez que la use. Para más información sobre las extensiones, consulte Uso de extensiones con la CLI de Azure.
Ejecute az version para buscar cuál es la versión y las bibliotecas dependientes que están instaladas. Para realizar la actualización a la versión más reciente, ejecute az upgrade.
Este artículo requiere la CLI de Azure 2.30.0 o una versión posterior. Si usa Azure Cloud Shell, ya está instalada la versión más reciente.
Azure Virtual Network con conectividad a su entorno autohospedado o local. Para obtener más información sobre cómo conectar entornos locales a Azure, consulte el artículo Conexión de una red local a Azure.
Configuración del entorno de red
Como todos los centros de datos aprovisionados con este servicio deben implementarse en subredes dedicadas mediante la inserción de red virtual, configure el emparejamiento de red adecuado antes de la implementación. Para este inicio rápido, cree un clúster con dos centros de datos en distintas regiones: Este de EE. UU. y Este de EE. UU. 2. En primer lugar, cree las redes virtuales de cada región.
Inicie sesión en Azure Portal.
Cree un grupo de recursos denominado cassandra-mi-multi-region:
az group create --location eastus2 --name cassandra-mi-multi-region
Cree la primera red virtual en Este de EE. UU. 2 con una subred dedicada:
az network vnet create \ --name vnetEastUs2 \ --location eastus2 \ --resource-group cassandra-mi-multi-region \ --address-prefix 10.0.0.0/16 \ --subnet-name dedicated-subnet
Cree la segunda red virtual en Este de EE. UU., también con una subred dedicada:
az network vnet create \ --name vnetEastUs \ --location eastus \ --resource-group cassandra-mi-multi-region \ --address-prefix 192.168.0.0/16 \ --subnet-name dedicated-subnet
Nota
Agregaremos explícitamente distintos intervalos de direcciones IP para garantizar que no se produzcan errores durante el emparejamiento.
Empareje la primera red virtual con la segunda:
az network vnet peering create \ --resource-group cassandra-mi-multi-region \ --name MyVnet1ToMyVnet2 \ --vnet-name vnetEastUs2 \ --remote-vnet vnetEastUs \ --allow-vnet-access \ --allow-forwarded-traffic
Para conectar las dos redes virtuales, cree otro emparejamiento entre la segunda red virtual y la primera:
az network vnet peering create \ --resource-group cassandra-mi-multi-region \ --name MyVnet2ToMyVnet1 \ --vnet-name vnetEastUs \ --remote-vnet vnetEastUs2 \ --allow-vnet-access \ --allow-forwarded-traffic
Nota
Si agrega más regiones, será necesario emparejar cada red virtual a todas las demás redes virtuales y viceversa.
Compruebe la salida del comando anterior. Asegúrese de que el valor de "peeringState" es ahora "Conectado". Otra manera de comprobar este resultado es ejecutar el comando siguiente:
az network vnet peering show \ --name MyVnet1ToMyVnet2 \ --resource-group cassandra-mi-multi-region \ --vnet-name vnetEastUs2 \ --query peeringState
Aplique algunos permisos especiales a ambas redes virtuales. Azure Managed Instance for Apache Cassandra requiere estos permisos. Ejecute el comando siguiente: Reemplace
<SubscriptionID>
por el identificador de suscripción:az role assignment create \ --assignee a232010e-820c-4083-83bb-3ace5fc29d0b \ --role 4d97b98b-1d4f-4787-a291-c67834d212e7 \ --scope /subscriptions/<SubscriptionID>/resourceGroups/cassandra-mi-multi-region/providers/Microsoft.Network/virtualNetworks/vnetEastUs2 az role assignment create \ --assignee a232010e-820c-4083-83bb-3ace5fc29d0b \ --role 4d97b98b-1d4f-4787-a291-c67834d212e7 \ --scope /subscriptions/<SubscriptionID>/resourceGroups/cassandra-mi-multi-region/providers/Microsoft.Network/virtualNetworks/vnetEastUs
Nota
Los valores
assignee
yrole
del comando anterior son fijos. Escriba estos valores exactamente como en el comando.
Si se producen errores al ejecutar az role assignment create
, es posible que no tenga permisos para ejecutarlo. Póngase en contacto con el administrador para obtener permisos.
Creación de un clúster de varias regiones
Implemente el recurso de clúster. Reemplace
<Subscription ID>
con el Id. de suscripción. La implementación puede tardar entre 5 y 10 minutos:resourceGroupName='cassandra-mi-multi-region' clusterName='test-multi-region' location='eastus2' delegatedManagementSubnetId='/subscriptions/<SubscriptionID>/resourceGroups/cassandra-mi-multi-region/providers/Microsoft.Network/virtualNetworks/vnetEastUs2/subnets/dedicated-subnet' initialCassandraAdminPassword='myPassword' az managed-cassandra cluster create \ --cluster-name $clusterName \ --resource-group $resourceGroupName \ --location $location \ --delegated-management-subnet-id $delegatedManagementSubnetId \ --initial-cassandra-admin-password $initialCassandraAdminPassword \ --debug
Después de crear el recurso de clúster, está listo para crear un centro de datos. En primer lugar, cree un centro de datos en Este de EE. UU. 2. Reemplace
<SubscriptionID>
con el Id. de suscripción. Esta acción puede tardar hasta 10 minutos:resourceGroupName='cassandra-mi-multi-region' clusterName='test-multi-region' dataCenterName='dc-eastus2' dataCenterLocation='eastus2' delegatedManagementSubnetId='/subscriptions/<SubscriptionID>/resourceGroups/cassandra-mi-multi-region/providers/Microsoft.Network/virtualNetworks/vnetEastUs2/subnets/dedicated-subnet' az managed-cassandra datacenter create \ --resource-group $resourceGroupName \ --cluster-name $clusterName \ --data-center-name $dataCenterName \ --data-center-location $dataCenterLocation \ --delegated-subnet-id $delegatedManagementSubnetId \ --node-count 3
Cree un centro de datos en Este de EE. UU. Reemplace
<SubscriptionID>
con el Id. de suscripción.resourceGroupName='cassandra-mi-multi-region' clusterName='test-multi-region' dataCenterName='dc-eastus' dataCenterLocation='eastus' delegatedManagementSubnetId='/subscriptions/<SubscriptionID>/resourceGroups/cassandra-mi-multi-region/providers/Microsoft.Network/virtualNetworks/vnetEastUs/subnets/dedicated-subnet' virtualMachineSKU='Standard_D8s_v4' noOfDisksPerNode=4 az managed-cassandra datacenter create \ --resource-group $resourceGroupName \ --cluster-name $clusterName \ --data-center-name $dataCenterName \ --data-center-location $dataCenterLocation \ --delegated-subnet-id $delegatedManagementSubnetId \ --node-count 3 --sku $virtualMachineSKU \ --disk-capacity $noOfDisksPerNode \ --availability-zone false
Nota
El valor de
--sku
se puede elegir entre las siguientes SKU disponibles:- Standard_E8s_v4
- Standard_E16s_v4
- Standard_E20s_v4
- Standard_E32s_v4
- Standard_DS13_v2
- Standard_DS14_v2
- Standard_D8s_v4
- Standard_D16s_v4
- Standard_D32s_v4
Tenga en cuenta también que
--availability-zone
está establecido enfalse
. Para habilitar las zonas de disponibilidad, establezca esta opción entrue
. Las zonas de disponibilidad aumentan el Acuerdo de Nivel de Servicio de disponibilidad del servicio. Para obtener más información, consulte SLA para Azure Managed Instance for Apache Cassandra.Advertencia
Las zonas de disponibilidad no se admiten en todas las regiones. Se producirá un error en las implementaciones si selecciona una región en la que no se admiten las zonas de disponibilidad. Para ver las regiones compatibles, consulte Regiones de Azure con zonas de disponibilidad.
La implementación correcta de las zonas de disponibilidad también depende de la disponibilidad de los recursos de proceso en todas las zonas de la región dada. Podría producirse un error en las implementaciones si la SKU que ha seleccionado o la capacidad no están disponibles en todas las zonas.
Una vez creado el segundo centro de datos, obtenga el estado del nodo para comprobar que todos los nodos de Cassandra funcionan correctamente:
resourceGroupName='cassandra-mi-multi-region' clusterName='test-multi-region' az managed-cassandra cluster status\ --cluster-name $clusterName \ --resource-group $resourceGroupName
Después, conecte el clúster mediante CQLSH y use la siguiente consulta de CQL para actualizar la estrategia de replicación de cada espacio de claves con el fin de incluir todos los centros de datos del clúster (las tablas del sistema se actualizarán automáticamente):
ALTER KEYSPACE "ks" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'dc-eastus2': 3, 'dc-eastus': 3};
Por último, si va a agregar un centro de datos a un clúster donde ya hay datos, deberá ejecutar
rebuild
para replicar los datos históricos. En este caso, se supone que el centro de datosdc-eastus2
ya tiene datos. En la CLI de Azure, ejecute el siguiente comando para ejecutarnodetool rebuild
en cada nodo en el nuevo centro de datosdc-eastus
. Reemplace<ip address>
por la dirección IP del nodo:az managed-cassandra cluster invoke-command \ --resource-group $resourceGroupName \ --cluster-name $clusterName \ --host <ip address> \ --command-name nodetool --arguments rebuild="" "dc-eastus2"=""
Advertencia
No debería permitir que los clientes de la aplicación escriban en el nuevo centro de datos hasta que haya aplicado los cambios de replicación del espacio de claves. De lo contrario, la recompilación no funcionará y deberá crear una solicitud de soporte técnico para que nuestro equipo pueda ejecutar
repair
en su nombre.
Solución de problemas
Si se produce un error al aplicar permisos a la red virtual mediante la CLI de Azure, puede aplicar el mismo permiso manualmente desde Azure Portal. Por ejemplo, podría indicarse un error similar al siguiente: No se encuentra el usuario o la entidad de servicio en la base de datos de grafos para "e5007d2c-4b13-4a74-9b6a-605d99f03501". Para obtener más información, consulte Uso de Azure Portal para agregar una entidad de servicio de Azure Cosmos DB.
Nota
La asignación de roles de Azure Cosmos DB se usa solo con fines de implementación. Azure Managed Instance for Apache Cassandra no tiene dependencias de back-end en Azure Cosmos DB.
Limpieza de recursos
Si no va a seguir usando este clúster de instancia administrada, elimínelo mediante los siguientes pasos:
- En el menú de la izquierda de Azure Portal, seleccione Grupos de recursos.
- En la lista, seleccione el grupo de recursos que creó para este inicio rápido.
- En el panel Información general del grupo de recursos, seleccione Eliminar grupo de recursos.
- En la ventana siguiente, escriba el nombre del grupo de recursos que desea eliminar y, después, seleccione Eliminar.
Pasos siguientes
En este inicio rápido, ha aprendido a crear un clúster de varias regiones con la CLI de Azure y Azure Managed Instance for Apache Cassandra. Ahora puede empezar a trabajar con el clúster.