Share via


Inicio rápido: Creación de un clúster de Azure Managed Instance for Apache Cassandra mediante la CLI de Azure

Azure Managed Instance for Apache Cassandra es un servicio completamente 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 el mayor control cuando sean necesarios.

En este inicio rápido se muestra cómo usar los comandos de la CLI de Azure para crear un clúster con Azure Managed Instance for Apache Cassandra. También se muestra cómo crear un centro de recursos y escalar o reducir verticalmente los nodos en el centro de seguridad.

Requisitos previos

Importante

Este artículo requiere la CLI de Azure 2.30.0 o una versión posterior. Si usa Azure Cloud Shell, la versión más reciente ya está instalada.

Creación de un clúster de instancia administrada

  1. Inicie sesión en el Portal de Azure

  2. Establezca el identificador de la suscripción en la CLI de Azure:

    az account set -s <Subscription_ID>
    
  3. A continuación, cree una red virtual con una subred dedicada en el grupo de recursos:

    az network vnet create -n <VNet_Name> -l eastus2 -g <Resource_Group_Name> --subnet-name <Subnet Name>
    

    Nota

    La implementación de Azure Managed Instance for Apache Cassandra requiere acceso a Internet. En entornos con acceso limitado a Internet se produce un error de implementación. Asegúrese de no bloquear el acceso a los siguientes servicios de Azure que son esenciales para que las instancias administradas de Cassandra funcionen correctamente:

    • Azure Storage
    • Azure KeyVault
    • Conjuntos de escalado de máquinas virtuales de Azure
    • Supervisión de Azure
    • Microsoft Entra ID
    • Azure Security
  4. Aplique algunos permisos especiales a la red virtual, ya que serán necesarios para la instancia administrada. Utilice el comando az role assignment create y reemplace <subscriptionID>, <resourceGroupName> y <vnetName> con los valores adecuados:

    az role assignment create \
      --assignee a232010e-820c-4083-83bb-3ace5fc29d0b \
      --role 4d97b98b-1d4f-4787-a291-c67834d212e7 \
      --scope /subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.Network/virtualNetworks/<vnetName>
    

    Nota

    Los valores assignee y role del comando anterior son valores fijos. Escriba estos valores exactamente como se mencionó en el comando. Si no lo hace, se producirán errores al crear el clúster. Si se producen errores al ejecutar este comando, es posible que no tenga permisos para ejecutarlo. Para obtenerlos, póngase en contacto con el administrador.

  5. Luego, cree el clúster en la red virtual recién creada mediante el comando az managed-cassandra cluster create. Ejecute el siguiente comando en el valor de la variable delegatedManagementSubnetId:

    Nota

    El valor de la variable delegatedManagementSubnetId que proporcionará a continuación es exactamente el mismo que el valor de --scope proporcionado en el comando anterior:

    resourceGroupName='<Resource_Group_Name>'
    clusterName='<Cluster_Name>'
    location='eastus2'
    delegatedManagementSubnetId='/subscriptions/<subscription ID>/resourceGroups/<resource group name>/providers/Microsoft.Network/virtualNetworks/<VNet name>/subnets/<subnet name>'
    initialCassandraAdminPassword='myPassword'
    cassandraVersion='3.11' # set to 4.0 for a Cassandra 4.0 cluster
    
    az managed-cassandra cluster create \
      --cluster-name $clusterName \
      --resource-group $resourceGroupName \
      --location $location \
      --delegated-management-subnet-id $delegatedManagementSubnetId \
      --initial-cassandra-admin-password $initialCassandraAdminPassword \
      --cassandra-version $cassandraVersion \
      --debug
    
  6. Por último, cree un centro de datos para el clúster, con tres nodos, SKU de máquina virtual Standard D8s v4 y 4 discos P30 conectados para cada nodo mediante el comando az managed-cassandra datacenter create:

    dataCenterName='dc1'
    dataCenterLocation='eastus2'
    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 más información, revise los detalles completos del Acuerdo de Nivel de Servicio aquí.

    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. Consulte aquí las regiones admitidas. 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 o la capacidad que ha seleccionado no están disponibles en todas las zonas.

  7. Una vez que se crea el centro de datos, si quiere escalar o reducir verticalmente los nodos que contiene, ejecute el comando az managed-cassandra datacenter update. Cambie el valor del parámetro node-count al valor deseado:

    resourceGroupName='<Resource_Group_Name>'
    clusterName='<Cluster Name>'
    dataCenterName='dc1'
    dataCenterLocation='eastus2'
    
    az managed-cassandra datacenter update \
      --resource-group $resourceGroupName \
      --cluster-name $clusterName \
      --data-center-name $dataCenterName \
      --node-count 9
    

Conexión al clúster

Azure Managed Instance for Apache Cassandra no crea nodos con direcciones IP públicas. Para conectarse al clúster de Cassandra recién creado, tiene que crear otro recurso dentro de la red virtual. Este recurso puede ser una aplicación o una máquina virtual que tenga instalada la herramienta de consulta de código abierto de Apache CQLSH. Puede usar una plantilla de Resource Manager para implementar una máquina virtual de Ubuntu.

