Share via


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

  • 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.

  1. Inicie sesión en Azure Portal.

  2. Cree un grupo de recursos denominado cassandra-mi-multi-region:

    az group create --location eastus2 --name cassandra-mi-multi-region
    
  3. 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
    
  4. 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.

  5. 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
    
  6. 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.

  7. 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
    
  8. 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 y role 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

  1. 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
    
  2. 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
    
  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 en false. Para habilitar las zonas de disponibilidad, establezca esta opción en true. 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.

  4. 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 node-status \
       --cluster-name $clusterName \
       --resource-group $resourceGroupName
    
  5. 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};
    
  6. 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 datos dc-eastus2 ya tiene datos. En la CLI de Azure, ejecute el siguiente comando para ejecutar nodetool rebuild en cada nodo en el nuevo centro de datos dc-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:

  1. En el menú de la izquierda de Azure Portal, seleccione Grupos de recursos.
  2. En la lista, seleccione el grupo de recursos que creó para este inicio rápido.
  3. En el panel Información general del grupo de recursos, seleccione Eliminar grupo de recursos.
  4. 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.