Compartir a través de


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, para lograr la máxima flexibilidad y control.

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

  • En este artículo se requiere la versión 2.30.0 o posterior de la CLI de Azure. Si usa Azure Cloud Shell, ya está instalada la versión más reciente.
  • Use una red virtual de Azure con conectividad con el entorno autohospedado o local. Para más información sobre cómo conectar entornos locales a Azure, consulte Conexión de una red local a Azure.

Configuración del entorno de red

Dado que 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
    

    Agregamos explícitamente intervalos de direcciones IP diferentes para asegurarnos de que no hay errores con el emparejamiento.

  5. Conectar la primera red virtual a la segunda red virtual:

    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
    

    Si agrega más regiones, cada red virtual requiere emparejamiento desde ella hacia todas las demás redes virtuales, y desde todas las demás redes virtuales hacia ella.

  7. Compruebe la salida del comando anterior. Asegúrese de que el valor de peeringState es ahora Connected. 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 siguiente comando: 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
    

    Los valores assignee y role del comando anterior son fijos. Escriba estos valores exactamente como se muestra 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. Una vez creado 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> por el identificador 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
    

    Puede elegir el valor de --sku de los siguientes niveles de producto 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 zonas de disponibilidad, establézcala en true. Las zonas de disponibilidad aumentan el acuerdo de nivel de servicio (SLA) de disponibilidad del servicio. Para más información, consulte Contratos de nivel de servicio para Azure Managed Instance para Apache Cassandra.

    Las Availability zones no se admiten en todas las regiones. Se produce 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 zonas de disponibilidad también está sujeta a la disponibilidad de los recursos de proceso en todas las zonas de la región específica. Es posible que se produzca un error en las implementaciones si el nivel de producto seleccionado o la capacidad no está disponible en todas las zonas.

  4. Una vez creado el segundo centro de datos, obtenga el estado del nodo para verificar que todos los nodos de Cassandra se han iniciado correctamente.

    resourceGroupName='cassandra-mi-multi-region'
    clusterName='test-multi-region'
    
    az managed-cassandra cluster status\
       --cluster-name $clusterName \
       --resource-group $resourceGroupName
    
  5. A continuación, use CQLSH para conectarse al clúster. Use la siguiente consulta CQL para actualizar la estrategia de replicación en cada espacio de claves para incluir todos los centros de datos en el clúster (las tablas del sistema se actualizan automáticamente):

    ALTER KEYSPACE "ks" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'dc-eastus2': 3, 'dc-eastus': 3};
    
  6. Por último, si agrega un centro de datos a un clúster que ya contiene datos, debe ejecutarse rebuild para replicar los datos históricos. En este caso, supongamos que el dc-eastus2 centro de datos ya tiene datos. En la CLI de Azure, ejecute el siguiente comando para ejecutar nodetool rebuild en cada nodo del nuevo dc-eastus centro de datos. Reemplace por <ip address> 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"=""
    

    No permita que los clientes de aplicaciones escriban en el nuevo centro de datos hasta después de aplicar los cambios de replicación del espacio de claves. De lo contrario, la recompilación no funciona. A continuación, debe crear una solicitud de soporte para que nuestro equipo pueda ejecutar repair por usted.

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. Un error de ejemplo podría ser "No se puede encontrar el usuario o la entidad de servicio en la base de datos de gráficos para e5007d2c-4b13-4a74-9b6a-605d99f03501". Consulte más información en Portal de Azure para agregar una entidad de servicio de Azure Cosmos DB.

La asignación de roles de Azure Cosmos DB se usa solo con fines de implementación. Azure Managed Instanced para 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, siga estos pasos para eliminarlo:

  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 el panel siguiente, escriba el nombre del grupo de recursos que desea eliminar y, a continuación, seleccione Eliminar.

Paso siguiente

En esta guía rápida, aprendiste a crear un clúster multirregional mediante la CLI de Azure e Instancia Administrada de Azure para Apache Cassandra. Ahora puede empezar a trabajar con el clúster.