Conexión desde CQLSH

Tras la implementación de la máquina virtual, use SSH para conectarse a la máquina e instalar CQLSH, tal y como se muestra en los siguientes comandos:

# Install default-jre and default-jdk
sudo apt update
sudo apt install openjdk-8-jdk openjdk-8-jre

# Install the Cassandra libraries in order to get CQLSH:
echo "deb http://archive.apache.org/dist/cassandra/debian 311x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
curl https://downloads.apache.org/cassandra/KEYS | sudo apt-key add -
sudo apt-get update
sudo apt-get install cassandra

# Export the SSL variables:
export SSL_VERSION=TLSv1_2
export SSL_VALIDATE=false

# Connect to CQLSH (replace <IP> with the private IP addresses of a node in your Datacenter):
host=("<IP>")
initial_admin_password="Password provided when creating the cluster"
cqlsh $host 9042 -u cassandra -p $initial_admin_password --ssl

Conexión desde una aplicación

Al igual que con CQLSH, la conexión desde una aplicación mediante uno de los controladores de cliente de Apache Cassandra admitidos requiere que el cifrado de SSL esté habilitado y la verificación de certificación esté deshabilitada. Consulte ejemplos para conectarse a Azure Managed Instance for Apache Cassandra mediante Java, .NET, Node.js y Python.

Se recomienda deshabilitar la comprobación de certificados porque esta comprobación no funcionará a menos que asigne las direcciones IP de los nodos de clúster al dominio adecuado. Si tiene una directiva interna que exige que realice la comprobación de certificados SSL para cualquier aplicación, puede facilitarlo agregando entradas como 10.0.1.5 host1.managedcassandra.cosmos.azure.com en el archivo de hosts para cada nodo. Si adopta este enfoque, también tendrá que agregar nuevas entradas cada vez que escale verticalmente los nodos.

Para Java, también se recomienda habilitar la directiva de ejecución especulativa en la que las aplicaciones son sensibles a la latencia alta. Aquí encontrará una demostración que describe cómo funciona y cómo se habilita la directiva.

Nota:

En la gran mayoría de los casos, no debería ser necesario configurar o instalar certificados (rootCA, nodo o cliente, almacenes de confianza, etc.) para conectarse a Azure Managed Instance for Apache Cassandra. El cifrado SSL se puede habilitar mediante el almacén de confianza predeterminado y la contraseña del runtime que usa el cliente (consulte los ejemplos de Java, .NET, Node.js y Python), ya que los certificados de Azure Managed Instance for Apache Cassandra serán de confianza para ese entorno. En raras ocasiones, si el certificado no es de confianza, es posible que tenga que agregarlo al almacén de confianza.

Configuración de certificados de cliente (opcional)

La configuración de certificados de cliente es opcional. Una aplicación cliente puede conectarse a Azure Managed Instance for Apache Cassandra siempre que se hayan realizado los pasos anteriores. Sin embargo, si lo prefiere, también puede crear y configurar certificados de cliente adicionales para la autenticación. En general, hay dos maneras de crear certificados:

  • Certificados autofirmados. Esto significa que existe un certificado privado y público (sin CA) para cada nodo. En este caso, necesitamos todos los certificados públicos.
  • Certificados firmados por una CA. Puede ser una entidad de certificación autofirmada o incluso una pública. En este caso, necesitamos el certificado de CA raíz (consulte las instrucciones sobre cómo preparar certificados SSL para producción) y todos los intermediarios (si procede).

Si desea implementar la autenticación de certificados de cliente a nodo o Seguridad de la capa de transporte (mTLS), debe proporcionar los certificados a través de la CLI de Azure. El siguiente comando cargará y aplicará los certificados de cliente al almacén de confianza para el clúster de la instancia administrada de Cassandra (es decir, no es necesario editar la configuración de cassandra.yaml). Una vez aplicado, el clúster requerirá que Cassandra compruebe los certificados cuando un cliente se conecte (consulte require_client_auth: truecassandra client_encryption_options).

resourceGroupName='<Resource_Group_Name>'
clusterName='<Cluster Name>'

az managed-cassandra cluster update \
  --resource-group $resourceGroupName \
  --cluster-name $clusterName \
  --client-certificates /usr/csuser/clouddrive/rootCert.pem /usr/csuser/clouddrive/intermediateCert.pem

Solución de problemas

Si se produce un error al aplicar permisos a la red virtual mediante la CLI de Azure, por ejemplo, se indica que no se encuentra el usuario o la entidad de servicio en la base de datos de grafos para "e5007d2c-4b13-4a74-9b6a-605d99f03501" , puede aplicar el mismo permiso manualmente desde Azure Portal. Aprenda cómo hacerlo aquí.

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

Puede usar el comando az group delete para quitar el grupo de recursos, la máquina virtual y todos los recursos relacionados cuando ya no se necesiten:

az group delete --name <Resource_Group_Name>

Pasos siguientes

En este inicio rápido, ha aprendido a crear un clúster de Azure Managed Instance for Apache Cassandra mediante la CLI de Azure. Ahora puede empezar a trabajar con el clúster: